一、过滤器
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
一般与spring架构一起用在以下几个地方:
1.1 处理字符写入数据库编码问题,在web.xml中配置一下代码
1 <filter> 2 <filter-name>Encoding</filter-name> 3 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 4 <init-param> 5 <param-name>encoding</param-name> 6 <param-value>utf-8</param-value> 7 </init-param> 8 </filter> 9 <filter-mapping>10 <filter-name>Encoding</filter-name>11 <url-pattern>/*</url-pattern>12 </filter-mapping>
View Code
1.2 处理与mongodb整合出现的初始化先后加载问题,使用Filter完成代理功能
1 <!-- 告诉ContextLoaderListener叫在spring的配置文档的位置--> 2 <context-param> 3 <param-name>contextConfigLocation</param-name> 4 <param-value> 5 classpath:spring-shiro-web.xml, 6 /WEB-INF/spring-servlet.xml 7 </param-value> 8 </context-param> 9 10 <filter>11 <filter-name>shiroFilter</filter-name>12 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>13 <init-param>14 <param-name>targetFilterLifecycle</param-name>15 <param-value>true</param-value>16 </init-param>17 </filter>18 <!-- Make sure any request you want accessible to Shiro is filtered. /* catches all -->19 <!-- requests. Usually this filter mapping is defined first (before all others) to -->20 <!-- ensure that Shiro works in subsequent filters in the filter chain: -->21 <filter-mapping>22 <filter-name>shiroFilter</filter-name>23 <url-pattern>/*</url-pattern>24 </filter-mapping>25 26 <!-- 在tomcat启动的时候优先加载spring的配置文档 -->27 <listener> 28 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-c<span style="color:transparent">本文来源gaodai#ma#com搞*!代#%^码网%</span>lass> 29 </listener>
View Code
过滤器生命周期的四个阶段:
<span style="font-size: 14px">1、实例化:Web容器在部署Web应用程序时对所有过滤器进行实例化。Web容器回调它的无参构造方法。</span><br /><span style="font-size: 14px">2、初始化:实例化完成之后,马上进行初始化工作。Web容器回调init()方法。</span>
3、过滤:请求路径匹配过滤器的URL映射时。Web容器回调doFilter()方法——主要的工作方法。
4、销毁: Web容器在卸载Web应用程序前,Web容器回调destroy()方法。