• Java Filter


    五、  Java Filter

    1.  Java Filter 简介

    * Java Filter
    1. Java Filter(即:Java 过滤器):它能够对目标资源的请求或响应进行截取,即对服务器接受的请求资源或响应给浏览器的资源进行截取,通常用于拦截 Request 请求
    2. 在 Web 项目中可以有多个 Java 过滤器
    3. 应用场景:
    a.统一设置编码格式
    b.Session 管理
    c.权限管理,如:访问权限控制等
    d.资源管理,如:敏感字符过滤等
    4. 生命周期:从服务器启动直到关闭

    * Filter 的使用
    1. 在 web.xml 中配置过滤器:
    <filter>
    <filter-name>myFilter</filter-name>
    <filter-class>com.ncdx.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    注意:
    a.url-pattern:/* 表示拦截所有的请求:
    b.url-pattern:*.do 表示拦截所有以 ".do" 结尾的请求,一般进行模块拦截处理
    c.url-pattern:url 表示拦截指定 url 的请求。针对指定的 Servlet 进行拦截处理,可以实现对 Servlet 的保护

    2.  创建一个实现 Filter 接口的 Java 类,复写接口方法:
    1)public void init (FilterConfig filterConfig) throws ServletException;
    a.服务器启动即执行,资源初始化
    2)public void doFilter (ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException;
    a.拦截资源的方法体,在此方法中可以对目标资源进行处理
    b.调用放行方法:chain.doFilter(req, resp);
    3)public void destroy();
    a.服务器关闭即执行

    * Java 过滤器的工作原理如下图所示:
    1. 客户端发起请求到服务器,服务器接收到请求后,根据 URI 信息在 web.xml 中找到对应的过滤器执行 doFilter() 方法
    2. doFilter() 方法对此次请求处理后如果符合要求则调用 chain.doFilter(req, resp); 放行
    3. 放行后如果还有符合要求的过滤器则继续进行过滤,直到被对应的 Servlet 处理
    4. Servlet 完成对请求的处理后,也就是 service() 方法结束后,还需要继续返回到相应的 doFilter() 方法中执行
    5. 最后,把处理结果响应给客户端

    2.  Java 过滤器实例

    /**
     * 利用 Java 过滤器统一设置编码格式
     */
    public class FlowerFilter implements Filter{ @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { //设置请求编码格式 req.setCharacterEncoding("utf-8"); //设置响应编码格式 resp.setContentType("text/html;charset=utf-8"); //放行 chain.doFilter(req, resp); } } /* 在 web.xml 中的配置如下:*/ <filter> <filter-name>myFilter</filter-name> <filter-class>com.ncdx.filter.myFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 相关阅读:
    使用django开发一个web项目初试
    关于github一些比较重要的命令
    删除github repository的方法
    Node、npm与Vue配置与问题记录
    [记忆]5月第二周
    git am patch冲突解决步骤
    git丢弃本地修改的几种方式
    Log4j 2.X 漏洞解决
    Maven依赖范围Scope及传递性依赖
    Mysql创建事件定时任务
  • 原文地址:https://www.cnblogs.com/IT-LFP/p/11690766.html
Copyright © 2020-2023  润新知