提交 9203e799 编写于 作者: W wizardforcel

2019-11-28 17:57:29

上级 0d6f5d69
......@@ -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
......@@ -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)
......
......@@ -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)部署应用程序。
**&lt; Servlet &gt;** 标签保存了我们 Servlet 的配置。 **&lt; Servlet 名称&gt;** 是我们 Servlet 的别名,用于在`web.xml`文件中配置 Servlet 的其他属性。 **&lt; Servlet 类&gt;** 是我们的 Servlet 的路径。 **&lt;启动时加载&gt; 1 &lt; /启动时加载&gt;** 表示,当 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 具有更高的优先级,并且将首先加载。
**&lt; servlet 映射&gt;** 用于为 servlet 提供 URL。 在我们的示例中,将/ hello 模式赋予我们的 servlet,这意味着访问您本地服务器上的 servlet 的完整 URL 为 http:// localhost:8080 / SimpleServlet / hello
`<servlet-mapping>`用于为 servlet 提供 URL。 在我们的示例中,将`/hello`模式赋予我们的 servlet,这意味着访问您本地服务器上的 servlet 的完整 URL 为`http://localhost:8080/SimpleServlet/hello`
## 构建和部署示例
......
......@@ -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
......@@ -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
......@@ -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
......@@ -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 中都相同。 您可以使用以下&lt; context-param &gt;&lt; param-name &gt;&lt; param-value &gt;标记在 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 文件中的&lt; init-param &gt;标记创建特定于给定 Servlet 的 init 参数。
`web.xml`文件中的`<init-param>`标记创建特定于给定 Servlet 的初始化参数。
```java
<?xml version="1.0" encoding="UTF-8"?>
......
......@@ -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
......@@ -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 中可以使用几种不同类型的标签。 在上面的示例中,我们使用指令类型&lt;% @ page…% &gt;将页面编码设置为 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 的特殊标签&lt;% =…/ &gt;。 表达式包含简单的 Java 代码,这些代码返回可以写到客户端输出的内容,并且表达式将该代码的返回变量输出到客户端:
最后,为了显示当前时间,我们使用了一个名为表达式的特殊标签`<%= … %>`。 表达式包含简单的 Java 代码,这些代码返回可以写到客户端输出的内容,并且表达式将该代码的返回变量输出到客户端:
```java
<h2>Current time is <%= LocalDateTime.now() %></h2>
```
部署应用程序后,转到 http:// localhost:8080 / jspexample / index.jsp
部署应用程序后,转到`http://localhost:8080/jspexample/index.jsp`
您应该会看到与此页面相似的页面
......
......@@ -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] &gt;如果要保留`admin`,请按 Enter 键或输入另一个
输入管理员用户名(默认值:admin),如果要保留`admin`,请按`Enter`键或输入另一个
如果尚未设置管理员密码,请输入管理员密码&gt;,只需按 Enter
如果尚未设置管理员密码,请输入管理员密码,只需按`Enter`
输入新的管理员密码&gt;,输入新密码
输入新的管理员密码,输入新密码
## 启用安全管理员
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册