Servlet——HttpServletRespons

Posted tractors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet——HttpServletRespons相关的知识,希望对你有一定的参考价值。

一、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的主要内容,如果未能解决你的问题,请参考以下文章

如何从 java servlet 中抛出 404 错误?

过滤器和监听器

过滤器和监听器

按模板下载excel

JSP内置对象

如何使用 ktor 客户端设置 HttpServletResponse 的主体