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个红薯”
当点击一下“给钱”的链接时,控制台输出“什么时候有过钱啊,滚回家去!”
怎么样?有点明白了?
其实,监听器就是在服务启动之前做好保证服务正常运行的准备工作,服务结束的时候再善后一下;对应案例中的情况,就是在上路之前把袋子准备好,回来了把袋子扔掉;类似保姆的工作,照顾孩子起床,再照顾孩子睡下。
过滤器就是针对服务器的请求,加以过滤限制;对应案例中的情况,就是村长了,掌握着生杀大权,什么事都得过我这关才行^_^