码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet第五篇【Response总结】

时间:2020-04-18 11:48:22      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:dog   addheader   jpg   commons   tst   exce   str   参数   buffer   

一、Response概述

response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象。response对象是用来对客户端进行响应的,这说明在HttpServletResponse的doXXX()方法中使用response对象可以完成对客户端的响应工作。

二、Response主要功能介绍

1、发送状态码;
2、设置响应头信息;
3、设置响应正文;
4、重定向;

三、HttpServletResponse的常用方法

(一)发送状态码
setStatus(状态码)
sendError(状态码, 状态码相关信息)
(二)设置响应头
setHeader(String name, int value):设置响应头,只有一个值时
addHeader(String name, int value):设置响应头,有多个值时
void setIntHeader(String name, int value):设置响应头
void setDateHeader(String name, long date):设置响应头      
(三)设置响应正文
ServletOutputStream getOutputStream():用来向客户端响应字节数据;
PrintWriter getWriter():用来向客户端响应字符数据;
(四)getWriter和getOutputStream细节

1、getWriter()和getOutputStream()两个方法不能同时调用。如同时调用就会出现异常
2、Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。
3、Servlet的serice()方法结束后【也就是doPost()或者doGet()结束后】,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象.

4、response字符流缓冲区大小为8KB,当向字符流中写入数据后,数据可能只在缓冲区中,而没有发送到浏览器。
可以调用response.flushBuffer()或response.getWriter().flush()方法刷新缓冲区,把数据发送到浏览器。

(五)重定向
//方法一:
response.sendStatus(302);
repsonse.setHeader("Location", "http://www.baidu.com");

//方法二:快捷的方法重定向:
response.sendRedirect("http://www.baidu.com");

四、HttpServletResponse应用

1、使用Refresh头进行定时刷新

2、禁用浏览器缓存

/**
	Cache-Control: no-cache;
	Pragma: no-cache;
	Expires: -1;
*/
public class FServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("Pragma", "no-cache");
		response.setDateHeader("Expires", -1);
	}
}

3、响应图片

/**
*  响应图片
* 1、获取字节数组(使用CommonsIO)
* 2、获取OutputStream
* 3、写出数据
*/
public class GServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		//获取字节数组(使用CommonsIO)
		String path = "C:/Users/ASUS/Desktop/壁纸/35.jpg";
		FileInputStream is = new FileInputStream(path);
		byte[] datas = IOUtils.toByteArray(is);
		//获取OutputStream
		ServletOutputStream os = response.getOutputStream();
		//写出数据
		os.write(datas);

}

Java新手,若有错误,欢迎指正!

Servlet第五篇【Response总结】

标签:dog   addheader   jpg   commons   tst   exce   str   参数   buffer   

原文地址:https://www.cnblogs.com/Java-biao/p/12724644.html

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