所有Servlet响应都实现ServletResponse接口。ServletResponse接口主要有以下方法:
(1)从Servlet中可以通过getWriter方法取得PrintWriter对象,来输出字符数据。从Servlet中可以通过getOutputStream方法取得ServletoutputStream对象。ServletOutputStream既可以输出字符数据,也可以输出MIME格式的二进制数据。如果getWriter方法已经被使用过,当使用getOutputStream时,会有java.lang.IllegalStateException例外抛出。
(2)setContentType方法:在响应中可以表明内容格式和长短。
(3)setBufferSize方法:设置Web容器的缓冲器大小; getBufferSize方法返回Web容器的缓冲器大小; resetBuffer方法清空并重置缓冲器,使用reset方法清空缓冲器、状态头信息,使用flushBuffer方法将缓冲器内的所有输出内容向客户传递。使用isCommitted方法判断是否响应已经被履行。“履行”的定义是指状态码冬耕信息已经被写入响应。
(4)setLocal方法设定响应的地域信息,主要在Web程序的国际货币国际化时使用。这个方法应该在getWriter之前被使用。默认的Web服务器的地域信息。
HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。
(1)setStatus方法用来设置Servlet向客户端返回的状态码,它用来设置没有出错的状态。如果Servlet运行出错,Servlet可以使用sendError方法设置状态码,如sendError(int sc)方法设置错误状态代码。sendError(int sc,String msg)方法除了设置状态码,还向客户发出一条错误信息。
(2)setHeader可以指定特定名称的头信息的值,addDateheader,addIntHeader,setDateHeader,setIntHeader可以加入或理性特定时间或整数型头信息。
(3)addCookie方法可以在Web服务器响应中加入Cookie对象,这个对象将被浏览器所保存。Cookie机制也被用来维护会话状态。
(4)sendRedirect方法向客户发出临时重新导向的响应。它生成的响应状态码为302。该响应给了客户一个新的URL风趣。如果缓冲器已经被清空,这个方法会弹出一个IllegalStateException例外。
内置对象是不需要声明,直接可以在JSP中使用的对象,JSP有以下几种内置对象:
request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page page表示从该页面产生的一个servlet实例。
Servlet API中的几个对象
JSP提供了八个内部对象,而其中的五个内部对象对应于Servlet API中的七个对象,这也就使得我们正常理解并熟练使用Servlet中的这七个对象显得尤其重要。这五个JSP的内部对象和Servlet API中的对象的对应关系是:
request对象对应于:javax.servlet.http.HttpServletRequest和javax.servlet.ServletRequest
response对象对应于:javax.servlet.http.HttpServletResponse和javax.servlet.ServletResponse
session对象对应于:javax.servlet.http.HttpSession
application对象对应于:javax.servlet.ServletContext
config对象对应于:javax.servlet.ServletConfig
javax.servlet.http.HttpServletRequest
这是一个接口,在我们提到接口之前,还是让我们来复习一下Java中接口的一个初步的解释:
接口在语法上与类相似,但是接口没有实例,使用接口,只是指定类必须做什么而不是如何做。
/*重点如下*/
HttpServletRequest接口用来处理一个对Servlet的HTTP格式的请求信息。
javax.servlet.ServletRequest
这也是一个接口,这个接口定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。而javax.servlet.http.HttpServletRequest也只是该接口的一个扩展,也就是说,该接口的所有方法也可以被javax.servlet.http.HttpServletRequest所使用。
javax.servlet.http.HttpServletResponse接口
该接口用来描述一个返回到客户端的HTTP回应。
javax.servlet.ServletResponse接口
该接口用来定义一个Servlet引擎产生的对象,通过这个对象,Servlet对客户端的请求作出响应。这个响应应该是一个MIME实体,可能是一个HTML页、图象数据或其他MIME的格式。javax.servlet.http.HttpServletResponse接口是该接口的扩展。
javax.servlet.http.HttpSession接口
该接口用来描述一个session,至于什么是session我想在这里就没必要说了吧。
javax.servlet.ServletContext接口
该接口用来定义了一个Servlet的环境对象。也可是认为这是多个客户端共享的信息,它与session的区别在于应用范围的不同,session只对应于一个用户。
javax.servlet.ServletConfig接口
该接口定义了一个对象,通过这个对象,Servlet引擎配置一个Servlet。每一个ServletConfig对象对应着一个唯一的Servlet。
javax.servlet.http.Cookie类
这个类描述了一个cookie,cookie的作用其实与session很类似,只是cookie保存在客户端,session保存在服务器端