JavaWeb监听器
三大组件:Servlet Listener Filter
监听器:接口
内容由我们来实现
它需要注册,例如注册在按钮上
监听器中的方法,会在特殊事件发生时调用
观察者:
事件源:
事件
监听器
javaweb中的监听器
事件源:三大域
ServletContext
生命周期监听:ServletContextListener,它有两个方法,一个出生时调用,一个死亡调用
void contextInitialized(ServletContextEvent sre);创建ServletContext
void contextDestroyed(ServletContextEvent sce) 销毁时
属性监听:ServletContextAttributeListener,它有三个方法,一个添加属性时调用,一个替换时期调用,最后一个移除属性时调用
void attributeAdded(ServletContextAttributeEvent event)
void attributeReplaced(ServletContextAttributeEvent event)
void attributeRemoved(ServletContextAttributeEvent event)
HttpSession
生命周期监听:HttpSessionListener,它有两个方法,一个出生时调用,一个死亡调用
void sessionCreated(HttpSession se) :创建session时
void sessionDestroyed(HttpSession se) 销毁session时
属性监听:HttpSessionAttributeListener,它有三个方法,一个添加属性时调用,一个替换时期调用,最后一个移除属性时调用
void attributeAdded(HttpSessionBindingEvent event)
void attributeReplaced(HttpSessionBindingEventevent)
void attributeRemoved(HttpSessionBindingEventevent)
ServletRequest
生命周期监听: ServletRequestListener,它有两个方法,一个出生时调用,一个死亡调用
void requestInitialized(ServletRequestEvent sre) 创建request时
void requestDestroyed(ServletRequestEvent sre) 销毁request时
属性监听ServletRequestAttributeListener,它有三个方法,一个添加属性时调用,一个替换时期调用,最后一个移除属性时调用
void attributeAdded(ServletRequestAttributeEvent event)
void attributeReplaced(ServletRequestAttributeEventevent)
void attributeRemoved(ServletRequestAttributeEventevent)
创建监听器 1 需要实现监听器接口 2 需要在web.xml中配置
2事件对象:
ServletContextEvent: ServletContext getServletContext();
HttpSessionEvent: HttpSession getSession()
ServletRequestEvent :
ServletContext getServletContext();
ServletRequest getServletRequest()
ServletContextAttributeEvent:
ServletContext getServletContext();
String getName() 获取属性名
Object getValue() :获取属性值
HttpSessionBindingEvent:略
ServletRequestAttributeEvent :略
3 session序列化,简单来说,服务器开关,没有影响到session
4 感知监听(都与HttpSession相关)
它用来添加到javaben上,而不是添加到三大域上
不需要要web.xml注册
SessionBindingListener 使javabean实现这个接口,javabean就知道自己是否添加到session域中了
HttpSessionActicationListener 监听javabean是否和session一起钝化或活化
5 session 的钝化与活化
用户太多的情况下,session个数太多,导致内存承受不了
配置钝化参数:tomcat\conf\catalinalocalhost目录下,文件名为项目名称
<Manger className="org.apache.catalina.session.PersistentManger" maxIdlessSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="mysession"/ >
session钝化:保存信息到硬盘
session活化:从硬盘中取出信息
6 国际化
国际化就是可以把页面中的中文变成英文
资源文件的名称:基本名称+Locale部分+.properties ,所有的资源文件名称要相同,不同之处就是Locale部分
页面操作:
1获取locale,这是由客户端的浏览器提供的locale
2 创建ResourceBundle
3 把所有的语言信息使用rb.getString("xxx")来替换
Locale locale = request.getLocale();
ResourceBundle rb = ResourceBundle.getBundle("res",locale);