Servlet生命周期事件以及事件
2017-10-29 21:45
190 查看
这是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-timeou 4000 t>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
相关文章推荐
- Servlet运行原理以及生命周期
- Java垃圾回收精粹——权衡点、对象生命周期以及全局暂停事件
- 笔记—什么是servlet,以及它的生命周期
- Servlet的概述以及生命周期
- Servlet3.1规范翻译 - 应用生命周期事件
- Servlet的生命周期以及简单工作原理的讲解
- 什么是Servlet以及Servlet的生命周期
- Servlet对象生命周期以及运行过程
- Servlet操作Cookie制作工具类以及Cookie的生命周期
- Servlet生命周期以及运行原理
- Servlet学习(一)----Servlet的生命周期以及开发Servlet的三种方法
- Servlet生命周期以及Servlet的三种写法
- 页面生命周期阶段以及相关事件
- ASP.NET页面的生命周期以及在生命周期内会被触发的事件
- 页面生命周期阶段以及相关事件
- servlet的生命周期以及与其相关的类接口和相关方法
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
- Servlet的生命周期以及相关配置
- Tomcat 3.0版本的一些说明 以及 servlet 生命周期的简单介绍