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);
        }
    }
    
    
}
复制代码

 

posted @   expworld  阅读(550)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示