J2EE应用讲解四——Servlet基础

本文介绍了Servlet的生命周期,包括初始化、运行和服务销毁阶段,并探讨了如何处理请求、使用ServletContext及实现过滤器等内容。

周期

servlet生命周期通过web容器控制

 


Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

 

初始化阶段:

1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

 

2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。

 

3,Servlet容器创建一个servlet对象。

 

4,Servlet容器调用servlet对象的init方法进行初始化。

 

 

运行阶段:

当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

 

然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

 

信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和

 

servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

 

 

销毁阶段:

当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,

 

同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放

 

servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

 

在这里该注意的地方:

在servlet生命周期中,servlet的初始化和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数


接口

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

 

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

●    实现Servlet接口

●    扩展的GenericServlet类或HttpServlet

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

 

我们可以创建两类的servlet

一种是单线程的servlet.实现SingleThreadModel.这时web容器将所有的客户请求转发给一个实例.

另一种是多线程的servlet.多线程的servlet有很多地方需要注意.很容易造成数据的不一致.



处理请求

servlet默认情况下,无论你是get还是post请求,都会经过service方法来处理,然后转向doGetdoPost方法;如果form的提交方式是get,则转向doGet方法,如果是post方式,则转向doPost方法。

 

当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。

 

在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。


ServletContext

Servlet是一个接口,呈现了Web应用的Servlet视图。

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

 

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

●     初始化参数

●     上下文属性

●     资源

初始化参数。

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

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


上下文属性。

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


资源。

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


过滤器

Filter是轻量级Web组件,能及时转换HttpServletRequestHttpServletResponse对象的头和内容。FilterServlet都是Web应用程序的一部分,都用生命期方法管理。

 

作用

1,任何系统或网站都要判断用户是否登录。

 

2,网络聊天系统或论坛,功能是过滤非法文字

 

3,统一解决编码

 

4,数据压缩和解压缩

 


 

创建

1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。

 

2,重写接口里面的三个方法:init,doFilter,destroy。

 

3,然后在web.xml配置过滤器。

 


filterjavax.servlet.FilterConfig对象中获得Servlet上下文和部署参数

 

 

部署


 


 

事件监听器

request,session,application3种事件的监听。

作用:负责监听各种事件的发生并做出相应的响应。

Request代表一次请求,Session代表一次回话,Application(Servlet上下文)代表一个Web应用。


准备工作 8 第1章 总 括 9 一.分布式得多层应用程序 9 二.J2EE容器 11 三.打包J2EE组件 12 .开发者角色 13 五.本书所用的软件 14 第2章 动手做一个EJB 17 一.准备工作 18 二.创建J2EE应用程序 19 三.创建企业Bean 19 .创建J2EE应用程序客户端 22 五.创建Web客户端 25 六.设置企业Bean的JNDI名 27 七.部署J2EE应用程序 28 八.运行J2EE应用程序客户端 29 九.运行Web客户端 29 十.修改J2EE应用程序 30 十一。常见问题和解决方法 31 第3章 企业Bean 35 1,企业Bean概述 36 2,会话Bean 36 3,EntityBean 38 4,Message-Driven Bean 40 5.定义客户端访问接口 42 6,企业Bean的“内容” 45 7,企业Bean的命名约定 46 8,企业Bean的生存周期 46 第4章 有状态会话Bean示例 51 1.购物车会话Bean CartEJB 51 二 其他的企业Bean特性 58 第5章 BMP的例子 62 一.SavingsAccountEJB 62 二.用deploytool部署BMP实现的实体Bean 74 三.为BMP映射表间关系 74 .BMP的主键 85 五.异常处理 88 第6章 CMP的例子 89 一 RosterApp应用概述 90 二 layerEJB代码分析 90 三.RosterApp配置说明 95 RosterApp中的方法调用 102 五 运行RosterApp应用程序 109 六 用deploytool工具部署CMP实现的实体Bean 110 七 CMP的主键 110 第7章 一个消息驱动Bean的例子 113 一.例子应用程序介绍 113 二.J2EE应用程序客户端 114 三.消息驱动Bean类 115 .运行本例子 116 五.用deploytool部署消息驱动Bean 117 六.用deploytool配置JMS客户端 118 第8章 EJB查询语言 120 一.术语 120 二.简单语法 121 三.查询例子 121 .全部语法 124 五.EJB QL的限制 137 第9章 网络客户端及组件 139 第11章 JSP技术 165 第12章 JSP页面中的JavaBean组件 178 第13章 在JSP页面中自定义标签 182 第14章 事务 202 一.什么是事务 202 二.容器管理事务 203 三.Bean管理事务 208 .企业Bean事务摘要 211 五.事务超时 211 六.隔离级别 212 七.更新多个数据库 212 八.Web 组件事务 214 第15章 安全 215 一.纵览 215 二.安全角色 216 三.Web层安全 217 .EJB层安全 219 五.应用程序客户端层安全 220 六.EIS(Enterprise Information System)层安全 221 七.传递安全身份 223 八.J2EE用户、域和组 224 九.安装服务器证书 225 第16章 资源连接 227 一.JNDI名和资源引用 227 二.数据库连接 230 三.邮件服务连接 232 .URL资源连接 234 第17章 DUKE的银行应用程序 236
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值