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、执行结果

     

  • 相关阅读:
    Struts2升级注意事项
    使用HttpClient获取网页源码
    The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory解决方案
    IBatis常见错误集锦
    JPush极光推送Java服务器端API
    JS去空trim
    Jquery常用操作
    适配器模式(Adapter)
    常见数据库设计(3)——历史数据问题之多记录变更
    VS2008 工具箱都是textbox(报表设计时)
  • 原文地址:https://www.cnblogs.com/Eleven-Liu/p/11006177.html
Copyright © 2011-2022 走看看