J2EE应用讲解(2)——Servlet基础理论

J2EE为我们提供了13个标准.其中servletweb开发中核心的标准之一.下面让我们一起走进servlet的学习.


:servlet简介

Servlet是运行在Web服务器上的Java程序,用于响应客户请求。也可以说,Servlet是Java组件,部署在Web服务器上,能在请求/响应通信模式下有效地工作。

我们常见的J2EE中关于servlet的类和接口有很多,我们常见的是servlet接口.这个是所有servlet都要实现的一个接口.还有GenericServlet即通用servlet.是独立于协议的servlet.它实现了servlet接口.我们常用到的是HttpServlet它是用在http协议上的servlet.


:下面总几个方面对servlet进行总结

1:接口

我们可使用以下两种方式之一创建Servlet:

●     实现Servlet接口

●     扩展的GenericServlet类或HttpServlet类

在创建Servlet后,还要描述Servlet细节,以及在运行时环境中,Servlet及Web应用程序中其他关联Web组件的附加信息。规范将XML文档中嵌入的这些信息称为部署描述符,供Web容器在部署组件时使用。在创建和部署Servlet后,Servlet成为Web服务器“容器”中的“实例”。

我们可以创建两类的servlet

一种是单线程的servlet.实现SingleThreadModel.这时web容器将所有的客户请求转发给一个实例.另一种是多线程的servlet.多线程的servlet有很多地方需要注意.很容易造成数据的不一致.


2:servlet生命周期


init()方法使Servlet进入“就绪”状态。之后,Servlet可接收服务请求,服务请求时执行service()方法。当容器决定销毁Servlet时,将调用destroy()方法. 

Servlet开始。init()方法由容器调用,只运行一次,使Servlet进入“就绪”状态。这个过程称作Servlet初始化。如果开始阶段出现异常,Servlet将不能响应任何用户请求。

在初始化过程中,init()方法使用ServletConfig对象。ServletConfig包含Servlet需要的初始化参数的名-值对。通常,目录、文件路径及其他资源信息将写入这个对象。

servlet服务。在正确初始化Servlet后,Servlet就可以接收客户端服务请求了。Servlet容器可能通过Servletservice()方法发送多个并发请求.表单提交以后首先执行的是service()方法.service方法会调用相应的doget()或者doPost方法.这个根据客户端提交的方式决定.

Servlet  销毁.当容器认定不再需要某个Servlet时,可以调用Servlet的destroy()方法,释放Servlet占用的所有容器资源。不过,容器不能调用活动Servlet的destroy()方法。在调用Servlet的destroy()方法前,容器需要确保以下两点:

●     阻塞更多新请求

●     完成所有待处理请求

 

3:Servlet上下文

Web服务器能支持若干Web应用程序。每个Web应用程序又能支持一个或多个Servlet。同一个Web应用程序的多个Servlet需要共享Web应用程序环境的资源。为此,Servlet规范提供了ServletContext接口。

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

●     初始化参数

●     上下文属性

●     资源

初始化参数。初始化参数用来初始化Web应用程序,而不是前面“Servlet开始”区域讨论的单个Servlet。这些参数由部署描述符中的“键-值”对提供。

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

上下文属性。上下文属性是一组应用程序属性,由Web应用程序的Servlet共享。可设置和获得参数,也可通过编程方法,从Web应用程序中删除上下文属性。ServletContextAPI允许通过多种方法访问上下文属性,如setAttribute()、getAttribute()、removeAttribute()和getAttributeNames()等。

资源。“静态”内容文件的层次,是Web应用程序的一部分,被称为“Web应用程序资源”,包括HTML、GIF和JPEG等文件。ServletContextAPI允许通过多种方法访问这些资源,例如getResource()和getResourceAsStream()等。


请求

Servlet的服务方法有权访问请求对象ServletRequest或HttpServletRequest。请求对象包含客户请求及其他一些相关信息。该对象将用作传给service()方法的两个参数中的第一个参数。请求参数采用“键-值”对格式。在特定环境下,一些键可能有多个值。

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

●     属性

●     头

●     Cookie

 

响应

Servlet的服务方法有权访问响应对象。响应对象将是ServletResponse或HttpServletResponse。该对象包含了响应客户端的信息和所有其他相关细节,是service()方法两个参数中的第二个参数。客户端响应打包在HttpServletResponse对象中。HttpServletResponse对象的重要组成部分有:

●     头

●     缓冲区

●     响应类型和格式

 

过滤

过滤(filtering)是Servlet2.3版的新特性。Filter是特殊的Servlet.过滤器(Filter)是轻量级Web组件,能及时转换HttpServletRequest和HttpServletResponse对象的头和内容。Filter和Servlet都是Web应用程序的一部分,都用生命期方法管理。顾名思义,Filter为Servlet的请求/响应操作提供过滤服务。如图6-13所示,过滤器可以“过滤”传给Servlet的请求,也可以“过滤”将要从Servlet发送到客户端的响应。它们不仅处理静态内容,也处理动态内容。

Web应用程序可用的一些过滤组件如下:

●     身份验证Filter

●     加密Filter

●     转换Filter


会话

这一部分规范旨在将客户端绑定到特殊“会话”,以便将从客户端到Web应用程序的一系列请求/响应操作视为最终事务的组成部分。这需要做一些工作,因为从设计上讲,HTTP是一个无状态协议。

Servlet支持以下会话跟踪机制:

●     Cookie

●     HTTP会话

●     URL重写


8. 安全性

大多数企业应用程序都在Internet上部署运行,故有必要营造一个安全环境,以便用户在企业应用程序上安全地执行交易。任何企业应用程序都需要以下一些基本安全功能:

●     身份验证

●     访问控制

●     数据完整性

●     保密性

可通过组合使用以下两种方式确保Web应用程序的安全性:

●     声明性安全

●     编程性安全


部署描述符

部署描述符就像Web应用程序的“万年历”。这个就是XML文件中描述的内容.Servlet 2.3版要求使用必需的部署描述符,以记录Web应用程序的重要方面:

●     Servlet声明

●     Servlet映射

●     ServletContext初始化参数

●     会话声明

●     应用程序生命期监听者声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值