• JavaWeb的三大组件之过滤器


    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>:   过滤错误

     

  • 相关阅读:
    分页得到查询总数的方法 mysql
    input[type="file"] change事件第二次不触发
    小程序post请求,后台接收不到数据的解决方法
    Docker安装Kibana
    Docker安装ElasticSearch
    Docker安装Redis
    Docker安装Tomcat
    Docker安装 Nginx
    mysql服务设置远程连接 解决1251 client does not support ..问题
    Docker 安装MySQL容器
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236311.html
Copyright © 2020-2023  润新知