zoukankan      html  css  js  c++  java
  • spring boot配置拦截器和过滤器

    拦截器

    自定义一个普通的拦截器

    这里就跟以前一样创建一个普通的拦截器

    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Component
    public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("我的拦截器"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }

    创建配置类

    创建一个配置类,在该配置类中添加相关的拦截器,这里可以配置多个拦截器,该类上添加@Configuration类,这样会被spring容器创建管理。

     

    /**
     * 拦截器配置类
     */
    @Configuration//表示该类会被spring容器创建
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration r1 = registry.addInterceptor(new MyInterceptor());
            //添加拦截请求
            r1.addPathPatterns("/*");
            //添加不拦截的请求
            r1.excludePathPatterns("/login");
    
            //上面跟下面的写法是一样的
            //registry.addInterceptor(new PermissionInterceptor()).addPathPatterns("/*").excludePathPatterns("/login");
        }
    }

    之后在浏览器中输入相应的url进行测试即可。 

    过滤器

    方式一

    创建普通的filter

    @WebFilter(urlPatterns="/*")
    public class MyFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            System.out.println("进入filter过滤器");
            chain.doFilter(request, response);
        }
        @Override
        public void destroy() {
        }
    }

    在入口方法上添加注解配置filter所在的包,@ServletComponentScan会扫描servlet相关的注解,比如@WebServlet、@WebFilter、@WebListener。

    @SpringBootApplication
    @ServletComponentScan(basePackages={"com.monkey1024.filter"})
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

    方式二

    创建配置类配置过滤器,这里的@Bean相当于以前spring配置文件中的bean标签

    @Configuration
    public class FilterConfig {
    
    
        @Bean
        public FilterRegistrationBean myFilterRegistration() {
            FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());
            registration.addUrlPatterns("/*");
            return registration;
        }
    }

    配置servlet

    方式一

    创建普通的servlet

    @WebServlet("/myServlet")
    public class MyServlet extends HttpServlet {
        private static final long serialVersionUID = -4134217146900871026L;
        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.getWriter().print("hello word");
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doGet(req, resp);
        }
    }

    在主类上加入注解并配置servlet所在的包

    @SpringBootApplication
    @ServletComponentScan(basePackages="com.monkey1024.servlet")
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

    方式二

    @Configuration
    public class ServletConfig {
        @Bean
        public ServletRegistrationBean myServletRegistrationBean(){
            ServletRegistrationBean registration = new ServletRegistrationBean(new MyServlet(), "/servlet/myServlet");
            return registration;
        }
    }

     

  • 相关阅读:
    Java学习之分支结构---判断语句:if语句和switch语句
    CSS知识点之字体大小属性font-size
    CSS小知识点一
    loadRunner之参数化,对用户名和密码进行参数化,并打印输出---实际操作:用户登录的账号用随机值来登录
    LoadRunner 场景运行error的几种情况
    loadrunner使用随机值
    loadrunner报错-持续更新
    关联及web_reg_save_param
    jenkins 提示No emails were triggered
    环境部署(八):jenkins配置邮件通知
  • 原文地址:https://www.cnblogs.com/xiaowangtongxue/p/12691858.html
Copyright © 2011-2022 走看看