全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法

前言

在编写过滤器、监听器、拦截器之前我们需要在spring-boot启动的类上加上注解@ServletComponentScan:

@SpringBootApplication
@ServletComponentScan
public class MySpringbootApplication {
  public static void main(String[] args) {
   SpringApplication.run(MySpringbootApplication.class, args);
  }
}

Servlet

spring-boot编写过滤器和spring中差不多,直接看代码:

@WebServlet(urlPatterns = "/serv")
public class MyServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("------------doget-------------");
    doPost(request, response);
  }
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("------------dopost-------------");
  }
}

其实也就是注解的不同而已:

@WebServlet(urlPatterns = "/serv")

过滤器(Filter)

在spring-boot里编写过滤器我们只需要实现javax.servlet.Filter

@WebFilter(filterName = "myFilter", urlPatterns = "/*")
public class MyFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("初始化过滤器");
  }
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("执行过滤器");
    filterChain.doFilter(servletRequest, servletResponse);
  }
  @Override
  public void destroy() {
    System.out.println("销毁过滤器!");
  }
}

然后添加一个注解:

@WebFilter(filterName = "myFilter", urlPatterns = "/*")

监听器 (Listener)

在上面,看了下过滤器的使用。其实监听器和拦截器就差不多了,直接上代码:

@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
  @Override
  public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    System.out.println("session 被创建");
  }
  @Override
  public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    System.out.println("session 被摧毁");
  }
}

我们发现只是注解发生了变化:

@WebListener

拦截器(Interceptor)

拦截器大致和上面差不多,不过有一点点不同。我们知道在web开发中,可以使用过滤器和拦截器来过滤外部的web请求。但是拦截器提供了更加细致的控制功能。主要有:请求之前、请求之后渲染之前、渲染之后、请求全部结束之后这四个步骤的拦截。

这里面使用拦截器主要有三个步骤

自定义拦截器,实现org.springframework.web.servlet.HandlerInterceptor

自定义WebAppConfigurer,继承WebMvcConfigurerAdapter

在自定义的WebAppConfigurer覆盖父类方法addInterceptors(InterceptorRegistry registry),并在方法中添加自己定义的拦截器

public class MyInterceptor implements HandlerInterceptor{
  @Override
  public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" : 在请求之前调用");
    return true;
  }
  @Override
  public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" :请求处理之后视图渲染之前使用");
  }
  @Override
  public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" :请视图渲染之后使用");
  }
}

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    // 多个拦截器组成一个拦截器链
    // addPathPatterns 用于添加拦截规则
    // excludePathPatterns 用户排除拦截
    registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    registry.addInterceptor(new MyInterceptor2()).addPathPatterns("/**");
    super.addInterceptors(registry);
  }
}

以上就是关于在spring-boot中如何定义过滤器、监听器和拦截器。关于他们的原理以及一些细节问题(如拦截器的拦截顺序),就不详述。有兴趣的可以去网上搜索。


# spring  # boot  # 编写Servlet  # Filter  # Listener  # Inter  # SpringBoot中使用Servlet三大组件的方法(Servlet、Filter、Listene  # springboot扫描自定义的servlet和filter代码详解  # SpringBoot项目找不到javax.servlet.Filter的问题及解决  # 拦截器  # 自定义  # 他们的  # 有一  # 主要有  # 看了  # 多个  # 就不  # 并在  # 有兴趣  # 只需要  # 可以使用  # 在上面  # 这里面  # 写过  # 就差  # 下过  # 结束之后  # 发生了  # 网上 


相关文章: 济南网站建设制作公司,室内设计网站一般都有哪些功能?  ,怎么在广州志愿者网站注册?  如何配置FTP站点权限与安全设置?  建站DNS解析失败?如何正确配置域名服务器?  c++ stringstream用法详解_c++字符串与数字转换利器  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  简单实现Android验证码  高端建站三要素:定制模板、企业官网与响应式设计优化  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何通过cPanel快速搭建网站?  如何设计高效校园网站?  如何在万网自助建站中设置域名及备案?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速搭建自助建站会员专属系统?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何在搬瓦工VPS快速搭建网站?  如何通过云梦建站系统实现SEO快速优化?  ui设计制作网站有哪些,手机UI设计网址吗?  设计网站制作公司有哪些,制作网页教程?  模具网站制作流程,如何找模具客户?  建站之星如何修改网站生成路径?  代购小票制作网站有哪些,购物小票的简要说明?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何快速选择适合个人网站的云服务器配置?  建站之星后台密码遗忘或太弱?如何重置与强化?  如何配置支付宝与微信支付功能?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何彻底删除建站之星生成的Banner?  高防服务器租用首荐平台,企业级优惠套餐快速部署  网站插件制作软件免费下载,网页视频怎么下到本地插件?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何在香港免费服务器上快速搭建网站?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  江苏网站制作公司有哪些,江苏书法考级官方网站?  建站之星如何开启自定义404页面避免用户流失?  如何在云指建站中生成FTP站点?  如何通过虚拟机搭建网站?详细步骤解析  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  南京网站制作费用,南京远驱官方网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  教学网站制作软件,学习*后期制作的网站有哪些?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  Android自定义listview布局实现上拉加载下拉刷新功能  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站主机选购指南与交易推荐:核心配置解析  网站制作大概多少钱一个,做一个平台网站大概多少钱?  浅析上传头像示例及其注意事项 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。