zoukankan      html  css  js  c++  java
  • Spring Boot 知识笔记(Filter过滤器)

      Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息、过滤不安全的输入等一些高级功能。
      Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,如下所示:

      

    举例:

    1、创建一个Get restful接口

        @GetMapping(value="/v2/get_user_info")
        public Object getUserInfo(String name,int age){
            return "name:"+name+"
    "+"age:"+age;
        }

    2、创建一个filter,判断上述的name参数值是否等于admin,等于admin正常返回,不等于admin,重定向到myerror.html

    package net.Eleven.demo.filter;
    
    
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    
    //@Component
    //@ServletComponentScan
    @WebFilter(urlPatterns = "/v2/*",filterName = "loginFilter")
    
    public class LoginFilter implements Filter {
        //容器加载时被调用
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("init loginFilter");
        }
        //请求被拦截的时候调用
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            String username = request.getParameter("name");
            if ("admin".equals(username)){
                filterChain.doFilter(servletRequest,servletResponse);
            }
            else {
                response.sendRedirect("/myerror.html");
    
            }
        }
        @Override
        public void destroy() {
            System.out.println("destroy loginFiler");
            return;
    
        }
    }
    • 创建的filter要使用@WebFilter(urlPatterns = "/v2/*",filterName = "loginFilter")注解,urlPatterns支持正则,filtName表示filter的名称
    • 创建的filter要实现Filter接口,并重写Filter接口的三个方法

    3、执行结果

     

  • 相关阅读:
    POJ-1189 钉子和小球(动态规划)
    POJ-1191-棋盘分割(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
  • 原文地址:https://www.cnblogs.com/Eleven-Liu/p/11006177.html
Copyright © 2011-2022 走看看