Filter和Listener
a) Filter(过滤器):过滤器可以对用户请求进行过滤和拦截。查看和操作客户端和服务器交换的数据。
编写过滤器:
实现javax.servlet.Filter;
实现三个方法init()、destroy()和doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
配置web.xml文件:
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>
Filter的参数一般通过FilterConfig.getInitParameter()获取。
b) Listener(监听器)
1、 监听器简介及作用
2、 事件类与监听器接口
3、 在Eclipse中自定义监听器类
4、 综合案例
监听器简介及作用
监听器是Servlet2.4新增的一个技术,要使用Listener必须确保Web服务器支持该技术(例如,Tomcat 5.5以上支持Listener)。故名思议,监听器主要是监听Web会话中的一些事件(你还如上下文事件、请求属性事件、会话绑定事件等)。通过Listener来监听这些事件。Servlet中提供了8个Listener,以监听不同的相应事件(定义了6个事件)。
事件类与监听器接口
六个事件:
ServletContextEvent
ServletContextAttributeEvent
ServletRequestEvent
ServletRequestAttributeEvent
HttpSessionEvent
HttpSessionBindingEvent
八个监听器
ServletContextListener (contextDestroyed(), contextInitialized())
ServletContextAttributeListener
ServletRequestListener
ServletRequestAttributeListener
HttpSessionListener (sessionCreated(), sessionDestroyed())
HttpSessionActivationListener
HttpSessionAttributeListener
HttpSessionBindingListener
使用Eclipse创建一个Listener类
定义监听器类之后,实现对应的方法。然后在web.xml文件中配置该监听器类。
<listener>
<description>实现在线人数计数</description>
<display-name>FirstListener</display-name>
<listener-class>app.listener.FirstListener</listener-class>
</listener>
定义一个在线人数统计的监听器
原理:当用户打开一个页面时,将触发HttpSessionEvent事件的会话创建方法(即调用HttpSessionListener的sessionCreated()方法);当关闭一个页面时,将触发HttpSessionEvent事件的会话销毁方法(即调用HttpSessionListener的sessionDestroyed()方法)
c) 异常处理:通过创建一个JSP页面,并设置该页面的isErrorPage属性为true,在web.xml中注册该页面:
<error-page>
<exception-type>异常类型</exception-type>
<location>错误页面位置</location>
</error-page>
当该web应用发生某种异常时,会自动跳转到该页面。