您的位置:首页 > 编程语言 > Java开发

监听器Listener与过滤器Filter

2017-03-21 20:47 344 查看
Listener是Servlet规范的一个高级特性。用于监听JavaWeb中的事件,例如创建、修改、删除Session、request 、context等并触发相应的事件。

Listener需要实现相应的接口,并在web.xml中配置相应的listener

<!--          <listener>标签一般配置在<servlet>标签前面                -->
<listener>
<listener-class>全类名</listener-class>
</listener>


Servlet 2.5 规范中共有8种监听器 分别用于监听Session、request、Context等的创建、销毁、属性变化等。

1 . HttpSessionListener接口

public void sessionCreated(HttpSessionEvent arg0) {
HttpSession session=arg0.getSession();
}
public void sessionDestroyed(HttpSessionEvent arg0) {
HttpSession session=arg0.getSession();
}


2 . ServletRequestListener接口

public void requestDestroyed(ServletRequestEvent arg0) {
ServletRequest request=arg0.getServletRequest();
}
public void requestInitialized(ServletRequestEvent arg0) {
ServletRequest request=arg0.getServletRequest();
}


3 . ServletContextListener接口

@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub

}


4 . ServletContextListener接口

可以用其实现当态登录,比如把所有的session存放到Map中,若其他地点登录该账户,根据Map中其session,把该session中的登录的账号信息删除,即只让新登录的可行。如session中放入(“personInfo”,PersonInfo)。

@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub

}


5 . ServletContextAttributeListener接口

public void attributeAdded(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
// TODO Auto-generated method stub

}


6 . ServletRequestAttributeListener接口

@Override
public void attributeAdded(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeRemoved(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void attributeReplaced(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub

}


以下两种监听器监听的是session中的对象不是session本身,故不需要再web.xml中申明

比如在JavaBean中实现下面两个接口,当把该bean放入session中会触发下面接口中的方法。

7 . HttpSessionBindingListener接口

实现该接口的对象被被绑定、解绑到session时会触发相应的方法。

@Override
public void valueBound(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void valueUnbound(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub

}


8 . HttpSessionActivationListener接口

服务器关闭时,会将session中的内容保存的硬盘上,这个过程叫钝化;服务器启动时,会将硬盘中的session内容重新加载。

//对象重新加载
@Override
public void sessionDidActivate(HttpSessionEvent arg0) {
// TODO Auto-generated method stub

}
//对象钝化
@Override
public void sessionWillPassivate(HttpSessionEvent arg0) {
// TODO Auto-generated method stub

}


Filter用于对request或response进行修改。

Filter接口。

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
// TODO Auto-generated method stub

}

@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}


需要在web.xml中配置
<filter>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息