Servlet输出
Servlet可以用两种方式向浏览器输出内容:
- 字节流方式 —— 输出到response.getOutputStream()。一般用来输出二进制内容,例如图片。
- 字符流方式 —— 输出到response.getWriter()。用来输出文本类型的内容,如HTML和纯文本。
在此我们只讨论输出文本的情形:response.getWriter()。在调用response.getWriter()前,我们必须设置content type:
- response.setContentType("text/html; charset=GBK");
response.getWriter()
-------------------测试代码问题如下:
页面编码是utf-8,浏览器编码是utf-8,页面的中文显示正常,从servlet中输出的中文乱码? ??
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("处理post请求");
/* PrintWriter out=resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
out.println("post 请求处理完成!");*/
resp.setContentType("text/html;charset=utf-8");
ServletOutputStream out_stream=resp.getOutputStream();
out_stream.println(" post 请求处理完成!");
}
SEVERE: Servlet.service() for servlet [HelloServlet] in context with path [/Dxm_Job] threw exception
java.io.CharConversionException: Not an ISO 8859-1 character: 请at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:77)
at javax.servlet.ServletOutputStream.println(ServletOutputStream.Java:187)
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("处理post请求");
PrintWriter out=resp.getWriter();
resp.setContentType("text/html;charset=GBK");
String str=new String("请求处理完成");
out.println(str);
}
----------------------还是输出?????? 乱码
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("处理post请求");
PrintWriter out=resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
String str=new String("请求处理完成".getBytes("iso-8859-1"),"utf-8");
out.println(str);
}
----------还是出现?????? 乱码。
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("处理post请求");
PrintWriter out=resp.getWriter();
resp.setCharacterEncoding("utf-8");
String str=new String("请求处理完成".getBytes("utf-8"));
out.println(str);
}