1,Servlet请求响应中文乱码问题
1 package com.demo.servlet; 2 import java.io.PrintWriter; 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 public class Demo5Servlet extends HttpServlet { 11 12 @Override 13 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 14 /* 15 * 关于重定向,Servlet封装了sendRedirect方法 则sendRedirect方法的底层其实是两步 16 * 第一步是设置响应状态码为302 17 * 第二步是设置响应头的location属性值为需要跳转到的url 18 */ 19 resp.setStatus(302); 20 resp.setHeader("location", "/ServletDemo/demo2"); 21 // 以上两步的效果与以下方法相同 22 resp.sendRedirect("/ServletDemo/demo2"); 23 // 设置页面自动过5秒种跳转到另一个地址 24 resp.setHeader("refresh", "5;url=/ServletDemo/demo2"); 25 /* 26 * Servlet响应中文乱码的问题,主要分两步 27 * 第一步是当response把中文写入到Tomcat引擎之前,是先把内容写入到response缓冲区的, 28 * 此时需要告诉response需要以什么样的编码形式写入到缓冲区,即设置setCharacterEncoding(); 29 * 第二步是告诉浏览器以什么样的编码方式读取response响应的信息,即设置setHeader 30 * 其实第一步不设置,只设置第二步便可起到同样的效果 31 */ 32 //告诉response缓冲区将以什么样的编码方式写入 33 resp.setCharacterEncoding("utf-8"); 34 //行文浏览器以什么样的编码方式解决response响应的内容 35 resp.setHeader("Content-type", "text/html;charset=utf-8"); 36 PrintWriter writer = resp.getWriter(); 37 writer.write("hello"); 38 writer.write("<br/>"); 39 writer.write("你好"); 40 41 } 42 43 @Override 44 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 45 46 doGet(req, resp); 47 } 48 49 }