在使用 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 : 空格转换为 “+” 加号,但不对特殊字符编码。(懵逼····)
大概意思 就是发送纯文本内容
希望有 大佬来指点一下
版权声明:本文为agood_man原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。