web监听器监听对象
ServletContext ->application
ServletContext 1-N ServletContextListener 用途:定时器、全局属性对象
HttpSession ->session
HttpSession 1-N HttpSessionListener 用途:统计在线人数 记录访问日志
servletRequest ->request
servletRequest 1-N servletRequestListener 用途:读取参数,记录访问历史
使用:
1、继承相应的接口
2web.xm注册
监听事件划分:
1、监听对象自身的创建和销毁的事件监听器
2、监听对象中的属性的增加和删除,替换的事件监听器
3、监听绑定Httpsession域中的某个对象的状态的事件监听器
Httpsession的对象状态:
绑定->解除(将对象保存在session和将对象从session清除) 钝化->活化(本质:把服务器中不经常使用的session对象暂时序列化到系统文件中或者数据库,当被使用时反序列化到内存中,整个过程服务器自动完成) 不需在web.xml注册
HttpsessionBindingListener接口
valueBound方法
valueUnbound方法
HttpsessionActivitionListener 接口
sessionWillpassivate方法
sessionDidActivity方法
拓展:
1.page指当前页面有效。在一个jsp页面里有效
2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。
3.Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中 浏览器关闭(或者超时)
4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用 服务器关闭
总结:当数据只需要在下一个forward有用时,用request就够了;
若数据不只是在下一个forward有用时,就用session。
上下文,环境信息之类的,用application。
- 统计在线的人数和在线的用户
- 系统启动时加载初始化信息
- 统计网站访问量
- 跟spring结合
getAttribute与getParameter的区别
这部分是对JSP的扩展,经常在JSP或者Servlet中获取数据,那么getAttribute与getParameter有什么区别呢?
1 从获取到数据的来源来说:
getAttribtue获取到的是web容器中的值,比如:
我们在Servlet中通过setAttribute设定某个值,这个值存在于容器中,就可以通过getAttribute方法获取;
getParameter获取到的是通过http传来的值,比如这样一个http请求:
http:localhost:8080/test/test.html?username=xingoo
还有其他的GET和POST方式,都可以通过getParameter来获取。
2 从获取到的数据类型来说:
getAttribute返回的是一个对象,Object。
getParameter返回的是,前面页面中某个表单或者http后面参数传递的值,是个字符串。
getAttribute与getParameter的区别
这部分是对JSP的扩展,经常在JSP或者Servlet中获取数据,那么getAttribute与getParameter有什么区别呢?
1 从获取到数据的来源来说:
getAttribtue获取到的是web容器中的值,比如:
我们在Servlet中通过setAttribute设定某个值,这个值存在于容器中,就可以通过getAttribute方法获取;
getParameter获取到的是通过http传来的值,比如这样一个http请求:
http:localhost:8080/test/test.html?username=xingoo
还有其他的GET和POST方式,都可以通过getParameter来获取。
2 从获取到的数据类型来说:
getAttribute返回的是一个对象,Object。
getParameter返回的是,前面页面中某个表单或者http后面参数传递的值,是个字符串。