文档章节

jave web 监听器。

o
 osc_mervd488
发布于 2018/04/23 20:44
字数 1000
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

https://www.imooc.com/video/5664

 

Web监听器由Servlet规范提供的,可以监听客户端的请求以及服务端的操作,即监听ServletContext、HttpSession、ServletRequest对象.(这三个对象称为域对象).监听事件分为这三个对象的创建、销毁事件以及这三个对象属性的变化事件.与监听绑定到HttpSession域中的某个对象的状态的时间,分别要实现不同的监听器接口.

 

Web监听器的用途如下所示:<br> 1:统计在线人数和在线用户——知道当前有多少用户在使用系统<br> 2:系统启动时加载初始化信息——这个功能有好多种方式可以实现,这是其中之一<br> 3:统计网站的访问量——和1类似<br> 4:跟Spring结合

 

有多个监听器的时候,按web.xml中注册顺序启动

监听器>过滤器>servlet的启动顺序

 

@监听器分类: 1.按监听器的对象划分: a 用户监听应用程序环境对象(ServletContext)的事件监听器 b 用于监听用户会话对象(HttpSession)的事件监听器 c 用于监听请求消息对象(ServletRequest)的事件监听器 2.按事件划分 a 监听域对象自身的创建和销毁的事件监听器 b 监听域对象中的属性的增加和删除的事件监听器 c 监听绑定到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</session-timeout> </session-config> 0:session没有超时的限制 1:session超时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监听的是用户的每一个访问请求

 

 

request.setAttribute("...","..."); // 是存储在request对象中的属性

request.getAttribute("..."); // get的只能是setAttribute设置的属性

request.getParameter("..."); // 获取的是http://请求中设置的param

 

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

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

2、HttpSession中的对象状态:<br>

(1)绑定:通过setAttribute保存到session对象当中;<br>

(2)解除绑定:removeAttribute;<br>

(3)钝化:将session对象持久化到存储设备上;<br>

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

3、session钝化机制:<br>

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

(2)session的钝化机制由SessionManager管理,创建一个普通的javabean绑定和解除绑定需实现HttpSessionBindingListener接口<br>

4、要想实现钝化和活化,除了需实现HttpSessionActivationListener接口还需要实现Serializable接口

 

Servlet 3.0的监听器的使用:@WebListener("3.0web监听器");

 不用注册了,但还是要实现接口

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Pycharm文件打开方式

Pycharm修改文件默认打开方式 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了个Text,然后就乱码了: 那我...

osc_fi9eaftu
15分钟前
8
0
微信域名检测中反应速度的重要性

随着微信域名检测的普及,越来越多的人重视这方面有个客户是这样跟我说的,他现在用的那个检测有频率限制 最快只能一秒检测一个, 并发多的时候是不能边跳转边检测的, 只能写到计划任务里面...

mkapi01
16分钟前
18
0
状压dp大总结1 [洛谷]

前言 状态压缩是一种\(dp\)里的暴力,但是非常优秀,状态的转移,方程的转移和定义都是状压\(dp\)的难点,本人在次总结状压dp的几个题型和例题,便于自己以后理解分析状态和定义方式 状态压缩...

osc_s28jz759
17分钟前
17
0
aspnet core 2.1中使用jwt从原理到精通一

目录 原理; 根据原理使用C#语言,生成jwt; 自定义验证jwt; 使用aspnetcore 中自带的类生成jwt; 学有所得 了解jwt原理; 使用C#轻松实现jwt生成和验证 原理 jwt对所有语言都是通用的,只要...

osc_1ls4yaq1
19分钟前
6
0
github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置

最近师弟在做DQN的实验,由于是强化学习方面的东西,正好和我现在的研究方向一样于是我便帮忙跑了跑实验,于是就有了今天的这个内容。 首先在github上进行搜寻,如下图: 发现第一个星数最多...

osc_252iaxru
20分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部