Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
jtn-zh
提交
9203e799
J
jtn-zh
项目概览
OpenDocCN
/
jtn-zh
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jtn-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9203e799
编写于
11月 28, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-11-28 17:57:29
上级
0d6f5d69
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
99 addition
and
98 deletion
+99
-98
docs/111.md
docs/111.md
+5
-5
docs/112.md
docs/112.md
+9
-9
docs/113.md
docs/113.md
+9
-9
docs/114.md
docs/114.md
+18
-17
docs/115.md
docs/115.md
+13
-13
docs/116.md
docs/116.md
+19
-19
docs/117.md
docs/117.md
+7
-7
docs/118.md
docs/118.md
+9
-9
docs/119.md
docs/119.md
+6
-6
docs/120.md
docs/120.md
+4
-4
未找到文件。
docs/111.md
浏览文件 @
9203e799
...
...
@@ -6,7 +6,7 @@
## 在 Tomcat 中手动部署和取消部署应用程序
在 Tomcat 中手动部署应用程序很简单
-只需将
`.war`
文件放在 Tomcat 的
`webapp`
目录中即可。 如果您的 Tomcat 正在运行,它将把
`.war`
文件解压缩到一个没有 war
扩展名的同名文件夹中。 如果它没有运行,则部署将在启动服务器之后进行。
在 Tomcat 中手动部署应用程序很简单
- 只需将
`.war`
文件放在 Tomcat 的
`webapp`
目录中即可。 如果您的 Tomcat 正在运行,它将把
`.war`
文件解压缩到一个没有 WAR
扩展名的同名文件夹中。 如果它没有运行,则部署将在启动服务器之后进行。
在部署过程中检查服务器日志中的错误始终是一个好习惯。 可能是因为您的应用程序缺少某些依赖项,或者您构建的文件
`.war`
文件的结构不正确–在这种情况下,部署将不会成功。
...
...
@@ -20,10 +20,10 @@
使用 Tomcat 管理器部署和取消部署应用程序
1
.
打开浏览器,然后转到 http:// localhost:8080 / manager / html
1
\.
打开浏览器,然后转到
`http://localhost:8080/manager/html`
2
.
输入在
`conf/tomcat-users.xml`
文件中指定的用户名和密码
2
\.
输入在
`conf/tomcat-users.xml`
文件中指定的用户名和密码
3
.
单击“要部署的 WAR 文件”部分中的“选择文件”按钮。 浏览您的
`.war`
文件,然后单击“部署”按钮
3
\.
单击“要部署的 WAR 文件”部分中的“选择文件”按钮。 浏览您的
`.war`
文件,然后单击“部署”按钮
4.
要取消部署应用程序,请单击其旁边的“取消部署”按钮
\ No newline at end of file
4
\.
要取消部署应用程序,请单击其旁边的“取消部署”按钮
\ No newline at end of file
docs/112.md
浏览文件 @
9203e799
...
...
@@ -6,35 +6,35 @@
那么,为什么要从 Eclipse 中运行 Tomcat 呢? 有几个原因。 首先,您可以直接调试应用程序,而无需在调试模式下运行 Tomcat 独立服务器。 其次,您可以在部署应用程序之前在其应用程序上运行 JUnit 测试。 第三,您可以直接从 Eclipse 部署应用程序。
如果尚未安装 Apache Tomcat 8,
请查看我以前关于
[
的教程,如何安装和配置 Tomcat 8
](
https://javatutorial.net/how-to-install-and-configure-tomcat-8
)
如果尚未安装 Apache Tomcat 8,
[
请查看我以前关于如何安装和配置 Tomcat 8 的教程
](
https://javatutorial.net/how-to-install-and-configure-tomcat-8
)
。
## 在 Eclipse 中设置 Tomcat
**注意
:在执行以下步骤之前,请确保您正在运行较新版本的 Eclipse IDE。 早于 Eclipse Luna 4.4 的 Eclipse 版本默认不支持 Tomcat 8。 在本教程中,我已将 Eclipse Mars 2 用于 Java EE 开发人员。**
**注意
**
:在执行以下步骤之前,请确保您正在运行较新版本的 Eclipse IDE。 早于 Eclipse Luna 4.4 的 Eclipse 版本默认不支持 Tomcat 8。 在本教程中,我已将 Eclipse Mars 2 用于 Java EE 开发人员。
1
.
在 Eclipse for Java EE 中,转到 Windows 操作系统中的窗口-
>
首选项(或在 Mac 上为 Eclipse-
>
首选项
)
1
\.
在 Eclipse for Java EE 中,转到 Windows 操作系统中的“窗口 -
>
首选项”(或在 Mac 上为“Eclipse -
>
首选项”
)
2
.
转到服务器,然后单击运行时环境
。
2
\.
转到“服务器”,然后单击“运行时环境”
。
![
Eclipse server preferences
](
img/9b2df8fe89598773912a72e8dbc0d691.jpg
)
3
.
单击“添加...”按钮。
3
\.
单击“添加...”按钮。
4
.
在 Apache 树中,选择 Tomcat 8,然后选中“创建新的本地服务器”复选框。
4
\.
在 Apache 树中,选择 Tomcat 8,然后选中“创建新的本地服务器”复选框。
![
Tomcat 8 runtime environment
](
img/73688f682e4fb1dd5b10d703937be722.jpg
)
5
.
在下一个屏幕上,单击“浏览...”,然后选择您的 Tomcat 安装目录。 在 JRE 下拉列表中,选择本地 Java 8 SE 安装,然后单击“完成”按钮进行确认。
5
\.
在下一个屏幕上,单击“浏览...”,然后选择您的 Tomcat 安装目录。 在 JRE 下拉列表中,选择本地 Java 8 SE 安装,然后单击“完成”按钮进行确认。
![
tomcat installation directory and jre
](
img/a9116212bd6ca7e3cdfb0b8289d6fa7f.jpg
)
**提示
:**
Eclipse 将使用内置浏览器打开您的 Web 应用程序。 您可以将此设置更改为更方便的浏览器,例如 Google Chrome 或 Firefox。 为此,请转到窗口-
>
Web 浏览器
,然后选择“默认系统 Web 浏览器”
**提示
**
:Eclipse 将使用内置浏览器打开您的 Web 应用程序。 您可以将此设置更改为更方便的浏览器,例如 Google Chrome 或 Firefox。 为此,请转到“窗口 -
>
Web 浏览器”
,然后选择“默认系统 Web 浏览器”
![
eclipse select web browser
](
img/593e12e5fed1acfd64d520b9c87d4ecb.jpg
)
## 在本地服务器上从 Eclipse 运行应用程序
现在,您已经配置了 Tomcat 以在 Eclipse 中运行,您可以轻松地在此服务器上运行应用程序。 为此,请在“项目资源管理器”中右键单击您的项目,然后转到
运行方式-
>
在服务器上运行
现在,您已经配置了 Tomcat 以在 Eclipse 中运行,您可以轻松地在此服务器上运行应用程序。 为此,请在“项目资源管理器”中右键单击您的项目,然后转到
“运行方式 -
>
在服务器上运行”
![
run on server
](
img/6687e9b5b58a8dec0b4bf9488659b705.jpg
)
...
...
docs/113.md
浏览文件 @
9203e799
...
...
@@ -10,7 +10,7 @@ Servlet 是几乎每个 Java Web 应用程序的构建块。 它们提供了接
## Servlet 项目结构
在我们的第一个示例中,我们将构建一个简单的 Servlet,在您的浏览器中打印消息
“ Hello world”
,这不是很简单。 我们将使用 Maven 构建项目。 我们将创建一个 Servlet 类和一个
`web.xml`
文件。
`web.xml`
文件也称为部署描述符,它向 Web 容器提供有关如何处理 servlet 的信息。 将其视为配置文件。 下图显示了我们项目的文件结构
在我们的第一个示例中,我们将构建一个简单的 Servlet,在您的浏览器中打印消息
`"Hello world"`
,这不是很简单。 我们将使用 Maven 构建项目。 我们将创建一个 Servlet 类和一个
`web.xml`
文件。
`web.xml`
文件也称为部署描述符,它向 Web 容器提供有关如何处理 servlet 的信息。 将其视为配置文件。 下图显示了我们项目的文件结构
![
Project file structure
](
img/58ed96950d30cd53e932482485345501.jpg
)
...
...
@@ -86,7 +86,7 @@ Servlet 是几乎每个 Java Web 应用程序的构建块。 它们提供了接
## 简单的 Servlet 示例
让我们看一个非常基本的 servlet 的源代码,在 Web 浏览器中打印消息
“ Hello World!”
。
让我们看一个非常基本的 servlet 的源代码,在 Web 浏览器中打印消息
`"Hello World!"`
。
```
java
package
net.javatutorial.tutorials
;
...
...
@@ -122,13 +122,13 @@ public class SimpleServlet extends HttpServlet {
```
所有 servlet 都需要扩展抽象类
HttpServlet。 HttpServlet
提供了构建 HTTP 响应的所有方法-我们在这里所做的是重写某些方法以放置我们自己的逻辑。
所有 servlet 都需要扩展抽象类
`HttpServlet`
。
`HttpServlet`
提供了构建 HTTP 响应的所有方法-我们在这里所做的是重写某些方法以放置我们自己的逻辑。
当客户端(浏览器)向我们的 Servlet 发出 GET 请求时,将执行
**doGet**
方法。 在我们的示例中,它将仅返回文本响应“ Hello World!”
。
当客户端(浏览器)向我们的 Servlet 发出 GET 请求时,将执行
`doGet`
方法。 在我们的示例中,它将仅返回文本响应
`"Hello World!"`
。
当 Web 容器首次启动 servlet 时,将一次调用
**init()**
方法。 这发生在应用程序部署或第一次调用此 servlet 时。 初始化方法可用于设置数据库连接或其他耗时的初始化操作。
当 Web 容器首次启动 servlet 时,将一次调用
`init()`
方法。 这发生在应用程序部署或第一次调用此 servlet 时。 初始化方法可用于设置数据库连接或其他耗时的初始化操作。
当 Web 容器终止 Servlet 时,将调用
**destroy()**
方法。 我们可以使用这种方法来关闭与数据库或其他开放资源的连接。
当 Web 容器终止 Servlet 时,将调用
`destroy()`
方法。 我们可以使用这种方法来关闭与数据库或其他开放资源的连接。
## 创建`web.xml`部署描述符
...
...
@@ -158,11 +158,11 @@ public class SimpleServlet extends HttpServlet {
</
web
-
app
>
```
**显示名称**
该应用程序将在 Tomcat 管理器中以该名称列出。 阅读本教程,学习
[
如何配置 Tomcat 管理器
](
https://javatutorial.net/how-to-install-and-configure-tomcat-8
)
和
[
如何使用 Tomcat 管理器
](
https://javatutorial.net/how-to-deploy-and-undeploy-applications-in-tomcat
)
部署应用程序。
`<display-name>`
:
该应用程序将在 Tomcat 管理器中以该名称列出。 阅读本教程,学习
[
如何配置 Tomcat 管理器
](
https://javatutorial.net/how-to-install-and-configure-tomcat-8
)
和
[
如何使用 Tomcat 管理器
](
https://javatutorial.net/how-to-deploy-and-undeploy-applications-in-tomcat
)
部署应用程序。
**< Servlet >**
标签保存了我们 Servlet 的配置。
**< Servlet 名称>**
是我们 Servlet 的别名,用于在
`web.xml`
文件中配置 Servlet 的其他属性。
**< Servlet 类>**
是我们的 Servlet 的路径。
**<启动时加载> 1 < /启动时加载>**
表示,当 Tomcat 启动时,该 servlet 将被加载到 Web 容器中。 如果您的项目中还有其他 servlet,则可以设置启动时加载的值,例如 2,3、
100 等。值最低的 servlet 具有更高的优先级,并且将首先加载。
`<servlet>`
标签保存了我们 Servlet 的配置。
`<servlet-name>`
是我们 Servlet 的别名,用于在
`web.xml`
文件中配置 Servlet 的其他属性。
`<servlet-class>`
是我们的 Servlet 的路径。
`<load-on-startup>1</load-on-startup>`
表示,当 Tomcat 启动时,该 servlet 将被加载到 Web 容器中。 如果您的项目中还有其他 servlet,则可以设置启动时加载的值,例如 2,3,
100 等。值最低的 servlet 具有更高的优先级,并且将首先加载。
**< servlet 映射>**
用于为 servlet 提供 URL。 在我们的示例中,将/ hello 模式赋予我们的 servlet,这意味着访问您本地服务器上的 servlet 的完整 URL 为 http:// localhost:8080 / SimpleServlet / hello
`<servlet-mapping>`
用于为 servlet 提供 URL。 在我们的示例中,将
`/hello`
模式赋予我们的 servlet,这意味着访问您本地服务器上的 servlet 的完整 URL 为
`http://localhost:8080/SimpleServlet/hello`
## 构建和部署示例
...
...
docs/114.md
浏览文件 @
9203e799
...
...
@@ -2,22 +2,23 @@
> 原文: [https://javatutorial.net/java-servlet-post-example](https://javatutorial.net/java-servlet-post-example)
本示例演示了如何使用 Servlet 的
doPost()
方法来处理 POST 请求
本示例演示了如何使用 Servlet 的
`doPost()`
方法来处理 POST 请求
在我们以前的教程
[
的 Java Servlet 实现例
](
https://javatutorial.net/java-servlet-example
)
我展示了 doGet()方法的使用。 现在,我将向您展示如何使用 doPost()
方法来处理表单 POST 提交。 Java Servlet 可以处理各种类型的请求。 下面的列表显示了所有方法及其用途
在我们以前的教程
的
[
Java Servlet 实现示例
](
https://javatutorial.net/java-servlet-example
)
中我展示了
`doGet()`
方法的使用。 现在,我将向您展示如何使用
`doPost()`
方法来处理表单 POST 提交。 Java Servlet 可以处理各种类型的请求。 下面的列表显示了所有方法及其用途
|
**方法**
|
**SERVLET 方法**
|
**目的**
|
| 得到 |
**doGet()**
| 在指定的 URL 检索资源 |
| 头 |
**doHead()**
| 与 GET 相同,只返回标头 |
| 开机自检 |
**doPost()**
| 通常用于 Web 表单提交 |
| 放 |
**doPut()**
| 将提供的实体存储在 URL |
| 删除 |
**doDelete()**
| 删除 URL 标识的资源 |
| 选件 |
**doOptions()**
| 返回允许的 HTTP 方法 |
| 跟踪 |
**doTrace()**
| 用于诊断 |
| --- | --- | --- |
| GET |
`doGet()`
| 在指定的 URL 检索资源 |
| HEAD |
`doHead()`
| 与 GET 相同,只返回标头 |
| POST |
`doPost()`
| 通常用于 Web 表单提交 |
| PUT |
`doPut()`
| 将提供的实体存储在 URL |
| DELETE |
`doDelete()`
| 删除 URL 标识的资源 |
| OPTIONS |
`doOptions()`
| 返回允许的 HTTP 方法 |
| TRACE |
`doTrace()`
| 用于诊断 |
## 项目结构
在我们的项目中,我们确实需要三个文件。
pom.xml –设置 Maven 依赖关系和构建属性,web.xml –
将 Servlet 和 Servlet 本身配置为 java 类
在我们的项目中,我们确实需要三个文件。
`pom.xml`
– 设置 Maven 依赖关系和构建属性,
`web.xml`
–
将 Servlet 和 Servlet 本身配置为 java 类
![
Servlet POST Example project structure
](
img/b4ed971b44f7b3dfbfcc29abb9a9ce5f.jpg
)
...
...
@@ -106,9 +107,9 @@ Servlet POST 示例项目结构
</
web
-
app
>
```
Servlet 被赋予一个名为
“ ServletPost”的名称,该名称指向 Java 类 ServletPOST
。
Servlet 被赋予一个名为
`ServletPost`
的名称,该名称指向 Java 类
`ServletPOST`
。
在 servlet 映射中,我们将 url
“ / welcome”
分配给 servlet
在 servlet 映射中,我们将 url
`/welcome`
分配给 servlet
## Servlet 类
...
...
@@ -182,11 +183,11 @@ public class ServletPOST extends HttpServlet {
```
在上面的代码中,
**doGet()**
方法用于显示表单。 客户端(浏览器)使用 GET 请求调用网址 http://yoururl.com:8080/servletpost/welcome ,它显示以下形式
在上面的代码中,
`doGet()`
方法用于显示表单。 客户端(浏览器)使用 GET 请求调用网址 http://yoururl.com:8080/servletpost/welcome ,它显示以下形式
![
Input form
](
img/95f1fe559956ea741efb40fd62af47f6.jpg
)
输入
形式
输入
表单
该 servlet 在客户端的浏览器中呈现为 HTML,如下所示:
...
...
@@ -207,11 +208,11 @@ public class ServletPOST extends HttpServlet {
```
提交
**后,将调用 servlet 中的 doPost()**
方法。 在这里,我们根据用户的输入来建立响应。 如果正确填写了姓名字段,则用户会收到问候消息
提交
后,将调用 servlet 中的
`doPost()`
方法。 在这里,我们根据用户的输入来建立响应。 如果正确填写了姓名字段,则用户会收到问候消息
![
Post response
](
img/f3162004e897cfca516dd5a073d65f6c.jpg
)
回复
后
响应
后
…或警告消息(如果表单中的名称字段留空)
...
...
@@ -219,4 +220,4 @@ public class ServletPOST extends HttpServlet {
如果缺少名称,则会出现错误消息
您可以在我们的 GitHub 存储库中找到
[
项目源。
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletPOSTExample
)
\ No newline at end of file
您可以在我们的 GitHub 存储库中找到
[
项目源
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletPOSTExample
)
。
\ No newline at end of file
docs/115.md
浏览文件 @
9203e799
...
...
@@ -2,7 +2,7 @@
> 原文: [https://javatutorial.net/servlet-request-info-example](https://javatutorial.net/servlet-request-info-example)
在本教程中,我将向您展示如何从 Servlet
Request
对象检索各种数据,例如标头,参数,路径和会话数据
在本教程中,我将向您展示如何从 Servlet
`Request`
对象检索各种数据,例如标头,参数,路径和会话数据
当客户端(浏览器)向 Servlet 发出 GET,POST,PUT 等请求时,
`HttpServletRequest`
对象将保存有关客户端和请求本身的有价值的信息。 在下面的示例中,我将列出请求对象的一些最有趣的方法以及如何提取信息。
...
...
@@ -64,32 +64,32 @@ public class ServletInfo extends HttpServlet {
```
从我的 Google Chrome 版本 51.0.2704.103 请求
http:// localhost:8080 / ServletInfo / info?section = tutorials & lang = java
的
`localhost`
Tomcat 服务器上的 servlet 显示以下输出:
从我的 Google Chrome 版本 51.0.2704.103 请求
`http://localhost:8080/ServletInfo/nfo?section=tutorials&lang=java`
的
`localhost`
Tomcat 服务器上的 servlet 显示以下输出:
![
request info output
](
img/2ca8c5cb8edee679e14063ab71562898.jpg
)
请求信息输出
##
HttpServletRequest
方法
##
`HttpServletRequest`
方法
**getRequestURL()**
–
返回客户端用于发出请求的整个 URL,包括协议(http 或 https),服务器名称,端口号和服务器路径,但不包括查询参数
`getRequestURL()`
–
返回客户端用于发出请求的整个 URL,包括协议(http 或 https),服务器名称,端口号和服务器路径,但不包括查询参数
**getRequestURI()**
–
仅返回 URL 的服务器路径部分
`getRequestURI()`
–
仅返回 URL 的服务器路径部分
**getServletPath()**
–返回在 Tomcat 中部署的应用程序路径(在上面的示例中为/ info
)
`getServletPath()`
– 返回在 Tomcat 中部署的应用程序路径(在上面的示例中为
`/info`
)
**getHeaderNames()**
–
返回与请求一起传递的所有标头中的名称的枚举
`getHeaderNames()`
–
返回与请求一起传递的所有标头中的名称的枚举
**getHeader(headerName)**
–
返回具有给定名称的标头的值
`getHeader(headerName)`
–
返回具有给定名称的标头的值
**getParameterMap()**
–返回带有所有参数及其值的 HashMap
`getParameterMap()`
– 返回带有所有参数及其值的
`HashMap`
**getParameter(key)**
–
返回具有给定键(名称)的参数的值
`getParameter(key)`
–
返回具有给定键(名称)的参数的值
**getRemoteAddr()**
–返回客户端的 IP 地址。 如果请求是在本地主机上执行的,则返回值为 0:0:0:0:0:0:0:1 或 127.0.0.1
的 IPv6 等效值
`getRemoteAddr()`
– 返回客户端的 IP 地址。 如果请求是在本地主机上执行的,则返回值为
`0:0:0:0:0:0:0:1`
或
`127.0.0.1`
的 IPv6 等效值
**getRequestedSessionId()**
–
返回远程会话 ID(如果提供)
`getRequestedSessionId()`
–
返回远程会话 ID(如果提供)
**getCookies()**
–返回与此请求一起发送的客户端的 Cookie
对象数组
`getCookies()`
– 返回与此请求一起发送的客户端的
`Cookie`
对象数组
您可以在 GitHub 中找到整个项目:
[
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletInfo
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletInfo
)
\ No newline at end of file
docs/116.md
浏览文件 @
9203e799
...
...
@@ -4,7 +4,7 @@
本示例演示了注解的用法,以便配置 Servlet。
在之前的教程中,我们使用部署描述符(
web.xml 文件)来配置我们的 servlet。 从 Servlet 3.0 开始,您可以改用@WebServlet
注解。 该注解使您可以为 servlet 设置几个属性,例如名称,URL 等。
在之前的教程中,我们使用部署描述符(
`web.xml`
文件)来配置我们的 servlet。 从 Servlet 3.0 开始,您可以改用
`@WebServlet`
注解。 该注解使您可以为 servlet 设置几个属性,例如名称,URL 等。
## 注解与部署描述符
...
...
@@ -12,28 +12,28 @@
对于许多 Java Enterprise 组件,都有两个版本可用-注解或描述符。 但其他配置则只能使用注解或通过部署描述符进行配置。 对于 Servlet,可以选择一种或另一种方法。
##
WebServlet
注解属性
##
`WebServlet`
注解属性
您可以选择几种属性来配置 Servlet。
### 必要
*
**值**
或
**urlPatterns**
`String[]`
–指定该 servlet 的一个或多个 URL 模式。 可以使用任何一个属性,但不能同时使用。 urlPatterns 的默认值为{},默认值为“”
*
`value`
或
`urlPatterns`
`String[]`
– 指定该 servlet 的一个或多个 URL 模式。 可以使用任何一个属性,但不能同时使用。
`urlPatterns`
的默认值为
`{}`
,
`value`
默认值为
`""`
### 可选
*
**asyncSupported**
`boolean`
–
声明 Servlet 是否支持异步操作模式。 默认值为假
*
**名称**
`String`
– Servlet 的名称。 默认值为“”
*
**description**
`String`
– Servlet 的描述。 默认值为“”
*
**displayName**
`String`
– Servlet 的显示名称。 默认值为“”
*
**initParams**
,
`WebInitParam[]`
– Servlet 的 init 参数。 默认值为{}
*
**largeIcon**
`String`
– Servlet 的大图标。 默认值为“”
*
**smallIcon**
`String`
– Servlet 的小图标。 默认值为“”
*
**loadOnStartup**
int – Servlet 的启动时加载顺序。 默认值为
-1
*
`asyncSupported`
`boolean`
–
声明 Servlet 是否支持异步操作模式。 默认值为假
*
`name`
`String`
– Servlet 的名称。 默认值为
`""`
*
`description`
`String`
– Servlet 的描述。 默认值为
`""`
*
`displayName`
`String`
– Servlet 的显示名称。 默认值为
`""`
*
`initParams`
`WebInitParam[]`
– Servlet 的初始化参数。 默认值为
`{}`
*
`largeIcon`
`String`
– Servlet 的大图标。 默认值为
`""`
*
`smallIcon`
`String`
– Servlet 的小图标。 默认值为
`""`
*
`loadOnStartup`
`int`
– Servlet 的启动时加载顺序。 默认值为
-1
## 用于 Servlet 的 POM 文件
我们将使用以下
pom.xml
文件构建本教程后面显示的示例。
我们将使用以下
`pom.xml`
文件构建本教程后面显示的示例。
```
java
<
project
xmlns
=
"http://maven.apache.org/POM/4.0.0"
xmlns:
xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
...
...
@@ -91,7 +91,7 @@
## 使用注解时是否需要`web.xml`?
简短答案–不! 如果您选择对所有 Servlet 配置依赖注解,则可以完全删除
web.xml 文件。 但我仍然鼓励您保留该文件,或者至少保留一个如以下示例所示的文件。 Web.xml
用于许多其他配置,因此您迟早需要在项目中使用它。
简短答案–不! 如果您选择对所有 Servlet 配置依赖注解,则可以完全删除
`web.xml`
文件。 但我仍然鼓励您保留该文件,或者至少保留一个如以下示例所示的文件。
`Web.xml`
用于许多其他配置,因此您迟早需要在项目中使用它。
```
java
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
...
...
@@ -105,7 +105,7 @@
</
web
-
app
>
```
如果您希望完全跳过
web.xml,则需要在 Maven 的 pom.xml 中告诉 war 插件停止搜索该文件。 您可以通过将
**failOnMissingWebXml**
设置为 false
来实现,如下所示:
如果您希望完全跳过
`web.xml`
,则需要在 Maven 的
`pom.xml`
中告诉 war 插件停止搜索该文件。 您可以通过将
`failOnMissingWebXml`
设置为
`false`
来实现,如下所示:
```
java
<
plugin
>
...
...
@@ -120,7 +120,7 @@
## 用一个 URL 模式注解的 Servlet
以下示例仅使用一个属性来注解 servlet 的 URL。 假设您在本地主机上运行应用程序并将其作为
servletannotation.war 部署,则 servlet 的路径将为 http:// localhost:8080 / servletannotation / hello
以下示例仅使用一个属性来注解 servlet 的 URL。 假设您在本地主机上运行应用程序并将其作为
`servletannotation.war`
部署,则 servlet 的路径将为
`http://localhost:8080/servletannotation/hello`
```
java
package
net.javatutorial.tutorials
;
...
...
@@ -150,7 +150,7 @@ public class ServletWithAnnotations extends HttpServlet {
## 具有多个属性的 Servlet 注解
在此示例中,我们将设置 servlet 名称,URL 和
load-0n-startup 加载优先级。 在我们的
[
简单 Servlet 示例
](
https://javatutorial.net/java-servlet-example
)
中,我们在 web.xml
文件中执行了以下操作:
在此示例中,我们将设置 servlet 名称,URL 和
`load-0n-startup`
加载优先级。 在我们的
[
简单 Servlet 示例
](
https://javatutorial.net/java-servlet-example
)
中,我们在
`web.xml`
文件中执行了以下操作:
```
java
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
...
...
@@ -175,7 +175,7 @@ public class ServletWithAnnotations extends HttpServlet {
</
web
-
app
>
```
…现在我们将使用
WebServlet
注解实现相同的配置:
…现在我们将使用
`WebServlet`
注解实现相同的配置:
```
java
package
net.javatutorial.tutorials
;
...
...
@@ -205,7 +205,7 @@ public class ServletWithAnnotations extends HttpServlet {
## 具有多个 URL 模式的 Servlet 注解
urlPatterns
属性接受一个数组作为值,因此您可以设置多个指向同一 servlet 的 URL:
`urlPatterns`
属性接受一个数组作为值,因此您可以设置多个指向同一 servlet 的 URL:
```
java
@WebServlet
(
urlPatterns
=
{
"/hello"
,
"/wellcome"
})
...
...
@@ -220,6 +220,6 @@ public class ServletWithAnnotations extends HttpServlet {
}
```
假设您在本地主机上运行应用程序并将其作为
servletannotation.war 部署,则可以访问 http:// localhost:8080 / servletannotation / hello 以及 http:// localhost:8080 / servletannotation / wellcome
上的 servlet
假设您在本地主机上运行应用程序并将其作为
`servletannotation.war`
部署,则可以访问
`http://localhost:8080/servletannotation/hello`
以及
`http://localhost:8080/wellcome`
上的 servlet
您可以在我们的 GitHub 存储库
[
中找到此示例的源代码
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletAnnotation
)
\ No newline at end of file
docs/117.md
浏览文件 @
9203e799
...
...
@@ -4,19 +4,19 @@
本示例演示了使用初始化参数来配置
[
Java
](
https://javatutorial.net/install-java-9-eclipse
)
Web 应用程序
初始化参数非常适合设置变量,将来可能需要更改。 例如,您可以使用
init
参数来存储数据库连接或存储外部 API 密钥或 URL。 使用初始化参数的好处是,您可以轻松更改配置,而无需重新编译整个应用程序。
初始化参数非常适合设置变量,将来可能需要更改。 例如,您可以使用
初始化
参数来存储数据库连接或存储外部 API 密钥或 URL。 使用初始化参数的好处是,您可以轻松更改配置,而无需重新编译整个应用程序。
![
Using init-param and context-param to configure Java web apps
](
img/70aaf23831a7541d9dfe23aa47949776.jpg
)
使用
init-param 和 context-param
配置 Java Web 应用程序
使用
`init-param`
和
`context-param`
配置 Java Web 应用程序
## 注
释
与部署描述符
## 注
解
与部署描述符
在前面的示例中,我们演示了使用
[
注
释配置 Servlet
](
https://javatutorial.net/servlet-annotation-example
)
的用法。 尽管您可以使用注释来设置 init 参数,但我不建议您这样做。 原因是,如果使用注解来设置初始化参数,则每次需要更改参数时都必须重新编译应用程序。 使用部署描述符来设置 init 参数要好得多。 一旦将 init 参数值放入 web.xml
文件中并需要更改它们,您要做的就是用更改后的值重新启动应用程序。 无需重新编译,无需重新部署!
在前面的示例中,我们演示了使用
[
注
解配置 Servlet
](
https://javatutorial.net/servlet-annotation-example
)
的用法。 尽管您可以使用注解来设置初始化参数,但我不建议您这样做。 原因是,如果使用注解来设置初始化参数,则每次需要更改参数时都必须重新编译应用程序。 使用部署描述符来设置初始化参数要好得多。 一旦将初始化参数值放入
`web.xml`
文件中并需要更改它们,您要做的就是用更改后的值重新启动应用程序。 无需重新编译,无需重新部署!
## `@WebInitParam`注解
下面的示例显示 Servlet 声明中
@WebInitParam 注释
的用法
下面的示例显示 Servlet 声明中
`@WebInitParam`
注解
的用法
```
java
@WebServlet
(
...
...
@@ -35,7 +35,7 @@ public class InitParamServletAnnotations extends HttpServlet {
## 上下文初始化参数
如果要在整个应用程序中共享参数,那么上下文初始化参数是一个很好的选择。 应用程序中的每个 Servlet 都共享这些初始化参数,并且它们的值在所有 Servlet 中都相同。 您可以使用以下
<
context-param
>
,
<
param-name
>
和
<
param-value
>
标记在 web.xml
文件中设置上下文参数:
如果要在整个应用程序中共享参数,那么上下文初始化参数是一个很好的选择。 应用程序中的每个 Servlet 都共享这些初始化参数,并且它们的值在所有 Servlet 中都相同。 您可以使用以下
`<context-param>`
,
`<param-name>`
和
`<param-value>`
标记在
`web.xml`
文件中设置上下文参数:
```
java
<
context
-
param
>
...
...
@@ -82,7 +82,7 @@ public class ServletContextParams extends HttpServlet {
## Servlet 初始化参数
web.xml 文件中的
<
init-param
>
标记创建特定于给定 Servlet 的 init
参数。
`web.xml`
文件中的
`<init-param>`
标记创建特定于给定 Servlet 的初始化
参数。
```
java
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
...
...
docs/118.md
浏览文件 @
9203e799
...
...
@@ -10,7 +10,7 @@
## Servlet 文件上传示例
Servlet 文件上载示例演示了
MultipartConfig
注解的用法,并使用户能够上载一个或两个文件。
Servlet 文件上载示例演示了
`MultipartConfig`
注解的用法,并使用户能够上载一个或两个文件。
该示例项目的结构非常简单。 它由一个 servlet 文件
`FileUploadServlet.java`
,
`pom.xml`
和可选的
`web.xml`
组成,这些文件用于在构建时处理依赖项。 正如我们在
[
Servlet 注释示例
](
https://javatutorial.net/servlet-annotation-example
)
中讨论的那样,您可以在注释和部署描述符之间进行选择,以设置 Servlet 配置。 本示例使用注释。
...
...
@@ -20,7 +20,7 @@ Servlet 文件上载示例演示了 MultipartConfig 注解的用法,并使用
Servlet 文件上传项目结构
在 Maven 的
pom.xml 文件中,我们需要声明的唯一依赖项是 javax.servlet
在 Maven 的
`pom.xml`
文件中,我们需要声明的唯一依赖项是
`javax.servlet`
```
java
<
project
xmlns
=
"http://maven.apache.org/POM/4.0.0"
xmlns:
xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
...
...
@@ -76,7 +76,7 @@ Servlet 文件上传项目结构
```
文件上传 servlet 是我们项目的核心。 它只有两种方法
-
`goGet`
(显示上载表格)和
`doPost`
(完成整个上载工作)。
文件上传 servlet 是我们项目的核心。 它只有两种方法
-
`goGet`
(显示上载表格)和
`doPost`
(完成整个上载工作)。
```
java
package
net.javatutorial.tutorials
;
...
...
@@ -178,11 +178,11 @@ public class FileUploadServlet extends HttpServlet {
`@MultipatrtConfig`
注解使 Servlet 可以接受文件上传。 有 3 个重要属性:
*
**fileSizeThreshold**
–在将文件写入 temp
目录之前要超出的文件大小。 如果文件小于此阈值,则文件将在请求完成之前驻留在内存中。
*
**maxFileSize**
–
这是允许上传的文件的最大大小。 在上面的示例中,不允许用户上传大于 10 MB 的文件
*
**maxRequestSize**
–
是我们尝试通过一个请求上传的所有文件的大小的总和。 在上面的示例中,我们将该值设置为 20 MB,这意味着无论文件数量多少,我们总共可以上传 20MB
*
`fileSizeThreshold`
– 在将文件写入
`temp`
目录之前要超出的文件大小。 如果文件小于此阈值,则文件将在请求完成之前驻留在内存中。
*
`maxFileSize`
–
这是允许上传的文件的最大大小。 在上面的示例中,不允许用户上传大于 10 MB 的文件
*
`maxRequestSize`
–
是我们尝试通过一个请求上传的所有文件的大小的总和。 在上面的示例中,我们将该值设置为 20 MB,这意味着无论文件数量多少,我们总共可以上传 20MB
您可能要指定或不指定第四个属性。 它称为
`location`
,它指向 Web 容器应存储临时文件的目录。 但是,如果您未指定此属性,则容器将使用默认的
temp
文件夹。
您可能要指定或不指定第四个属性。 它称为
`location`
,它指向 Web 容器应存储临时文件的目录。 但是,如果您未指定此属性,则容器将使用默认的
`temp`
文件夹。
我们重写
`doGet`
方法以显示具有两个文件选择器字段的简单形式。 您可能需要添加其他输入字段,因为多部分附件允许这样做。
...
...
@@ -192,6 +192,6 @@ public class FileUploadServlet extends HttpServlet {
在
`doPost`
方法中,我们首先构造要存储上载文件的文件夹的路径。 比我们使用
`request.getParts()`
遍历用户选择上传的文件,最后将它们存储到所需位置。
构建并部署后,您可以在以下浏览器中访问应用程序:
http:// localhost:8080 / fileuploader / upload
构建并部署后,您可以在以下浏览器中访问应用程序:
`http://localhost:8080/fileuploader/upload`
您可以在我们的 GitHub 存储库的
[
中找到该项目。
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletFileUpload
)
\ No newline at end of file
您可以在我们的 GitHub 存储库的
[
中找到该项目
](
https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletFileUpload
)
。
\ No newline at end of file
docs/119.md
浏览文件 @
9203e799
...
...
@@ -79,7 +79,7 @@ JSP 项目结构
</
project
>
```
一个仅包含应用程序显示名称的简单
web.xml
一个仅包含应用程序显示名称的简单
`web.xml`
```
java
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
...
...
@@ -111,9 +111,9 @@ JSP 项目结构
</
html
>
```
现在让我们仔细看看
index.jsp
现在让我们仔细看看
`index.jsp`
JSP 中可以使用几种不同类型的标签。 在上面的示例中,我们使用指令类型
<
% @ page…%
>
将页面编码设置为 UTF-8
JSP 中可以使用几种不同类型的标签。 在上面的示例中,我们使用指令类型
`<% @page… %>`
将页面编码设置为 UTF-8
```
java
<%
@
page
contentType
=
"text/html;charset=UTF-8"
%>
...
...
@@ -121,19 +121,19 @@ JSP 中可以使用几种不同类型的标签。 在上面的示例中,我们
默认情况下(如果我们的 JSP 文件中不包括此行),字符编码将设置为 ISO-8859-1,如果我们要使用非拉丁字母的特殊字符和字母,这将很不方便。
我们使用另一个指令导入
LocalDateTime
我们使用另一个指令导入
`LocalDateTime`
```
java
<%
@
page
import
="
java.time.LocalDateTime
"
%>
```
最后,为了显示当前时间,我们使用了一个名为
expression 的特殊标签
<
% =…/
>
。 表达式包含简单的 Java 代码,这些代码返回可以写到客户端输出的内容,并且表达式将该代码的返回变量输出到客户端:
最后,为了显示当前时间,我们使用了一个名为
表达式的特殊标签
`<%= … %>`
。 表达式包含简单的 Java 代码,这些代码返回可以写到客户端输出的内容,并且表达式将该代码的返回变量输出到客户端:
```
java
<
h2
>
Current
time
is
<%=
LocalDateTime
.
now
()
%></
h2
>
```
部署应用程序后,转到
http:// localhost:8080 / jspexample / index.jsp
部署应用程序后,转到
`http://localhost:8080/jspexample/index.jsp`
您应该会看到与此页面相似的页面
...
...
docs/120.md
浏览文件 @
9203e799
...
...
@@ -6,7 +6,7 @@
![](
img/4992f2846ae09f9c10bdcda6b1dd502f.jpg
)
当您在远程域(而不是
localhost
)上部署 Glassfish 或 Payara 并希望远程访问 Glassfish Admin 时,需要首先启用它。 默认情况下,Glassfish Admin 在端口 4848 上运行。
当您在远程域(而不是
`localhost`
)上部署 Glassfish 或 Payara 并希望远程访问 Glassfish Admin 时,需要首先启用它。 默认情况下,Glassfish Admin 在端口 4848 上运行。
如果看到此消息
...
...
@@ -31,11 +31,11 @@ asadmin --host localhost --port 4848 change-admin-password
Glassfish 更改管理员密码
输入管理员用户名
[默认值:admin]
>
如果要保留
`admin`
,请按 Enter
键或输入另一个
输入管理员用户名
(默认值:admin),如果要保留
`admin`
,请按
`Enter`
键或输入另一个
如果尚未设置管理员密码,请输入管理员密码
>
,只需按 Enter
键
如果尚未设置管理员密码,请输入管理员密码
,只需按
`Enter`
键
输入新的管理员密码
>
,输入新密码
输入新的管理员密码,输入新密码
## 启用安全管理员
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录