Servlet生命周期事件以及事件
来源:互联网 发布:淘宝群怎么能快速拉人 编辑:程序博客网 时间:2024/05/21 06:57
这是Servlet2.3版本后新增的功能
1. 能够在不修改原有的Servlet基础上,监听程序中Servlet各个对象: ServletContext、HttpSession、HttpServletRequest中的存储 数据的变化。 2. 可以监听客户端的请求,服务端的操作。 组成部分:事件模型和监听器两部分。 事件是java中的一个重要的概念,指某个代码运行过程中的一个状态,如:HttpSession创建,属性值的改变等都可以用事件来描述。 事件源:比如事件是通过点击按钮触发的,那么这个按钮就是事件源 在事件源上又有动作,这些动作触发的事件就叫做回调。 所有事件的父接口都是 java.util.EventListener,这只是个象征 性的接口。 各类事件对应的监听器接口 Context生命周期 建立与关闭 Javax.servlet.ServletContextListener Context属性改变 添加、删除、修改 Javax.servletServletContentAttributeListener Session生命周期 创建、注销、超时 Javax.servlet.http.HttpSessionListener Session属性改变 添加、删除、修改 Javax.servlet.http.HttpSessionAttributeListener Request生命周期 创建、销毁 javax.servlet.ServletRequestListenter Request属性改变 添加、删除、修改 javax.servlet.ServletRequestAttributeListener 事件定义的三要素: 1.事件源 2.动作 3.事件触发的回调(触发动作之后调用什么东西) 这里的事件源就是:ServletContext、HttpSession、HttpServletRequest 监听可以分为两类:基于生命周期的监听和基于数据变化的监听。 这三个对象都有setAttribute,基于数据变化的监听,监听的就是setAttribute方法。 监听Request的生命周期: 浏览器发起请求到响应完毕,就是Request的生命周期。 1.创建类实现ServletRequestListener,重写初始化和销毁两个方法 ServletRequestEvent对象可以调用getServletRequest获取ServletRequest对象, 再强转即可获取HttpServletRequest。 2.注册到web.xml中
<listener> <listener-class> day05_Filter.exercise.RequestCycleListener </listener-class></listener>
OK了,这就是基于request生命周期的监听。request是相当节省内存的一个对象,所以数据 尽量放在request中,session或者Context根据具体需求而定。监听Session的生命周期: 实现HttpSessionListener接口,里边两个方法就表示建立session和销毁session了。 需要在Servlet中调用getSession,session对象才会产生 session默认是失去连接后30分钟销毁, 可以通过web.xml修改之,最小是1分钟:
<session-config> <session-timeout>1</session-timeout></session-config>
总结:Session的原理是通过容器在调用getSession方法时自动通过cookie写入sessionID的方式来控制 cookie默认的有效期是浏览器被关闭之前 session的有效期是当前这一次浏览器访问。 session的数据是存放在容器中的,容器无法监听浏览器的关闭,只能够通过web.xml设定的默认清除时长 来定时清除长期未访问的session数据。监听Context的生命周期: 实现ServletContextListener接口,这个东西的生命周期是项目的启动到停止。 再注册到web.xml中即可,这里没什么好演示的,不贴东西了。数据存储逻辑(setAttribute 和 getAttribute) 1.当所有的servlet都需要共享,而且需要保留的时间很长,就写入ServletContext。 2.数据是有状态性的,不同的用户拥有不同的数据,就写入HttpSession。 3.如果是传递的参数或者是请求转发的跳转数据传递,那就写入HttpServletRequest
阅读全文
0 0
- Servlet生命周期事件以及事件
- 页面生命周期阶段以及相关事件
- 页面生命周期阶段以及相关事件
- 生命周期事件
- [AngularJS面面观] 9. scope事件机制 - 基本概念以及生命周期
- JPA生命周期事件批注
- SessionBean的生命周期事件
- 页面 生命周期事件
- 页面生命周期的事件
- tomcat&生命周期&事件监听器
- VUE--事件和生命周期
- ionic angular 生命周期事件
- ASP.NET页面的生命周期以及在生命周期内会被触发的事件
- servlet事件监听器
- servlet事件监听器
- Servlet事件监听器
- Servlet事件监听器
- Servlet的事件监听器
- opencv访问元素的几种方法
- bzoj3307雨天的尾巴(线段树合并)
- 烦死人的编码问题
- ctf入门——实验吧
- 算法总结
- Servlet生命周期事件以及事件
- 【笔记】C++排序函数
- Android Camera 开发之基础知识篇
- js封装addClass,removeClass函数
- TreeMap源码解析
- 如何使用less
- Oracle通过DBLink操作数据表,报错“ORA-22992:无法使用从远程表选择的lob定位器”
- nginx源码阅读(二).初始化:main函数及ngx_init_cycle函数
- android telephoney学习笔记