# Java Servlet POST 示例
> 原文: [https://javatutorial.net/java-servlet-post-example](https://javatutorial.net/java-servlet-post-example)
本示例演示了如何使用 Servlet 的 doPost()方法来处理 POST 请求
在我们以前的教程[的 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()** | 用于诊断 |
## 项目结构
在我们的项目中,我们确实需要三个文件。 pom.xml –设置 Maven 依赖关系和构建属性,web.xml –将 Servlet 和 Servlet 本身配置为 java 类
![Servlet POST Example project structure](img/b4ed971b44f7b3dfbfcc29abb9a9ce5f.jpg)
Servlet POST 示例项目结构
## `pom.xml`文件
```java
4.0.0
net.javatutorial.tutorials
ServletPOSTExample
1
war
Servlet POST Example
https://javatutorial.net
UTF-8
javax.servlet
javax.servlet-api
3.1.0
provided
servletpost
src/main/java
org.apache.maven.plugins
maven-war-plugin
2.3
src/main/webapp
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
1.8
```
与上一教程一样,我们将 Servlet 的依赖项`javax.servlet-api`和`maven-war-plugin`的依赖关系用于构建网络应用
## 在`web.xml`文件中映射 Servlet
```java
Simple Servlet Application
servletPost
net.javatutorial.tutorials.ServletPOST
1
servletPost
/welcome
```
Servlet 被赋予一个名为“ ServletPost”的名称,该名称指向 Java 类 ServletPOST。
在 servlet 映射中,我们将 url“ / welcome”分配给 servlet
## Servlet 类
```java
package net.javatutorial.tutorials;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletPOST extends HttpServlet {
private static final long serialVersionUID = -1641096228274971485L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// set response headers
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
// create HTML form
PrintWriter writer = response.getWriter();
writer.append("\r\n")
.append("\r\n")
.append("
\r\n")
.append(" Form input\r\n")
.append(" \r\n")
.append(" \r\n")
.append(" \r\n")
.append(" \r\n")
.append("\r\n");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user = request.getParameter("user");
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
// create HTML response
PrintWriter writer = response.getWriter();
writer.append("\r\n")
.append("\r\n")
.append(" \r\n")
.append(" Welcome message\r\n")
.append(" \r\n")
.append(" \r\n");
if (user != null && !user.trim().isEmpty()) {
writer.append(" Welcome " + user + ".\r\n");
writer.append(" You successfully completed this javatutorial.net example.\r\n");
} else {
writer.append(" You did not entered a name!\r\n");
}
writer.append(" \r\n")
.append("\r\n");
}
}
```
在上面的代码中, **doGet()**方法用于显示表单。 客户端(浏览器)使用 GET 请求调用网址 http://yoururl.com:8080/servletpost/welcome ,它显示以下形式
![Input form](img/95f1fe559956ea741efb40fd62af47f6.jpg)
输入形式
该 servlet 在客户端的浏览器中呈现为 HTML,如下所示:
```java
Form input
```
提交**后,将调用 servlet 中的 doPost()**方法。 在这里,我们根据用户的输入来建立响应。 如果正确填写了姓名字段,则用户会收到问候消息
![Post response](img/f3162004e897cfca516dd5a073d65f6c.jpg)
回复后
…或警告消息(如果表单中的名称字段留空)
![Error message if name is missing](img/e9736c487096fdf35e9a3c1470cdab76.jpg)
如果缺少名称,则会出现错误消息
您可以在我们的 GitHub 存储库中找到[项目源。](https://github.com/JavaTutorialNetwork/Tutorials/tree/master/ServletPOSTExample)