02.request获取表单数据一 doGet方式
package com.gyf.web.servlet.lesson02; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Lesson02Servleet") public class Lesson02Servleet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String gender = request.getParameter("gender"); String remark = request.getParameter("remark"); String [] hobbies = request.getParameterValues("hobby"); System.out.println(username); System.out.println(password); System.out.println(gender); System.out.println(remark); System.out.println(Arrays.toString(hobbies)); } /** * 1.post请求时,中文会乱码,解决方法setCharacterEncoding,只针对post请求有效 * 2.get和post请求的一个区别 * get请求:是把请求参数放在url?后面进行拼接 * post请求:在url中是看不到参数 * post请求比较安全点 * 3.getInputStream 【获取不到参数】-针对post请求效 * 使用inputStream读取数据时,发送中文变成%号形式 * username=gyf&password=qwer&gender=male&hobby=%E8%B5%9A%E9%92%B1&hobby=%E6%B8%B8%E6%88%8F&remark=werwerw * post请求会对中文进行URL编码【什么URL编码-把中文转成%形式】【URL解码-把%形式的内容转回中文】 * URL编码解决乱码问题 */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException { //post请求时,中文会乱码,解决方法setCharacterEncoding,只针对post请求有效 request.setCharacterEncoding("UTF-8"); // TODO Auto-generated method stub /*String username = request.getParameter("username"); String password = request.getParameter("password"); String gender = request.getParameter("gender"); String remark = request.getParameter("remark"); String [] hobbies = request.getParameterValues("hobby"); System.out.println(username); System.out.println(password); System.out.println(gender); System.out.println(remark); System.out.println(Arrays.toString(hobbies));*/ System.out.println("....."); ServletInputStream is = request.getInputStream(); byte[] buf = new byte[1024]; int len = 0; while((len = is.read(buf)) != -1){ //把buf转成字符串 //String s = new String(buf, 0, len); String s1 = new String(buf, 0, len,"gbk");//字节转成字符串是时,要以utf-8编码表 System.out.println("s1:" + s1); //URL解码 String s2 = URLDecoder.decode(s1, "utf-8"); System.out.println("s2:" + s2); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?