zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }

     拦截器

  • 相关阅读:
    CDB命令方式创建和删除
    cdb和pdb的启停
    python 读取blob
    c# 读取blob数据
    python 为什么没有自增自减符
    程序异常重启代码
    便捷辅助开发工具
    正则表达式带例子详解
    名语中看代码
    c# 画一个报告
  • 原文地址:https://www.cnblogs.com/mxz1994/p/8215393.html
Copyright © 2011-2022 走看看