知识大全 戏说java web开发中的listener和filter

Posted 红薯

篇首语:人生处万类,知识最为贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 戏说java web开发中的listener和filter相关的知识,希望对你有一定的参考价值。

  今天在公司看到有同事在写filter 晚上一个人在家无聊 就想聊聊这个东西

  jsp开发中的监听器和过滤器 这两个东西要说起来 很大 很繁 今天我想用一个现实的例子 来说明这两个东东的作用

  案例描述

  假设你平时生活在北京 有天你去一个很边远很贫穷的山村体验生活 到了那个山村后 你想要什么东西 村长都会同意 然后安排村民送给你 但是有一点例外的是 一旦你问他们要钱 村长坚决不给 还会带领村民把你打回北京去

  你为了从村民那里带走尽量多的东西 所以你在出发前准备了一个大袋子 希望把村民给的东西都放到袋子里 然后你在回到城市后 这个袋子就没用了 你就把这个袋子给扔了

  代码模拟

  恩 我想用如下简单代码来模拟以上案例 大家可以想一下监听器扮演者什么角色?过滤器扮演什么角色?

   新建一个java web project

   默认的index jsp页面上加上两个链接 模拟要村民要红薯和要钱 如下

  <>

  <body>

  <h >欢迎掉入无名村 哈哈</h ><br>

  <a>给红薯</a><br/>

  <a>给钱</a><br/>

  </body>

  </>

   新建一个大布袋类 BigBag java 如下

  packagechb demo web;

  importjava util HashMap;

  publicclassBigBag

  publicstaticHashMap<String Integer>bag;//村民的东西就放在这个袋子里

  

   新建一个监听器 MyListener java 如下

  packagechb demo web;

  importjava util HashMap;

  importjavax servlet ServletContextEvent;

  importjavax servlet ServletContextListener;

  publicclassMyListenerimplementsServletContextListener

  publicvoidcontextDestroyed(ServletContextEventarg )

  BigBag bag=null;

  System out println( 回城了 让掉烂袋子吧 );

  

  publicvoidcontextInitialized(ServletContextEventarg )

  BigBag bag=newHashMap<String Integer>();

  System out println( 要进山了 准备好布袋子 );

  

  

   再新建一个过滤器 MyFilter java 如下

  packagechb demo web;

  importjava io IOException;

  importjavax servlet Filter;

  importjavax servlet FilterChain;

  importjavax servlet FilterConfig;

  importjavax servlet ServletException;

  importjavax servlet ServletRequest;

  importjavax servlet ServletResponse;

  importjavax servlet HttpServletRequest;

  importjavax servlet HttpServletResponse;

  publicclassMyFilterimplementsFilter

  publicvoiddestroy()

  

  publicvoiddoFilter(ServletRequestrequest ServletResponseresponse

  FilterChainchain)throwsIOException ServletException

  HttpServletRequestreq=(HttpServletRequest)request;

  HttpServletResponsersp=(HttpServletResponse)response;

  if(req getRequestURI() toString() endsWith( money jsp ))

  //什么时候有过钱啊?打回北京去

  rsp sendRedirect( gohome jsp );

  System out println( 什么时候有过钱啊 滚回家去! );

  return;

  elseif(req getRequestURI() toString() endsWith( hongshu jsp ))

  if(ntainsKey( hongshu ))

  intnum=BigBag bag get( hongshu )+ ;

  BigBag bag put( hongshu num);

  System out println( 得到第 +num+ 个红薯 );

  else

  BigBag bag put( hongshu );

  System out println( 得到第 个红薯 );

  

  //村长同意了 下面就是到村民家中拿了

  chain doFilter(request response);

  else

  //只要不要钱就行 放行

  chain doFilter(request response);

  

  

  publicvoidinit(FilterConfigfilterConfig)throwsServletException

  

  

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

  <?xmlversion= encoding= UTF ?>

  <web appversion= xmlns=

  xmlns:xsi= instance

  xsi:schemaLocation=

   app_ _ 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>

  <wele file list>

  <wele file>index jsp</wele file>

  </wele file list>

  </web app>

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

  分析结果

  我们会观察到如下结果

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

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

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

  怎么样?有点明白了?

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

cha138/Article/program/Java/hx/201311/27012

相关参考

知识大全 Java Web应用开发中的一些概念

JavaWeb应用开发中的一些概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概念一直是学习

知识大全 Java和PHP在Web开发方面的比较

Java和PHP在Web开发方面的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  比较PHP

知识大全 java与其他web开发编程语言的比较

  现在的软件开发语言太多了尤其现在的所有软件都基本是B/S结构的所以对WEB开发语言的使用也就越来越多搞了几年的JAVA开发 这段时间也抽了点时间玩玩dotnetperlphp等其它WEB

知识大全 JAVA WEB开发中路径问题的总结

JAVAWEB开发中路径问题的总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用Java开发

知识大全 Java Listener模式

JavaListener模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  每种语言都有自己回调

知识大全 现代Java Web开发架构分析

现代JavaWeb开发架构分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在本文中我将集中讨

知识大全 java web开发 有哪些经典的开原始码,适合初学者来读和学习

javaweb开发有哪些经典的开原始码,适合初学者来读和学习?初学者没必要总找什么经典程式码看,初学任务是掌握基本语法,多做练习,掌握基础给你经典程式码,你也看不出他经典在哪里就像一个不会开车的人让他

知识大全 利用Stripes实现Java Web开发

利用Stripes实现JavaWeb开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Stri

知识大全 进行Java Web项目开发需要掌握的技术

进行JavaWeb项目开发需要掌握的技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java

知识大全 Java Web开发Tomcat中三种部署项目的方法

JavaWeb开发Tomcat中三种部署项目的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!