今天在公司看到有同事在写filter,晚上一个人在家无聊,就想聊聊这个东西。
jsp开发中的监听器和过滤器,这两个东西要说起来,很大,很繁。今天我想用一个现实的例子,来说明这两个东东的作用。
案例描述
假设你平时生活在北京,有天你去一个很边远很贫穷的山村体验生活,到了那个山村后,你想要什么东西,村长都会同意,然后安排村民送给你,但是有一点例外的是,一旦你问他们要钱,村长坚决不给,还会带领村民把你打回北京去。
你为了从村民那里带走尽量多的东西,所以你在出发前准备了一个大袋子,希望把村民给的东西都放到袋子里;然后你在回到城市后,这个袋子就没用了,你就把这个袋子给扔了。
代码模拟
恩,我想用如下简单代码来模拟以上案例,大家可以想一下监听器扮演者什么角色?过滤器扮演什么角色?
2. 默认的index.jsp页面上加上两个链接,模拟要村民要红薯和要钱,如下:
1. <html> |
3. 新建一个大布袋类:BigBag.java,如下:
1. package chb.demo.web; 2. 3. import java.util.HashMap; 4. 5. public class BigBag ...{ 6. public static HashMap<String, Integer> bag;//村民的东西就放在这个袋子里 7. } |
4. 新建一个监听器:MyListener.java,如下:
1. package chb.demo.web; 2. 3. import java.util.HashMap; 4. 5. import javax.servlet.ServletContextEvent; 6. import javax.servlet.ServletContextListener; 7. 8. public class MyListener implements ServletContextListener...{ 9. 10. public void contextDestroyed(ServletContextEvent arg0) ...{ 11. BigBag.bag = null; 12. System.out.println("回城了,让掉烂袋子吧"); 13. } 14. 15. public void contextInitialized(ServletContextEvent arg0) ...{ 16. BigBag.bag = new HashMap<String, Integer>(); 17. System.out.println("要进山了,准备好布袋子"); 18. } 19. 20. } |