Web应用的监听器

****Web容器模型

1.对于servlet和ServletContext初始化参数:编写servlet代码访问初始化参数,创建部署描述文件元素来声明初始化参数。

2.对于基本的servlet属性作用域(请求、会话和上下文):编写servlet代码来增加、获取和删除属性;给定一种使用场景,明确属性适当的作用域;明确各个作用域有关的多线程问题。/////属性作用域

3.描述Web容器请求处理模型的元素:过滤器、过滤器链、请求和响应包装器,以及Web资源(servlet或JSP页面)。

4.描述请求、会话和Web应用的Web容器生命周期时间模型;为每个作用域生命周期创建和配置监听者类;创建和配置作用域属性监听者类;给定一个场景,明确要使用的适当的属性监听者。

5.描述RequestDispatcher机制;编写servlet代码来创建一个请求分派器;编写servlet代码转发或包含目标资源;明确容器向目标资源提供的额外的请求作用域属性。


*****初始化参数

1.在DD中配置一些信息比如email地址,而不是硬编码写到servlet类中。给定一个参数名(param-name)和参数值(param-value)即可,只要保证它在DD的<servlet>元素中.

2.在servlet初始化之前不能使用servlet初始化参数。容器初始化一个servlet时,会为这个servlet建一个唯一的ServletConfig,容器从DD“读出”servlet初始化参数,并把这些参数交给ServletConfig然后把ServletConfig传递给servlet的init()方法。

3.servlet初始化参数只能读一次——就是在容器初始化servlet的时候。容器建立一个servlet时,它会读DD,并为ServletConfig创建名/值对。然后容器不会再读初始化参数,除非重新部署servlet。


******步骤

1.容器为某个servlet读取DD,包括了servlet初始化参数(<init-param>)。

2.容器为这个servlet创建一个新的ServletConfig实例。

3.容器为每个servlet初始化参数创建一个String名/值对。

4.容器向ServletConfig提供名/值初始化参数的引用。

5.容器创建servlet的一个新实例。

6.容器调用servlet的init()方法,传入ServletConfig的引用。


******ServletConfig

1.主要任务:提供初始化参数

2.


*****ServletContext

如何让Web应用的其他部分也得到DD中置于servlet初始化参数的信息?

1.解决之道:使用过上下文初始化参数

2.将<servlet>元素中的<init-param>元素去掉,添加<context-param>到<web-app>中,但是放在所有<servlet>之外。


*******ServletConfig和ServletContext的区别

1.在DD中:ServletConfig的初始化参数是使用位于各个<servlet>声明的内部的<init-param>。ServletContext的初始化参数使用<context-param>配置。

2.在servlet代码中:

3.可用性:ServletContext对Web应用中的所有servlet和JSP都可用。ServletConfig只对配置了<init-param>的相应servlet可用。

4.每个servlet有一个ServletConfig,每个Web应用有一个ServletContext。

5.要把初始化参数认为是部署时常量。可以在运行时得到这些初始化参数,但是不能设置。根本就没有setInitParameter()。



*****ServletContextListener监听器:唯一的用途就是初始化应用。

引入:上下文参数只能是String。如果想让Web应用的所有部分都访问一个共享的数据连接呢?当然可以把查找名放在一个上下文初始化参数里,这确实是上下文参数最常见的用法,但是如何把这个String参数转换成油Web 应用各部分共享的一个具体引用呢?不能把这个代码放到servlet中,因为这样的话只能选某个特定的servlet最先运行。

1.ServletContextListener对象能做到:

   从ServletContext中得到上下文初始化参数,使用初始化参数查找名建立一个数据库连接,把数据库连接存储为一个属性,使得Web应用的各个部分都能访问。关闭数据库连接。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值