创建 三个类

分别实现 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);
}
}
}

拦截器

spring mvc 的配置 及interceptor filter listener servlet 配置的更多相关文章

  1. Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)

    拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现, ...

  2. 2017.3.31 spring mvc教程(二)核心流程及配置详解

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  3. Spring MVC拦截器(Interceptor )详解

    处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. 常见应用场 ...

  4. Spring MVC前台使用html页面作为视图,配置静态资源后Controller控制器不起作用的解决办法

    1.Spring MVC搭建项目的时候,想使用html页面作为前端的视图,你会发现html页面不能访问,原因是由于Spring拦截器将其拦截寻找控制器的缘故,解决办法就是配置静态资源: <mvc ...

  5. springboot之filter/listener/servlet

    简介 SpringBoot可以简化开发流程,但是在其中如何使用传统的J2EE servlet/listener/filter呢 @Bean配置 在Configuration类中加入filter和ser ...

  6. Javaweb里面的filter,listener,servlet

    Filter 1Filter是什么:是过滤器简称 2Filter有什么作用:在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装 ...

  7. wed.xml 中 filter、servlet 配置格式

    1.wed.xml 中 filter 配置格式 <filter> <filter-name>filterName</filter-name> <filter- ...

  8. java之spring mvc之Restful风格开发及相关的配置

    1. Restful : 表征状态状态转移. 传统 : url : http://localhost:8080/usersys/delete.do?user.id=12 Restful 风格:url ...

  9. Spring MVC之视图解析器和URL-Pattern的配置方案

    上期讲解了第一入门案例之后接下来了解一下视图解析器与URL-Pattern的配置方案 先来说视图解析器,在上次博客文章中我们完成了入门案例,接下来我们就在上一个例子中完善一下体出视图解析器 <? ...

随机推荐

  1. CF1208C

    CF1208C 这场杜老师大战tourist的比赛怎么这么多人类智慧题... 题意: 构造一个 $ n \times n $ 的矩阵,使得该矩阵每一行与每一列的元素的异或和全部相等. 解法: 异或的神 ...

  2. Raspberry Pi 4B Web服务器配置

    目录 1. 安装nginx 2. 安装PHP 3. 修改nginx配置文件 4. 安装MariaDB数据库 参考资料1:树莓派4B安装PHP7.3 + Nginx + MySQL 教程 参考资料2:[ ...

  3. 文本处理三剑客之awk

    简介 awk是一种处理文本文件的语言,是一个强大的文本编辑工具.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行各种分析处理. gawk 用法:gawk [optio ...

  4. 求N个集合的并集

    做容器放置实验时,需要计算下载N个Images的总size(Image之间可能会有可以共享的size). 一开始想到的是Images两两之间求交集,然后慢慢推到了容斥原理...时间复杂度大概就是O(N ...

  5. 使用vagrant一键部署本地php开发环境(一)

    一:我们为什么需要用这玩意 我们在开发中经常会面临的问题:环境不一致,有人用Mac有人用Windos还有几个用linux的,而我们的服务器都是linux.    在我本地是可以的啊,我测了都,没有问题 ...

  6. CentOS7下安装php-redis扩展

    yum -y install php70w-pecl-redis

  7. kotlin中抽象类

    抽象类和接口很类似,抽象类不能被实例化需要使用abstract 关键字声明,抽象类实现接口后,接口中没有函数体的函数可以不重写,接口中的这些方法就自动被继承到实现接口的抽象类中,称为抽象方法 pack ...

  8. 004-jdk-数据结构-ArrayList、LinkedList

    一.ArrayList概述 数组集合,无容量限制,非线程安全 ArrayList.Vector是线性表,使用Object数组作为容器去存储数据的,添加了很多方法维护这个数组,使其容量可以动态增长,极大 ...

  9. setInterval、clearInterval的回调函数,实现函数间调用的先后顺序

    定义: var waitUnitil=function (untillCallBack, nextStepCallBack, count) { if (count == null) { count = ...

  10. 2018.04.03 ABAP OLE操作整理

    OLE整理: 1.定义,分别对应EXCEL,workbook(工作簿),sheet(页),单元格 DATA: EXCEL_OBJ TYPE OLE2_OBJECT, BOOK_OBJ TYPE OLE ...