JavaWeb的三大组件之过滤器

版权声明:转载请说明去处,文章仅供学习参考 https://blog.csdn.net/qq_38487155/article/details/82659394

JavaWeb过滤器

过滤器可以让请求得到目标资源,也可以不让请求达到!
         * 过滤器有拦截请求的能力,且过滤器是单例模式!

过滤器的实现方法:

1. 写一个类实现Filter接口(注意导入的是:javax.servlet.Filter接口)
2. 在web.xml中进行配置,以下为具体配置格式

  <filter>
  	<filter-name>helloFilter</filter-name>
  	<filter-class>包名.类名</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>helloFilter</filter-name>
  	<url-pattern>/要过滤的资源(/*时为过滤所有资源)</url-pattern>
  </filter-mapping>

Filter接口的方法:

              void init(FilterConfig):创建Filter后执行,在服务器启动时创建

                    * FilterConfig参数-->与ServletConfig相似
                               * 获取初始化参数:getInitParameter()
                               * 获取过滤器名称:getFilterName()
                               * 获取appliction:getServletContext()
              void destory():过滤器销毁之前执行!在服务器关闭时销毁
              void doFilter(ServletRequest,ServletResponse,FilterChain):每次过滤时都会执行,判断是否通过过滤器

                      * FilterChain参数
                                * doFilter(ServletRequest, ServletResponse):通过当前过滤器,若有多个过滤器则到达下一过滤器。

过滤器的过滤顺序:根据web.xml的<filter-mapping>的位置从上到下过滤,与过滤资源无关(即与<url-pattern>值无关)。

过滤器的四种过滤方式:需要在<filter-mapping>里配置以下标签,四种过滤方式可以随意搭配使用来面对不同的情况

  <dispatcher>REQUEST</dispatcher>:过滤请求,没有设置时的默认方式,当设置了其它过滤方式时会

                                                                  使用其它过滤方式,默认过滤方式消失。

 <dispatcher>FORWARD</dispatcher>:过滤转发

 <dispatcher>INCLUDE</dispatcher>:过滤包含

 <dispatcher>ERROR</dispatcher>:   过滤错误

 

猜你喜欢

转载自blog.csdn.net/qq_38487155/article/details/82659394