使用getReader方式 获取请求体数据并再网页上打印但出现中文乱码

在使用 request 的 getReader方法获取请求体数据的时候

代码:

@WebServlet("/std4")
public class ServletDemo04 extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
    
    
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        BufferedReader reader = request.getReader();
        String len=null;
        while ((len=reader.readLine())!=null){
    
    
            //直接写到页面
            response.getWriter().write(len);
            //在控制器里打印
            System.out.println(len);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

    }
}

我的表单:

<form action="${pageContext.request.contextPath}/std4" method="post">
  用户名:<input type="text" placeholder="请输入用户名" name="username"/> <br>
  密  码: <input type="password"  placeholder="请输入密码" name="pwd"/> <br>
    <input type="submit" value="提交">
</form>

然后呢 启动后报了 一堆乱码

在这里插入图片描述

我是直接用response.getWriter().write() 在页面打印出来的 一开始只是认为没有 设置编码的问题

    response.setContentType("text/html;charset=UTF-8"); 设置浏览器端解码
    request.setCharacterEncoding("UTF-8"); //设置从request中取得的值或从数据库中取出的值。

加上以后还是不行 ,但是在浏览器的调试器里是这样的

在这里插入图片描述

是不是 jsp页面编码的问题啊?

然后呢 我在jsp页面 form表单上加了一个 enctype="text/plain 神奇的问题就解决了

在这里插入图片描述

enctype: 属性规定在发送到服务器之前应该如何对表单数据进行编码。

text/plain : 空格转换为 “+” 加号,但不对特殊字符编码。(懵逼····)

大概意思 就是发送纯文本内容

希望有 大佬来指点一下

猜你喜欢

转载自blog.csdn.net/agood_man/article/details/108581268