HTTP---ServletResponse接口

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("/");

猜你喜欢

转载自blog.csdn.net/qq591009234/article/details/89403881