javaWeb过滤器

过滤器

定义:过滤器是一个服务器端的组件,他可以截取用户端的请求与相应信息,并对这些信息过滤。

过滤器用来过滤用户请求

常用用途:过滤未登录的用户,跳转错误页面

工作原理
1、过滤器在web容器启动时就已存在
2、用户发送请求,过滤器接收请求
3、过滤器判断后发送给web资源
4、web资源响应发送至过滤器
5、过滤器将web资源的响应发送给用户

生命周期
实例化操作:在web.xml里配置,在web容器启动时实例
初始化操作:调用过滤器的init()方法,和实例化一样只执行一次
过滤操作:调用过滤器的doFilter()方法,会执行多次
销毁操作:调用过滤器的destroy()方法,在web容器关闭时执行一次

//继承接口Filter
public class FirstFilter implement Filter{
    @Override
    public void destroy(){
      //web容器在销毁过滤器实例前调用的方法,释放过滤器占用的资源(多数情况下用不到)
    }
    @Override
    public void doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg2)throws IOException,ServletException{
      //这个方法完成实际的过滤操作。是过滤器的核心方法。当用户请求访问与过滤器关联的URL时,web容器将先调用doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发到其他资源。
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException{
      //这是初始化方法,Web容器创建过滤器实例后将调用这个方法,这个方法中可以读取web.xml文件中过滤器的参数
    }
}
web.xml
<filter>
    <filter-name>Filter的名字filter-name>
    <filter-class>Filter的类名称filter-class>
    <init-param><description>描述信息可以省略或者放在此处description>
    <param-name>参数名称param-name>
    <param-value>参数的值param-vlaue>
    init-param>
filter>

<filter-mapping>
    <filter-name>Filter的名字filter-name>
    <url-pattern>URLurl-pattern>
    <-- 当用去请求与URL匹配时,触发过滤器工作 -->
    <dispatcher>dispatcher>
    <-- 可以是没有或多对值:REQUEST,INCLUDE,FORWARD,ERROR未设定时默认值为REQUEST -->
filter-mapping>

你可能感兴趣的:(java,web)