大学时代都没有接触过Java Web开发,有做的也只是用php做的一个acm的在线程序设计判题系统。所以对这方面的只是欠缺的很多,实习的时候对java的学习的也是限于J2SE,所以,有必要开始对Java web从头开始学习下。
今天看了imooc上关于java filter 的 一个课程,了解了以前以前不清楚的。
过滤器工作在服务器端。工作原理如下图
实例化 ,根据web.xml
过滤器的配置
概述
过滤器是工作在服务器端的只提供过滤功能。本身并不提供请求和相应的功能。
方法说明
init
/** * 过滤器的初始化方法,web容器创建过滤器实例后调用这个方法,这个方法中可以读取 * web.xml文件中过滤器的参数 * @param filterConfig * @throws ServletException */
doFilter
/** * 这个方法完成实际的过滤操作,这个地方是过滤器的核心方法,当用户请求访问与过滤器关联的URL的时候web容器将先调用过滤器的doFilter * 方法FilterChaein参数可以调用chain.doFilter方法将请求传递给下下个过滤器或者是转发重定向到其他资源。 * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException */
destroy
/** *在销毁过滤器实例的时候调用这个方法,一般也用不到。 */
Q&A
Q: 过滤器是否能改变用户请求的web资源呢?也就是能否改变用户请求的路径
A: 可以,过滤器可以根据用户的状态改变用户的访问资源。
Q: 过滤器能否直接返回用户数据,能不能直接处理用户请求。
A: 不可以,过滤器不是一个标准的Servlet要通过转发才能处理用户逻辑
最后附上练习的demo:
https://code.youkuaiyun.com/cqlf__/filter-test/tree/master