学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
2015-07-11 21:30
716 查看
过滤器Filter Filter和Lister是Servlet规范里的两个高级特性。不同于Servlet,它们不用于处理客户端请求,只用于对request、 response进行修改或者对context、session、request事件进行监听。 Filter意为滤镜或者过滤器,用于Servlet之外对request或者response进行修改。Filter提出了滤镜链的概念,一个 Filterchain包括多个F
1 什么是过滤器
过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的。
当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继承执行用户请求的Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。
其实可以这样理解,当用户请求某个Servlet时,Tomcat会去执行注册在这个请求上的Filter,然后是否“放行”由Filter来决定。可以理解为,Filter来决定是否调用Servlet!当执行完成Servlet的代码后,还会执行Filter后面的代码。
2 过滤器之helloworld
其实过滤器与Servlet很相似,我们回忆一下如果写的第一个Servlet应用!写一个类,实现Servlet接口!没错,写过滤器就是写一个类,实现Filter接口。
publicclassHelloFilterimplementsFilter{ publicvoidinit publicvoiddoFilter FilterChainchain)throwsIOException,ServletException{ System.out.println("HelloFilter"); } publicvoiddestroy } |
第二步也与Servlet一样,在web.xml文件中部署Filter:
<filter> <filter-name>helloFilter</filter-name> <filter-class>cn.itcast.filter.HelloFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>/index.jsp </filter-mapping> |
OK了,现在可以尝试去访问index.jsp页面了,看看是什么效果!
当用户访问index.jsp页面时,会执行HelloFilter的doFilter()方法!在我们的示例中,index.jsp页面是不会被执行的,如果想执行index.jsp页面,那么我们需要放行!
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{ System.out.println("filterstart..."); chain.doFilter(request,response); System.out.println("filterend..."); } |
有很多同学总是错误的认为,一个请求在给客户端输出之后就算是结束了,这是不对的!其实很多事情都需要在给客户端响应之后才能完成!
相关文章推荐
- eclipse android 设置及修改生成apk的签名文件
- 怎么用Eclipse开发STM32
- 浅谈Java分页技术
- Spring整合Mybatis的三种方式
- 关于Java面向对象的初体验
- 关于struts2中关于值栈的总结
- Java - Thinking in Java 第5章 习题
- 【JAVA学习】(二)JAVA 多线程同步
- java中的stack
- java面向对象学习心得
- Java学习笔记03 俄罗斯方块界面
- JAVA基础-字符串
- A/B Problem(java除法)
- 【JAVA学习】(一)JAVA 线程
- Java GC、新生代、老年代
- java基础——“”equals“”与 “”==“” 的区别
- Java String类练习题
- myeclipse、eclipse中项目复制后(可能无法访问)注意事项 .
- javaWeb项目出现java.lang.reflect.InvocationTargetException
- 在用eclipse或者myeclipse时遇到端口被占用问题解决方法