码迷,mamicode.com
首页 > Web开发 > 详细

Servlet——HttpServletRespons

时间:2019-07-31 15:30:26      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:浏览器   ati   content   family   char   type   数据   表示   方法   

一、HttpServletRespons

  对客户端的请求做出动态的响应,向客户端发送数据;

  //对应jsp中的respons;

二、获取两种响应流:

(1)字符流:PrintWriter response.getWriter();//该对象有write和print两个方法,没有啥区别;

(2)字节流:ServletOutputStream response.getOutputStream();

 三、乱码问题:

  原因:response.getWriter()方法默认的编码格式为ISO-8859-1;

  解决:

  (1)设置浏览器解析编码:response.setHeader("Content-type", "text/html;charset=UTF-8");

  (2)设置响应流编码:response.setCharacterEncoding("UTF-8");

四、字符流缓冲区:

  原因:response.getWriter()是PrintWriter类型,所以它有缓冲区,缓冲区的默认大小为8KB。

    也就是说,在响应数据没有输出8KB之前,数据都是存放在缓冲区中,而不会立刻发送到客户端。

    当Servlet执行结束后,服务器才会去刷新流,使缓冲区中的数据发送到客户端。

  解决:

  (1)向流中写入大于8KB的数据;

  (2)调用response.flushBuffer()方法来手动刷新缓冲区;

五、操作响应头方法:

  (1response.setHeader(“content-type”,“text/html;charset=utf-8”);

    //设置content-type响应头,用于设置浏览器响应内容为html类型,编码为utf-8。

    //而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);

  (2response.setHeader("Refresh","5; URL=http://www.baidu.com");

    //5秒后自动跳转到传,百度主页。

四、操作编码/状态码方法:

  (1)设置浏览器解析编码:response.setContentType("text/html;charset=utf-8");

    //等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”);

  (2)设置响应流编码:response.setCharacterEncoding(“utf-8”);

  (3)设置状态码:response.setStatus(200);

 五、重定向:

  //响应码302:表示重定向;

  1.重定向的创建:

  (1)设置状态码和响应头;

          response.setStatus(302);

          response.setHeader("Location", "http://www.baidu.com");

  2sendRedirect()方法:

    response.sendRedirect("http://www.baidu.com");

    //response.sendRedirect("/hello/Servlet");

2.重定向小结:

(1)重定向是两次请求;

(2)重定向url不局限于当前应用,可以是其他应用;

(3)重定向后不要使用response.getWriter()或response.getOutputStream()输出数据;

 

 

Servlet——HttpServletRespons

标签:浏览器   ati   content   family   char   type   数据   表示   方法   

原文地址:https://www.cnblogs.com/Tractors/p/11275908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!