天天看点

J2EE Architecture(7)

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1605607

 J2EE Architecture(7)

1、Servlet上下文

Web服务器能支持若干Web应用程序。每个Web应用程序又能支持一个或多个Servlet。

同一个Web应用程序的多个Servlet需要共享Web应用程序环境的资源。为此,Servlet规范提供了一个ServletContext接口。

Servlet可利用ServletContext对象执行登陆事件,获得资源的URL索引,也可设置和存储Web应用程序需要的属性。

对于ServletContext而言,最重要的上下文信息包括:

1)初始化参数

用来初始化应用程序。这些参数由部署描述符中的“键-值”对提供。

ServletContext API允许通过getInitParameter()和getInitParameterNames()等方法访问这些初始化参数。

2)上下文属性

是一组应用程序属性,由Web应用程序的Servlet共享。

可设置和获得参数,也可通过编程方法,从Web应用程序中删除上下文属性。

ServletContext API允许通过多种方法访问上下文属性:setAttribute()、getAttribute()、removeAttribute()和getAttributeNames()等。

3)资源

“静态”内容文件的层次,是Web应用程序的一部分,被称为“Web应用程序资源”,包括HTML、GIF和JPEG等文件。

ServletContext API可通过多种方式访问这些资源,如getResource()和getResourceAsStream()等。

2、请求

Servlet的服务方法有权访问请求对象ServletRequest或HttpServletRequest。

请求对象包含客户请求及其它一些相关信息,该对象将用作传给service()方法的两个参数中的第一个参数。

请求参数采用“键-值”对格式。在特定环境下,一些键可能有多个值。

HttpServletRequest对象的几个重要方面如下:

1)属性

是与HttpServletRequest对象相关的对象。

属性也采用“键-值”对形式,但一个属性仅有一个值。

HttpServletRequest API可用多种方法访问属性:getAttribute()、setAttribute()和getAttributeNames()等。

2)头

头是HTTP请求的一部分,Servlet可通过HttpServletRequest API方法,如getHeader()、getHeaders()或getHeaderNames()等访问这些头信息。

HttpServletRequest对象的头可能包含integer、date的文本表示。为了访问它们,HttpServletRequest API提供了getIntHeader()和getDateHeader()方法。

3)Cookie

HTTP请求通常伴随着一个或多个Cookie,这些Cookie包含宝贵数据。

Cookie可以帮助Web应用程序构建客户端和服务器应用之间的会话。

HttpServletRequest API提供诸如getCookie()的方法,以便访问Cookie,并创建和维护会话。

3、响应

Servlet的服务方法有权访问响应对象。响应对象将是ServletResponse或HttpServletResponse。该对象包含了响应客户端的信息和所有其它相关细节,是service()方法两个参数的第二个参数。

客户端响应打包在HttpServletResponse对象在。HttpServletResponse对象的重要组成部分有:

1)头

发送给客户端的头信息可通过HttpServletResponse API获得。

诸如addHeader()方法可用于创建发送给客户端的头信息。

setHeader()方法可用于设置相应头的头值。

对于特定的类型,如integer和date型,HttpServletResponse API提供了addIntHeader()、setIntHeader()、addDateHeader()和setDateHeader()方法。

2)缓冲区

Servlet容器可以提供缓冲区功能,以增强“请求-响应”操作的性能和效率。

一些缓冲区功能可通过setBufferSize()、getBufferSize()、isCommitted()、reset()、resetBuffer()和flushBuffer()等方法实现。

3)响应类型和格式

发送给客户端的输出需要进行相应设置和简化。

为此,HttpServletResponse API提供了以下方法:setContentType()、setContentLength()、getWriter()、getOutputStream()等。

开发人员需要根据setContentType()方法设置的内容类型设置响应格式。

例如:若setContentType()方法被设置为text/html类型,开发人员就需要根据业务需求设置相应的输出格式。

编程人员在设计应用程序时,要认真选择输出的内容类型。还要理解输出的表示部分,并全面了解HTML等表示语言的语法。

----------------------------

完成了HttpServletResponse对象就意味着service()方法执行结束。

在关闭响应时,Servlet容器必须清空客户响应缓冲区剩余的所有内容。

继续阅读