首页 > 其他分享 >springboot 关于servlet容器配置修改 组件注册 容器切换 使用外部tomcat

springboot 关于servlet容器配置修改 组件注册 容器切换 使用外部tomcat

时间:2023-08-04 22:55:51浏览次数:33  
标签:容器 springboot tomcat spring boot springframework public class

1.嵌入式Servlet容器配置修改

    • 1.通过全局配置文件修改
      • 可以通过server.xxx 来进行web服务配置, 没有带服务器名称的则是通用配置
      • 通过带了具体的服务器名称则是单独对该服务器进行设置,比如 server.tomcat.xxx 就是专门针对tomcat的配置
    • 2.通过WebServerFactoryCustomizer的Bean修改
      • 修改server.xxx 配置的相关内容
      • 会跟配置文件形成互补
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    @Override
    public void customize(ConfigurableServletWebServerFactory factory) {
        factory.setContextPath("/abc");
    }
}

2.注册servlet三大组件 servlet   listener   filter

方式一:servlet3.0规范提供的注解方式注册  需要使用  @ServletComponentScan 扫描才能生效

    •   @WebServlet
    •   @WebListener
    •   @WebFilter
@WebServlet(name="HelloServlet",urlPatterns = "/HelloServlet")
//@WebFilter 使用方式相似
//@WebListener 使用方式相似
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.println("hello world 3333");
    }
}
@SpringBootApplication
@ServletComponentScan
public class SpringbootservletApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootservletApplication.class, args);
    }
}

方式二:springboot 方式

public class BeanServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.println("hello BeanServlet!");
    }
}
@Configuration
public class SpringBootServlet {
    /**
     * SpringBoot提供的注册:
     *         ServletRegistrationBean
     *         FilterRegistrationBean
     *         ServletListenerRegistrationBean
     */
    @Bean
    public ServletRegistrationBean myServlet(){
        ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean<>();
        servletServletRegistrationBean.setServlet(new BeanServlet());
        servletServletRegistrationBean.setName("BeanServlet");
        servletServletRegistrationBean.addUrlMappings("/BeanServlet");
        return servletServletRegistrationBean;
    }
}

 

3.切换其他嵌入式Servlet容器

  • Spring Boot包含对嵌入式TomcatJettyUndertow服务器的支持
  • tomcat(默认)
  • Jetty(socket)
  • Undertow(响应式)
  • <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <!--1.排除tomcat 要想使用jetty 或者 undertow 必须排除tomcat-->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!--2.依赖jetty
            <dependency>
                <artifactId>spring-boot-starter-jetty</artifactId>
                <groupId>org.springframework.boot</groupId>
            </dependency>-->
    
            <!--3.依赖undertow
            <dependency>
                <artifactId>spring-boot-starter-undertow</artifactId>
                <groupId>org.springframework.boot</groupId>
            </dependency>-->

 

4.使用外部Servlet容器

1. 下载tomcat服务 springboot3.1.2 对应 Tomcat10.1.11  版本不对应会有问题,访问不了

2.设置当前maven项目的打包方式

<!--打包方式 默认是jar--> <packaging>war</packaging>

3.让tomcat相关的依赖不参与打包部署 ,因为外置tomcat服务器已经有这些jar包  

<!--让它不参与打包部署-->
<dependency>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <groupId>org.springframework.boot</groupId>
  <scope>provided</scope>
</dependency>

 

4. 为了让它支持springboot需要加上一下代码: 才能启动springboot应用

  
public class TomcatStartSpringBoot extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootservletApplication.class);
    }
}

 



 

   

标签:容器,springboot,tomcat,spring,boot,springframework,public,class
From: https://www.cnblogs.com/ruber/p/17607250.html

相关文章

  • 基于springboot左岸小区车位管理系统
    随着信息化时代的到来,管理系统都趋向于智能化、系统化,小区车位管理系统也不例外,但目前不少小区车位的管理仍都使用人工管理,小区规模越来越大,入住率越高,小区车辆信息量也越来越庞大,人工管理显然已无法应对时代的变化,而小区车位管理系统能很好地解决这一问题,轻松应对小区车位管理平时......
  • SpringBoot(一)
    目录HelloWorldHelloWorld......
  • centos环境tomcat配置SSL
    环境:centos7.9tomcat9jdk1.8一.阿里云申请免费SSL按照官网的方法并未成功启动!44380端口加入安全组阿里云申请免费ssl下载后解压将localhost-rsa.pfx上传至tomcat的/usr/local/tomcat/apache-tomcat-9/conf/下配置service.xml修改redirectPort="443"......
  • springboot 集成druid 集成mybatise
    spring加载druid和mybatisepom依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=&quo......
  • java--并发容器 ConcurrentMap
    在JDK1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器,Collections.synchronized*系列也可以看作是线程安全的实现)。从JDK5开始增加了线程安全的Map接口ConcurrentMap和线程安全的队列BlockingQueue(尽管Queue也是同时期引入的新的集合,但是规范并没有规定一定是线程安全......
  • Spring 容器里 Bean 生命周期中可扩展的 SpringBoot 接口
    Gitee:Demo源码1.ApplicationContextInitializer这是整个spring容器在刷新之前初始化ConfigurableApplicationContext的回调接口。@Slf4jpublicclassTestApplicationContextInitializerimplementsApplicationContextInitializer{@Overridepublicvoidi......
  • Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)
    AapacheTomcatAJP文件包含漏洞(CVE-2020-1938)【项目中遇到过】1.背景简述java是目前WEB开发中主流的编程语言,而Tomcat是当前流行的Java中间件服务器之一。Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于Tomcat中的安全漏洞,由于TomcatAJP协议设计上存在缺陷,攻击者通......
  • 记录一下【docker compose发布】 docker容器间通信
    踩坑:在网上找的帖子说是在dockercompose文件中的network下添加 1:直接报错, 2:然后又去查找说要在compose文件底部,和service同级添加network的声明,添加后还是不能通信,然后使用命令dockernetworkls查看发现新增了两个网络sub_test,pub_test 3:重新查找,使用已有网络需......
  • springboot+mysql简单的登录系统
    springboot+mysql简单的登录系统pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=&q......
  • SpringBoot中Filter bean是怎么被添加到Servlet容器中的
    参考资料对于SpringBoot的IOC容器——ServletWebServerApplicationContext,其中的Filterbean,每个Filterbean都会被独立的注册成为Servlet的Filter。大概的注册过程分成2步:IOC容器——ServletWebServerApplicationContext将Filter接口的实现类封装成FilterRegistrationBean,放......