JavaWeb学习——简单学习过滤器Filter

JavaWeb学习——过滤器Filter学习

Filter过滤器简介

Filter实际上就是对web资源进行拦截,做一些处理后交给Servlet处理,相当于在客户端和服务端资源文件之间加了一层过滤网。在过滤器种经过逻辑判断将不符合要求的资源过滤掉。一般情况下是对请求request的过滤,当然也可以对相应进行过滤

原理图:
在这里插入图片描述
过滤器的一般应用场景

  • 统一设置编码格式
  • 设置权限访问
  • 敏感字符过滤
2.Filter具体是怎么实现拦截的
  • Filter接口种有一个doFilter方法,当我们写好Filter并设置对哪个web资源进行拦截后,WEB服务器每次在调用WEB资源的service()方法之前都会先调用doFilter方法。该方法中可以决定是否过滤掉用户的请求。
  • web服务器调用Filter的doFilter方法时,会传递一个FilterChain的对象进来,它也提供了一个doFilter方法,开发人员根据需求决定是否调用此方法(chain.doFilter(request,
    response);)。若调用,web服务器通过调用web资源的service方法,用户就可以访问到请求的资源,否则就访问不了。
3.Filter开发的基本步骤
  • ①编写Java类实现Filter接口,实现doFilter方法

    package com.muhan.Filter;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class myFilter implements Filter {
    
        //过滤器初始化方法
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器初始化");
        }
    
        //主要业务逻辑
        @Override
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
    
            //把ServletRequest强转成HttpServletRequest
            HttpServletRequest request = (HttpServletRequest) req;
            //把ServletResponse强转成HttpServletResponse
            HttpServletResponse response = (HttpServletResponse) resp;
            //设定字符编码
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
    
            System.out.println("myFilter执行前");
            filterChain.doFilter(request, response);
            System.out.println("myFilter执行后");
        }
    
        @Override
        public void destroy() {
            System.out.println("过滤器销毁了");
        }
    }
    
    
  • ②在web.xml中配置Filter

        <!--配置过滤器-->
        <filter>
            <filter-name>myFilter01</filter-name>
            <filter-class>com.muhan.Filter.myFilter</filter-class>
        </filter>
        
        <!--映射过滤器-->
        <filter-mapping>
            <filter-name>myFilter01</filter-name>
            <!--/*表示拦截所有请求-->
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值