servlet监听器

coding

application:上下文对象,是由容器创建和初始化的,它的范围是整个的web应用,而且整个web应用中只会有一个 application对象存在,当web服务器关闭时,就会将application对象销毁

session:是一种保存上下文信息的机制,它是针对每个会话的,它是放在服务器端,通过SessionId区分的,在浏览器和服务器结束后,都会将session销毁

request对象:是当客户端发送请求时,容器就会创建一个ServletRequest对象,来进行封装请求数据,同时会创建一个servletResponse对象来进行封装相应数据,当结束封装请求之后,就会销毁该对象 WEB监听器,就是监听这3个对象的创建,销毁,和它们的属性发生的变化

  • 什么是web监听器

  • Web监听器的用途:

1,统计在线人数和在线用户。 2,系统启动时加载初始化信息。 3,统计网站访问量。 4,跟Spring结合。

监听器的用法

实现了ServletContextListener接口,创建一个监听源为ServletContext的监听器,当服务器启动时,便会创建application对象并调用初始化方法.可以通过初始化方法的参数来对application对象做出一些操作.

当服务器关闭,application对象销毁时,也会调用监听器的销毁方法,也可以通过参数来作出一些操作.初始化方法和销毁方法中的参数是ServletContextEvent的对象,因此可以通过参数来获取到application对象来对其操作(获得初始化参数).

1.编写java程序

public class FirstListener implements ServletContextListener {

@Override

public void contextInitialized(ServletContextEvent sce) {

System.out.println("contextInitialized");

}

@Override

public void contextDestroyed(ServletContextEvent sce) {

System.out.println("contextDestroyed");

}

}

2.配置web.xml

<listener>

    <listener-class>onetry.Listener.FirstListener<stener-class>

<stener>

  • 监听器的执行顺序

  • 监听器分类

1.按监听器的对象划分:

a 用户监听应用程序环境对象(ServletContext)的事件监听器

b 用于监听用户会话对象(HttpSession)的事件监听器

c 用于监听请求消息对象(ServletRequest)的事件监听器。

2.按事件划分

a 监听域对象自身的创建和销毁的事件监听器

b 监听域对象中的属性的增加和删除的事件监听器

c 监听绑定到HttpSession域中的某个对象的状态的事件监听器

ServletContext的创建和销毁

实现ServletContextListener接口用于监听它的创建和销毁事件

一个项目中可以有多个ServletContextListener,但是只有一个ServletContext对象

有两个事件处理方法:

(1)contextInitialized方法:

public void contextInitialized( ServletContextEvent sce )

参数 ServletContextEvent 事件对象,可以获取ServletContext对象以及一些初始化参数

例如:

获取ServletContext对象:

ServletContext sc = sce.getServletContext();

获取初始化参数:

sc.getInitParmeter("参数名称");

初始化参数在web.xml中配置:

<context-param>

<param-name>initParam</param-name>

<param-value>imooc</param-value>

</context-param>

2.设置ServletContext属性:sc.setAttribute("name",obj);

然后在其它地方获取getAttribute("name")

(2)contextDestroyed方法:

public void contextDestroyed( ServletContextEvent sce )

ServletContext销毁时调用

主要用于数据库链接关闭时释放一些资源,以免过度的占用。

  • HttpSession的事件监听器

HttpSession的创建和销毁

实现HttpSessionListener接口用于监听它的创建和销毁事件

一个HttpSession可以注册多个HttpSessionListener接口,

一个web应用中可以有多个HttpSession对象

有两个事件处理方法:

sessionCreated方法:

public void sessionCreated(HttpSessionEvent se)

session创建时调用

sessionDestroyed方法:

public void sessionDestroyed(HttpSessionEvent se)

session销毁时调用

HttpSessionListener的主要用途:

统计在线人数

记录访问日志,记录访问时间、访问的ip

/**

* 销毁session

* 1.关闭服务器

* 2.关闭浏览器

* 3.不关闭浏览器,session超时

*/

不关闭浏览器,session超时

可以在web.xml配置session超时的时间

<session-config>

<session-timeout>0<ssion-timeout>

<ssion-config>

0:没有超时的限制

1:超时1分钟后销毁,但是并不是准确的一分钟

  • ServletRequest的事件监听器

实现ServletRequestListener接口用于监听它的创建和销毁事件

一个ServletRequest可以注册多个ServletRequestListener接口,

有两个事件处理方法:

requestInitialized方法:

public void requestInitialized(ServletRequestEvent sre)

request创建时调用

参数ServletRequestEvent可以获取ServletRequest对象 ServletRequest sr = sre.getServletRequest()

进而获取初始化参数:sr.getInitParmeter("")

requestDestroyed方法:

public void requestDestroyed(ServletRequestEvent sre)

request销毁时调用

ServletRequest的主要用途:

读取参数

记录访问历史

request监听的是用户的每一个访问请求

Ps:别忘了监听器的web设置。

request.getAttribute()只能通过 request.setAttribute("name",参数)来获取;

request.getParameter()则通过URL参数,或前链接页面关系的参数来获取

 

  • 绑定到HttpSession域中的对象状态的事件监听器

监听器的分类-按监听事件划分:

1、监听器绑定到HttpSession域中的某个对象的状态事件监听器;

2、HttpSession中的对象状态:

(1)绑定:通过setAttribute();

(2)解除绑定:removeAttribute();

(3)钝化:将session对象序列化到存储设备上

(4)活化:将session对象从存储设备上进行恢复

3、session钝化机制:

(1)把服务器中不常使用的session对象暂时的序列化到系统文件或是数据库中,当使用时反序列化到内存中,整个过程有服务器自动完成。

(2)session的钝化机制由SessionManager管理

4、实现绑定和解除绑定,创建一个【普通的javabean】绑定和解除绑定需实现【HttpSessionBindingListener】接口;

实现钝化和活化,需实现HttpSessionActivationListener接口和Serializable接口

  • web3.0之后使用注解实现监听器

以上是 servlet监听器 的全部内容, 来源链接: utcz.com/z/508945.html

回到顶部