课程名称:Java Web开发技术应用——过滤器
课程章节:第一章-第五章
课程讲师:Fcming
课程内容:
1.定义
是一个服务器端的组件,它可以截取用户端请求和响应信息,并对这些信息过滤。
2.过滤器工作原理
3.过滤器生命周期
实例化:在Web容器启动时,只实例化一次
初始化:加载一些初始化信息,调用init()方法,初始化只执行一次。Web容器创建过滤器实例后将调用这个方法,这个方法可以读取web.xml文件中过滤器参数。
过滤:执行doFilter()方法。这个方法完成实际的过滤操作。这个地方是过滤器的核心方法。当用户请求访问与过滤器关联的URL时,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器或者目标资源,或利用转发,重定向将请求转发到其他资源。
销毁:执行destory()方法,在Web容器关闭时执行。Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。
4.Web.xml配置
<filter> <filter-name>Encoding</filter-name> <filter-class>com.imooc.sm.global.EncodingFilter</filter-class> 初始化参数,可以是零对或者多对 <init-param> <description>描述信息可以忽略或放在此位置</description> <param-name>ENCODING</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Encoding</filter-name> 当用户请求的URL和指定的URL匹配时,将触发过滤器工作 <url-pattern>/*</url-pattern> 可以是零对或者多对 值为REQUEST,INCLUDE,FORWARD,ERROR 默认为REQUEST <dispatcher>REQUEST</dispatcher> </filter-mapping>
5.过滤器链
服务器会按照web.xml中过滤器定义的先后顺序组装成一条链
6.过滤器分类
Servlet2.5分为:
REQUEST:用户直接访问页面时,Web容器将会调用过滤器
FORWARD:目标资源是通过getRequestDispatcher("main.jsp").forward(request,response)访问时,该过滤器被调用
INCLUDE:目标资源是通过getRequestDispatcher("main.jsp").include(request,response)访问时,该过滤器被调用
ERROR:目标资源是通过声明式异常处理机制调用时,过滤器将被调用
Servlet3.0加入:
ASYNC:支持异步处理
@WebFilter用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体属性配置将相应的类部署为过滤器
课程收获: