当前位置: 首页 > news >正文

SpringBoot-Web开发之Web原生组件注入

使用Servlet API

  • Web三大原生组件:Servlet、Filter、Listener
  • 启动类上使用注解@ServletComponentScan(basePackages = "com.my.admin")
    • 使用注解的方式注入,需要开启扫描
  • @WebServlet()
    • 执行后会发现直接响应,没有经过Spring的拦截器
//处理/my请求
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("66666");}
}
  • @WebFilter
@Slf4j
//拦截所有请求在servlet中是/*,spring中是/**
@WebFilter(urlPatterns={"/css/*","/images/*"}) 
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("MyFilter初始化完成");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info("MyFilter工作");chain.doFilter(request,response);}@Overridepublic void destroy() {log.info("MyFilter销毁");}
}
  • @WebListener
@Slf4j
@WebListener
public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {log.info("MySwervletContextListener监听到项目初始化完成");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {log.info("MySwervletContextListener监听到项目销毁");}
}

RegistrationBean

  • 不使用注解注入,使用配置类
  • ServletRegistrationBean
  • FilterRegistrationBean
  • ServletListenerRegistrationBean
@Configuration(proxyBeanMethods = true)
public class MyRegistConfig {@Beanpublic ServletRegistrationBean myServlet(){MyServlet myServlet = new MyServlet();return new ServletRegistrationBean(myServlet,"/my","/my02");}@Beanpublic FilterRegistrationBean myFilter(){MyFilter myFilter = new MyFilter();//myServlet()可以将servlet处理的请求进行过滤//return new FilterRegistrationBean(myFilter,myServlet());FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);//自定义过滤的路径filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));return filterRegistrationBean;}@Beanpublic ServletListenerRegistrationBean myListener(){MySwervletContextListener mySwervletContextListener = new MySwervletContextListener();return new ServletListenerRegistrationBean(mySwervletContextListener);}
}

DispatcherServlet注入原理

  • 容器中自动配置了 DispatcherServlet, 属性绑定到 WebMvcProperties;对应的配置文件配置项是 spring.mvc

  • 通过ServletRegistrationBean把 DispatcherServlet 配置进来。默认映射的是以/开头的路径

  • 多个Servlet都能处理到同一层路径,精确路径优先原则,故解释了上述自定义servlet直接响应,不经过spring
http://www.dtcms.com/a/520590.html

相关文章:

  • Spring Cloud - Spring Cloud 本地配置(本地配置概述、本地配置实现)
  • 青岛商城网站建设长春建设平台网站的公司
  • 这几年做网站怎么样wordpress adsense主题
  • 做视频网站服务器怎么选择12306网站开发时间
  • 如何做家教网站赚钱如何申请国外网站
  • 淄博做网站建设云南网站建设方案
  • 实用指南--多账号矩阵防封控
  • 前端框架Vue(Vue 的挂载点与 data 数据对象)
  • pycharm 远程连接服务器添加github copilot
  • 金融智能体的技术底座解析:AI Agent如何实现“认知+执行”闭环?
  • PostgreSQL 选择数据库:深入解析与最佳实践
  • 木材模板.网站黄山网站建设推广
  • 临沧永德网站建设电子商务公司个人博客网站制作论文
  • MOshell (13) :运维自动化与参数一致性管理
  • CS224N-Lecture01-Word Vectors
  • vscode 配置ROS项目 导入库来源
  • 探寻架构师职责(一)----建新系统
  • 广州seo效果下载班级优化大师app
  • 兴城做网站推广的做网商必备网站
  • Windows系统php8.2.9 安装imagick扩展
  • 如何用router-view实现嵌套路由,完整使用示例
  • 深度学习 GPU 两种使用方法
  • 基于机器学习的基金股票预测:从数据到决策
  • 聊城网站制作需要多少钱企业网站的建设水平直接关系到网络营销的效果
  • 北京冬奥会网站制作素材做公司网站需要学哪些
  • 网站域名后缀意义设计好的建设网站
  • 如何刷网站访问量wordpress倒序阅读
  • 秦皇岛公司做网站服装设计公司有哪些
  • AAA的配置
  • 如何做论坛网站 知乎网站服务器安全配置