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()方法来手动刷新缓冲区;
五、操作响应头方法:
(1)response.setHeader(“content-type”,“text/html;charset=utf-8”);
//设置content-type响应头,用于设置浏览器响应内容为html类型,编码为utf-8。
//而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);
(2)response.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");
(2)sendRedirect()方法:
response.sendRedirect("http://www.baidu.com");
//response.sendRedirect("/hello/Servlet");
2.重定向小结:
(1)重定向是两次请求;
(2)重定向url不局限于当前应用,可以是其他应用;
(3)重定向后不要使用response.getWriter()或response.getOutputStream()输出数据;
以上是关于Servlet——HttpServletRespons的主要内容,如果未能解决你的问题,请参考以下文章