# 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(" Enter your name: \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
Enter your name:
``` 提交**后,将调用 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)