Java Web 过滤器

11 篇文章 0 订阅

Java Web 过滤器

 

一、过滤器的作用:

 

Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术可以对web服务器管理的所有web资源:Jsp,Servlet, 静态图片文件或静态html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、验证用户是否登录、过滤敏感词汇、压缩响应信息等一些高级功能。

 

二、过滤器使用

 

         使用过滤器必须实现接口Filter,并实现其三个方法:

         void init(FilterConfig filterConfig){}

    init 方法初始化过滤器

void doFilter(ServletRequest request, ServletResponse response,  FilterChain chain){}

doFilter 方法进行过滤器业务操作,其中有一个参数FilterChain chain,用于将用于请求抛向下一个过滤器,或服务器(当没有下一个过滤器的时候,过滤器执行先后顺序是根据web.xml里配置的先后顺序进行的)。

void destroy(){}

destroy 方法用于在退出过滤器之前释放资源。

 

下面我们来实现字符编码过滤器

 

首先需要创建过滤器类,如下代码:

package com.filter;

 

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

import javax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

 

public classCharacterEncodingFilter implements Filter {

   

    /*存放Web.xml中的参数*/

    private Stringencoding = "";

   

    /*初始化过滤器类*/

    public void init(FilterConfigconfig) throws ServletException {

       //获取web.xml文件中配置的过滤器参数encoding

       this.encoding =config.getInitParameter(encoding);

    }

 

    /*过滤器具体实现*/ 

    public voiddoFilter(ServletRequest request,

ServletResponse response,

                         FilterChain chain)

throws IOException, ServletException {

       if(this.encoding!=null){

           //设置请求字符编码

           request.setCharacterEncoding(this.encoding);

       }

       //将请求抛向下一个过滤器或服务器

       chain.doFilter(request,response);

    }

   

    /*释放过滤器资源*/

    public void destroy() {

       this.encoding =null;

    }

}

 

其次,在web.xml中配置过滤器

<!-- web.xml中声明过滤器 -->

    <filter>

      <filter-name>CharacterEncodingFilter</filter-name><filter-class>com.filter.CharacterEncodingFilter</filter-class>

        <!-- 为过滤器初始化一个参数 -->

        <init-param>

           <param-name>encoding</param-name>

           <param-value>UTF-8</param-value>

       </init-param>

    </filter>

    <!-- 过滤器拦截的请求URL -->

    <filter-mapping>

        <filter-name>CharacterEncodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

</filter-mapping>

 

以上就完成了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值