本节课实现前后端简单交互编写 HTML 表单分别演示GET/POST提交、后端接收参数、解决乱码问题是 Web 开发最基础的交互能力。一、项目结构沿用上个项目plaintextFirstWeb ├── index.html # 表单页面 └── WEB-INF ├── classes │ ├── GetParamServlet.class │ └── PostParamServlet.class ├── lib │ ├── servlet-api.jar │ └── jsp-api.jar └── web.xml二、第一步编写 HTML 表单页面在项目根目录新建form.html提供两个表单分别测试 GET、POST 提交html预览!DOCTYPE html html langzh-CN head meta charsetUTF-8 title表单提交测试/title /head body h3GET方式提交表单/h3 !-- action提交地址method请求方式 -- form actiongetParam methodget 用户名input typetext nameusernamebr 年龄input typetext nameagebr input typesubmit valueGET提交 /form hr h3POST方式提交表单/h3 form actionpostParam methodpost 用户名input typetext nameusernamebr 年龄input typetext nameagebr input typesubmit valuePOST提交 /form /body /html三、第二步编写 Servlet 代码1. 处理 GET 请求GetParamServlet.javajava运行import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class GetParamServlet extends HttpServlet { Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应编码解决页面中文乱码 response.setContentType(text/html;charsetUTF-8); // 1. 获取单个请求参数根据表单name取值 String username request.getParameter(username); String age request.getParameter(age); // 2. 响应数据到浏览器 PrintWriter out response.getWriter(); out.write(h3GET 请求接收结果/h3); out.write(用户名 username br); out.write(年龄 age); out.close(); } }2. 处理 POST 请求PostParamServlet.javaPOST 请求默认会中文乱码必须额外设置请求编码java运行import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class PostParamServlet extends HttpServlet { Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 核心解决POST请求中文乱码必须写在最前面 request.setCharacterEncoding(UTF-8); response.setContentType(text/html;charsetUTF-8); // 获取参数 String username request.getParameter(username); String age request.getParameter(age); // 响应结果 PrintWriter out response.getWriter(); out.write(h3POST 请求接收结果/h3); out.write(用户名 username br); out.write(年龄 age); out.close(); } }四、第三步配置 web.xml 映射打开WEB-INF/web.xml追加两个 Servlet 的注册和映射xml?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd version4.0 !-- 原有 HelloServlet 配置保留 -- servlet servlet-nameHelloServlet/servlet-name servlet-classHelloServlet/servlet-class /servlet servlet-mapping servlet-nameHelloServlet/servlet-name url-pattern/hello/url-pattern /servlet-mapping !-- 注册 GET 参数 Servlet -- servlet servlet-nameGetParamServlet/servlet-name servlet-classGetParamServlet/servlet-class /servlet servlet-mapping servlet-nameGetParamServlet/servlet-name url-pattern/getParam/url-pattern /servlet-mapping !-- 注册 POST 参数 Servlet -- servlet servlet-namePostParamServlet/servlet-name servlet-classPostParamServlet/servlet-class /servlet servlet-mapping servlet-namePostParamServlet/servlet-name url-pattern/postParam/url-pattern /servlet-mapping /web-app五、编译、部署、测试编译两个 Java 文件将生成的.class文件放入WEB-INF/classes重启 Tomcat 服务器浏览器访问http://localhost:8080/FirstWeb/form.html分别输入中文 / 英文点击两个提交按钮观察效果GET参数会拼接在浏览器地址栏中明文展示POST地址栏无参数相对更安全需手动设置编码防乱码六、核心知识点1. 核心方法request.getParameter(name值)获取单个表单参数返回字符串表单input的name属性必须和代码里的参数名一致否则取不到值2. GET 与 POST 区别GET参数拼接在 URL 地址栏可见、不安全有长度限制中文一般不易乱码POST参数放在请求体中地址栏不可见相对安全无长度限制必须添加request.setCharacterEncoding(UTF-8)解决中文乱码3. 乱码解决方案固定模板java运行// POST 请求专属第一行代码 request.setCharacterEncoding(UTF-8); // 统一响应编码 response.setContentType(text/html;charsetUTF-8);4. 通用小技巧如果想让doGet和doPost复用一套代码可以互相调用java运行Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { doPost(request, response); }七、记忆口诀表单提交分两种GET 露参 POST 藏取值全靠 getParametername 对应不能忘POST 先设请求码中文乱码全跑光
Java第22课:Servlet获取请求参数+POST请求+表单交互
发布时间:2026/6/12 14:00:51
本节课实现前后端简单交互编写 HTML 表单分别演示GET/POST提交、后端接收参数、解决乱码问题是 Web 开发最基础的交互能力。一、项目结构沿用上个项目plaintextFirstWeb ├── index.html # 表单页面 └── WEB-INF ├── classes │ ├── GetParamServlet.class │ └── PostParamServlet.class ├── lib │ ├── servlet-api.jar │ └── jsp-api.jar └── web.xml二、第一步编写 HTML 表单页面在项目根目录新建form.html提供两个表单分别测试 GET、POST 提交html预览!DOCTYPE html html langzh-CN head meta charsetUTF-8 title表单提交测试/title /head body h3GET方式提交表单/h3 !-- action提交地址method请求方式 -- form actiongetParam methodget 用户名input typetext nameusernamebr 年龄input typetext nameagebr input typesubmit valueGET提交 /form hr h3POST方式提交表单/h3 form actionpostParam methodpost 用户名input typetext nameusernamebr 年龄input typetext nameagebr input typesubmit valuePOST提交 /form /body /html三、第二步编写 Servlet 代码1. 处理 GET 请求GetParamServlet.javajava运行import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class GetParamServlet extends HttpServlet { Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应编码解决页面中文乱码 response.setContentType(text/html;charsetUTF-8); // 1. 获取单个请求参数根据表单name取值 String username request.getParameter(username); String age request.getParameter(age); // 2. 响应数据到浏览器 PrintWriter out response.getWriter(); out.write(h3GET 请求接收结果/h3); out.write(用户名 username br); out.write(年龄 age); out.close(); } }2. 处理 POST 请求PostParamServlet.javaPOST 请求默认会中文乱码必须额外设置请求编码java运行import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class PostParamServlet extends HttpServlet { Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 核心解决POST请求中文乱码必须写在最前面 request.setCharacterEncoding(UTF-8); response.setContentType(text/html;charsetUTF-8); // 获取参数 String username request.getParameter(username); String age request.getParameter(age); // 响应结果 PrintWriter out response.getWriter(); out.write(h3POST 请求接收结果/h3); out.write(用户名 username br); out.write(年龄 age); out.close(); } }四、第三步配置 web.xml 映射打开WEB-INF/web.xml追加两个 Servlet 的注册和映射xml?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd version4.0 !-- 原有 HelloServlet 配置保留 -- servlet servlet-nameHelloServlet/servlet-name servlet-classHelloServlet/servlet-class /servlet servlet-mapping servlet-nameHelloServlet/servlet-name url-pattern/hello/url-pattern /servlet-mapping !-- 注册 GET 参数 Servlet -- servlet servlet-nameGetParamServlet/servlet-name servlet-classGetParamServlet/servlet-class /servlet servlet-mapping servlet-nameGetParamServlet/servlet-name url-pattern/getParam/url-pattern /servlet-mapping !-- 注册 POST 参数 Servlet -- servlet servlet-namePostParamServlet/servlet-name servlet-classPostParamServlet/servlet-class /servlet servlet-mapping servlet-namePostParamServlet/servlet-name url-pattern/postParam/url-pattern /servlet-mapping /web-app五、编译、部署、测试编译两个 Java 文件将生成的.class文件放入WEB-INF/classes重启 Tomcat 服务器浏览器访问http://localhost:8080/FirstWeb/form.html分别输入中文 / 英文点击两个提交按钮观察效果GET参数会拼接在浏览器地址栏中明文展示POST地址栏无参数相对更安全需手动设置编码防乱码六、核心知识点1. 核心方法request.getParameter(name值)获取单个表单参数返回字符串表单input的name属性必须和代码里的参数名一致否则取不到值2. GET 与 POST 区别GET参数拼接在 URL 地址栏可见、不安全有长度限制中文一般不易乱码POST参数放在请求体中地址栏不可见相对安全无长度限制必须添加request.setCharacterEncoding(UTF-8)解决中文乱码3. 乱码解决方案固定模板java运行// POST 请求专属第一行代码 request.setCharacterEncoding(UTF-8); // 统一响应编码 response.setContentType(text/html;charsetUTF-8);4. 通用小技巧如果想让doGet和doPost复用一套代码可以互相调用java运行Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { doPost(request, response); }七、记忆口诀表单提交分两种GET 露参 POST 藏取值全靠 getParametername 对应不能忘POST 先设请求码中文乱码全跑光