戏说Java web开发中的listener和filter

发表于:2010-2-08 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  5. 再新建一个过滤器:MyFilter.java,如下:

1. package chb.demo.web;  
2.  
3. import java.io.IOException;  
4.  
5. import javax.servlet.Filter;  
6. import javax.servlet.FilterChain;  
7. import javax.servlet.FilterConfig;  
8. import javax.servlet.ServletException;  
9. import javax.servlet.ServletRequest;  
10. import javax.servlet.ServletResponse;  
11. import javax.servlet.http.HttpServletRequest;  
12. import javax.servlet.http.HttpServletResponse;  
13.  
14. public class MyFilter implements Filter ...{  
15.  
16.     public void destroy() ...{  
17.  
18.     }  
19.  
20.     public void doFilter(ServletRequest request, ServletResponse response,  
21.             FilterChain chain) throws IOException, ServletException ...{  
22.         HttpServletRequest req = (HttpServletRequest)request;  
23.         HttpServletResponse rsp = (HttpServletResponse)response;  
24.         if(req.getRequestURI().toString().endsWith("money.jsp"))...{  
25.             //什么时候有过钱啊?打回北京去  
26.             rsp.sendRedirect("gohome.jsp");  
27.             System.out.println("什么时候有过钱啊,滚回家去!");  
28.             return;  
29.         }else if(req.getRequestURI().toString().endsWith("hongshu.jsp"))...{  
30.             if(BigBag.bag.containsKey("hongshu"))...{  
31.                 int num = BigBag.bag.get("hongshu")+1;  
32.                 BigBag.bag.put("hongshu", num);  
33.                 System.out.println("得到第"+num+"个红薯");  
34.             }else...{  
35.                 BigBag.bag.put("hongshu", 1);  
36.                 System.out.println("得到第1个红薯");  
37.             }  
38.             //村长同意了,下面就是到村民家中拿了。。  
39.             chain.doFilter(request, response);  
40.         }else...{  
41.             //只要不要钱就行,放行  
42.             chain.doFilter(request, response);  
43.         }  
44.     }  
45.  
46.     public void init(FilterConfig filterConfig) throws ServletException ...{  
47.  
48.     }  
49.  
50. }

  6. 在web.xml中配置监听器和过滤器,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <filter>
        <filter-name>myFilter</filter-name>
        <filter-class>chb.demo.web.MyFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>chb.demo.web.MyListener</listener-class>
    </listener>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

  好了,大功告成,部署运行,观察结果怎样?

  分析结果

  我们会观察到如下结果:

  当服务启动过程中,控制台输出“要进山了,准备好布袋子”

  当点击一下“给红薯”的链接时,控制台会输出“得到第x个红薯”

  当点击一下“给钱”的链接时,控制台输出“什么时候有过钱啊,滚回家去!”

  怎么样?有点明白了?

  其实,监听器就是在服务启动之前做好保证服务正常运行的准备工作,服务结束的时候再善后一下;对应案例中的情况,就是在上路之前把袋子准备好,回来了把袋子扔掉;类似保姆的工作,照顾孩子起床,再照顾孩子睡下。

  过滤器就是针对服务器的请求,加以过滤限制;对应案例中的情况,就是村长了,掌握着生杀大权,什么事都得过我这关才行^_^

22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号