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 }
Servlet响应中文乱码

相关文章: