JavaWeb——过滤器

  • Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
  • 它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

过滤器的使用

  1. 过滤器类实现Filter接口,则为过滤器类
    • doFilter()
      • 进行通用的逻辑处理代码
        • 进入Servlet前用户是否登录
        • 对请求和响应进行编码设置
      • 可继续指定请求的链式处理,可进入下一个filter或直接进入Servlet
        • Filter可能会有多个,因此执行链式处理时,如果后续还有Filter,则会先执行Filter,待所有的Filter处理完成后,再去执行Servlet
  1. 在Tomcat中注册
    • 注解
      • @WebFilter(String value)
        • value为该Filter可以处理的所有请求资源路径
          • /*为通配符
          • 多个参数WebFilter({"/servlet","/servlet2"})
    • XML配置文件
<web-app>
    <filter>
        <filter-name>filter1</filter-name>
        <filter-class>com.wry.javaweb.filter.Filter1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
//@WebFilter("")配置Filter可以处理的所有请求资源路径 /*为通配符
@WebFilter({"/servlet"})
public class Filter1 implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //这里可以进行通用的逻辑处理代码,如设置编码格式,检测是否登录
        System.out.println("进入Filter");
        //设置响应类型和编码
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setContentType("text/html;charset=UTF-8");
        //设置统一的响应编码
        servletResponse.setCharacterEncoding("UTF-8");

        //继续执行请求的链式处理,可能进入下一个Filter或直接进入Servlet
        /*
        *Filter可能会有多个,因此执行链式处理时,如果后续还有Filter,
        *则会先执行Filter,待所有的Filter处理完成后,再去执行Servlet
        * */
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

过滤器的生命周期

  • 初始化方法 init(FilterConfig filterConfig)
    • 开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
  • 拦截请求方法 doFilter()
    • 这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。
  • 销毁方法 destroy()
    • Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁。在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
  • 68
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值