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);
            }
        }
    }

     拦截器

  • 相关阅读:
    Linux下C语言执行shell命令
    netstat实现原理
    安装docker
    springboot启动提示连接mysql报错:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
    linux删除用户报错:userdel: user prize is currently used by process 28021
    centos的6.9版本安装openjdk1.8
    centos的6.9版本安装mysql
    安装mysql报错:Can't find messagefile '/usr/share/mysql/english/errmsg.sys'和/usr/bin/mysqladmin: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or
    安装docker报错:https://download.docker.com/linux/centos/7/i386/stable/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22
    linux配置docker报错:ImportError: No module named yum
  • 原文地址:https://www.cnblogs.com/mxz1994/p/8215393.html
Copyright © 2011-2022 走看看