- 什么是web过滤器
定义:过滤器是一个服务器端组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。 - 过滤器的工作原理
在没有过滤器的情况下,用户可以直接访问Web资源;
但是有过滤器的情况下用户不能直接访问Web资源,而是用户发送请求之后,先到过滤器,然后过滤器判断用户请求是否合理,合理的话过滤器才会将用户请求发送至Web资源;
Web资源处理完请求之后发送资源响应到过滤器,过滤器才把web资源响应发送给用户。 - 过滤器的生命周期
实例化————在Web容器通过Web.xml配置启动自动加载过滤器,只会启动一次
初始化————过滤器启动成功,加载一些初始化信息,调用过滤器中的init()方法,进行相关操作,这个也是只执行一次
过滤————调用过滤器中的doFilter()方法。执行多次,凡是过滤器获得请求都会执行doFilter()方法。
销毁————调用destroy()方法,是在web容器关闭的时候执行,也即服务器关闭的情况下执行。 - 实例化创建一个过滤器
创建的过滤器类实现java.servlet.Filter接口,要实现三个方法,三个方法的作用含义在下面分别介绍:
init()——过滤器的初始化方法,web容器创建过滤器实例后将调用这个方法。这个方法可以读取web.xml文件中过滤器的参数
doFilter()——这个方法完成实际的过滤器操作,是过滤器的核心方法。当用户请求访问和过滤器关联的URL时,web容器先调用过滤器的doFiler()方法。FilterChain参数可以调用chain.doFilter()方法,将请求传给下一个过滤器(或者目标资源),或者利用转发,重定向将请求转发到其他资源。
destroy()——Web容器在销毁过滤器实力前调用该方法,在这个方法中可以释放过滤器占用的资源。 - web.xml中配置过滤器
<filter>
<filter-name>FilterTest(过滤器的类名)</filter-name>
<filter-class>cn.edu.nju.filter.FilterTest(过滤器类完整的名字包括包名)</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterTest(过滤器名,和上面那个标签中的filter-name一样)</filter-name>
<url-pattern>/*(和该过滤器关联的.jsp文件,'/'代表当前路径,后面的*代表所有的.jsp页面,自己也可以指定特定的jsp页面和该过滤器关联,那么没有指定的页面就不会调用该过滤器)</url-pattern>
</filter-mapping>
对于指定的jsp页面和过滤器关联,那么在执行相应的jsp页面时就会调用过滤器里的相应方法。
以上就是和过滤器相关的基础知识!