5.ServletResponse接口
5.1.辅助servlet将响应发送到客户端的对象(从服务器端到客户端)
5.2.从服务器向客户端输出内容,都通过response对象
5.3.servlet容器创建一个ServletResponse对象并将其作为参数传递给servlet的service方法
response的五种常用方法:代码示例
1.输出数据
public class OutServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//演示response向浏览器输出一段数据,涉及编码问题
response.getWriter().write("西安");//服务器端默认使用iso8859-1编码,找不到中文就用问号?表示。
}
}
2.实现下载
利用response将HTTP的响应头"content-disposition"设置为"attachment;filename=xxx"即可实现文件下载功能;
如果文件名中包含中文,则文件名要进行URL编码URLEncoding.encode('**.jpg','utf-8');如果不进行编码则文件名显示错误并且不可下载
//http响应头和请求头都不能包含中文,只能是iso8859-1字符集
String fileName = URLEncoder.encode("***.jpg","utf-8");//这个编码集浏览器只认u8
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
String filePath = this.getServletContext().getRealPath("1.jpg");
InputStream in = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int i =0;
while((i=in.read(buf))!=-1){
out.write(buf, 0, i);
}
3.定时刷新页面
response.setHeader("Refresh", "3;url=http://www.baidu.com");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("恭喜您注册成功,3秒后回到百度!");
4.控制是否缓存资源
(1)利用response设置expires响应头为0或-1浏览器就不会缓存当前资源。(同样功能的头还有Cache-Control: no-cache、Pragma: no-cache)
(2)expires也可以取值为一个时间,指定要缓存到的日期。
//不需要缓存
response.setIntHeader("Expires",-1 );
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("当期时间:"+new Date().toLocaleString())
5.请求重定向
response.sendRedirect("/");