• spring mvc 的配置 及interceptor filter listener servlet 配置


    创建 三个类 

    分别实现 Filter  ServletContextListener  HttpServlet

    在springboot 启动类中@bean加入

    2 ,实现 ServletContextIntializer接口 

    @SpringBootApplication
    public class DemoApplication implements ServletContextInitializer{
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
        
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.addServlet("customServlet", new CustomServlet()).addMapping("/root");
            servletContext.addFilter("customfilter", new CustomFilter())
                            .addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "customServlet");
            servletContext.addListener(new CustomListener());
        }
    }

    3. 注解方式  主类加上@ServletComponentScan     给三个分别加上注解   

    @WebServlet(urlPatterns="/index", name="customServlet")
    public class CustomServlet extends HttpServlet{
       ....
    }
    
    @WebListener
    public class CustomListener implements ServletContextListener{
       ....  
    }
    
    @WebFilter(urlPatterns="/*")
    public class CustomFilter implements Filter{
      ...  
    }

    4.   自定义注解 实现  主类上加上此注解

    @Target(value = {ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Import(value = {FirstFilterConfiguration.class})
    public @interface EnableFirstFilter {
    
    }

    注册配置的bean(

    FirstFilterConfiguration.class

    public class FirstFilterConfiguration {
    
        public static final Integer ORDER = Integer.MIN_VALUE;    
        
        @Bean
        public FilterRegistrationBean firstFilter(){
      // 默认不需要的但是为了拦截过滤固定的页面 FilterRegistrationBean registration
    = new FilterRegistrationBean(); registration.setFilter(new FirstFilter()); registration.addUrlPatterns("/*"); registration.setName("firstFilter"); registration.setOrder(ORDER); return registration; } }
    public class FirstFilter implements Filter {
    
        @Override
        public void destroy() {
            
        }
    
        @Override
        public void doFilter(ServletRequest srst, ServletResponse srsp, FilterChain chain)
                throws IOException, ServletException {
            chain.doFilter(srst, srsp);
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            
        }
    
    }
    @Configuration
    @EnableWebMvc
    public class WebMvcConfig extends WebMvcConfigurerAdapter{
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            //addResourceHandler  对外暴露的路径       addResourceLocations 对内暴露路径
            registry.addResourceHandler("/aaserts/**").addResourceLocations("classpath:/assets/");
        }
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/ws").setViewName("/ws");
             registry.addViewController("/login").setViewName("/login");
             registry.addViewController("/chat").setViewName("/chat");
        }
        
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(demoInterceptor());
        }
        
        @Bean
        public DemoInterceptor demoInterceptor() {
            return new DemoInterceptor();
        }
        
        //自定义拦截器
        public class DemoInterceptor extends HandlerInterceptorAdapter{
            
            @Override //请求发生前执行
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                return true;
            }
            
            @Override  // 请求发生后执行
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                    ModelAndView modelAndView) throws Exception {
                super.postHandle(request, response, handler, modelAndView);
            }
        }
    }

     拦截器

  • 相关阅读:
    Bzoj 3624: [Apio2008]免费道路 (贪心+生成树)
    [ZJOI2008]杀蚂蚁antbuster 题解
    赛前集训的第一个小总结(希望?)
    Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)
    Luogu2150 寿司晚宴
    「考试总结2020-08-03」可期
    Luogu4747 [CERC2017]Intrinsic Interval
    BZOJ2839 集合计数
    Luogu5369 [PKUSC2018]最大前缀和
    Luogu5772 [JSOI2016]位运算
  • 原文地址:https://www.cnblogs.com/mxz1994/p/8215393.html
Copyright © 2020-2023  润新知