昆明php网站建设,网站做微信支付宝支付宝,免费的个人主页网页制作网站,制作一个网页需要哪几个步骤文章目录 前言一、原生注解方式注入二、Spring方式注入三、切换web服务器与定制化总结 前言
注入Web原生Servlet、Filter、Listeber以及切换Web服务器。 一、原生注解方式注入
官方文档 - Servlets, Filters, and listeners
Servlet注入#xff1a;
WebServlet(urlPattern… 文章目录 前言一、原生注解方式注入二、Spring方式注入三、切换web服务器与定制化总结 前言
注入Web原生Servlet、Filter、Listeber以及切换Web服务器。 一、原生注解方式注入
官方文档 - Servlets, Filters, and listeners
Servlet注入
WebServlet(urlPatterns /my)
public class MyServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write(66666);}
}Filter注入
Slf4j
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销毁);}
}Listener注入
Slf4j
WebListener
public class MyServletContextListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {log.info(MySwervletContextListener监听到项目初始化完成);}Overridepublic void contextDestroyed(ServletContextEvent sce) {log.info(MySwervletContextListener监听到项目销毁);}
}最后还要在主启动类添加注解ServletComponentScan
SpringBootApplication
ServletComponentScan(basePackages com.dragon.admin)//开启servlet注入组件扫描
public class Springboot4Application {public static void main(String[] args) {SpringApplication.run(Springboot4Application.class, args);}}二、Spring方式注入
首先将上面的三个类上的注释都取消作普通类。 ServletRegistrationBean, FilterRegistrationBean, ServletListenerRegistrationBean Configuration(proxyBeanMethods true)
public class MyRegisterConfig {Beanpublic ServletRegistrationBean myServlet(){Myservlet myservlet new Myservlet();return new ServletRegistrationBean(myservlet,/my,/my02);}Beanpublic FilterRegistrationBean myFilter(){MyFilter myFilter new MyFilter();
// return new FilterRegistrationBean(myFilter,myServlet());FilterRegistrationBean filterRegistrationBean new FilterRegistrationBean(myFilter);filterRegistrationBean.setUrlPatterns(Arrays.asList(/my,/css/*));return filterRegistrationBean;}Beanpublic ServletListenerRegistrationBean myListener(){MyServletContextListener myServletContextListener new MyServletContextListener();return new ServletListenerRegistrationBean(myServletContextListener);}
}三、切换web服务器与定制化 默认支持的WebServer Tomcat, Jetty, or Undertow。ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导创建服务器。 原理 SpringBoot应用启动发现当前是Web应用web场景包-导入tomcat。web应用会创建一个web版的IOC容器 ServletWebServerApplicationContext 。ServletWebServerApplicationContext 启动的时候寻找 ServletWebServerFactory Servlet 的web服务器工厂——Servlet 的web服务器。SpringBoot底层默认有很多的WebServer工厂ServletWebServerFactoryConfiguration内创建Bean如 TomcatServletWebServerFactoryJettyServletWebServerFactoryUndertowServletWebServerFactory 底层直接会有一个自动配置类ServletWebServerFactoryAutoConfiguration。ServletWebServerFactoryAutoConfiguration导入了ServletWebServerFactoryConfiguration配置类。ServletWebServerFactoryConfiguration 根据动态判断系统中到底导入了那个Web服务器的包。默认是web-starter导入tomcat包容器中就有 TomcatServletWebServerFactoryTomcatServletWebServerFactory 创建出Tomcat服务器并启动TomcatWebServer 的构造器拥有初始化方法initialize——this.tomcat.start();内嵌服务器与以前手动把启动服务器相比改成现在使用代码启动tomcat核心jar包存在。
Spring Boot默认使用Tomcat服务器若需更改其他服务器则修改工程pom.xml 这是修改成jetty的服务器
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId/exclusion/exclusions
/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId
/dependency
官方文档 - Use Another Web Server 总结
以上就是Web原生组件注入。