《lesson 5、WEB过滤和监听.ppt》由会员分享,可在线阅读,更多相关《lesson 5、WEB过滤和监听.ppt(11页珍藏版)》请在金锄头文库上搜索。
1、Servlet过滤和监听,filter,Filter 技术是servlet 2.3 新增加的功能. 可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response 能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response.,Filter接口,一个filter必须实现javax.servlet.Filter接口并定义三个方法: init(FilterConfig filterConfig) /初始化 doFilter(ServletRequest request, Servl
2、etResponse response, FilterChain chain) /执行filter 的工作. destroy() 3个方法的执行顺序同servlet,Filter实现,import java.servlet.*; public class MyFilter implements Filter protected String encoding = null; public void init(FilterConfig filterConfig) throws ServletException this.encoding = filterConfig.getInitParamet
3、er(“encoding“); public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException if (request.getCharacterEncoding() = null) request.setCharacterEncoding(encoding); /可在此写请求执行前的处理 chain.doFilter(request, response);/ /可在此写应答执行前的处理 public voi
4、d destroy() this.encoding = null; ,Filter配置, Filter /这里是Filter的名字,随便起 Myfilter /Filter的类名,注意包含package encoding gb2312 Filter/与上面的保持一致 / * /对所有资源应用此filter ,Filter串连,如果一个应用有多个Filter,则他们的执行顺序是串连的,且在web.xml文件中,靠前的filter先执行。 如:2个filter:filter1和filter2,他们的doFilter里的代码如下: public void doFilter(ServletReques
5、t request, ServletResponse response, FilterChain chain) throws IOException, ServletException block1; /可在此写请求执行前的处理 chain.doFilter(request, response);/ block2; /可在此写应答执行前的处理 ,Filter串连执行过程,Listener,Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作 。 常用的监听器 如: ServletContextListener监听ServletCon
6、text。 创建ServletContext时触发contextInitialized(ServletContextEvent sce); 当销毁ServletContext时触发contextDestroyed(ServletContextEvent sce);,Listener例子,import java.servlet.*; public class MyListener implements Listener void contextDestroyed(ServletContextEvent sce) System.out.println(“容器服务停止”); void contextInitialized(ServletContextEvent sce) System.out.println(“容器服务开始运行”); ,Listener配置,Web.xml中的配置: .study.listener.ReportListener ,Listener例子测试运行,启动服务器 打印信息应该是:容器服务开始运行 关闭服务器 打印信息应该是:容器服务停止 注意:关闭时的信息并非每次都可以打印出,