当前位置:

首页 > 编程开发 > SpringBoot怎么切换成其它的嵌入式Servlet容器

SpringBoot怎么切换成其它的嵌入式Servlet容器

如何切换成其它的嵌入式Servlet容器(Jetty和Undertow)SpringBoot默认使用的内置Servlet容器是Tomcat然而SpringBoot还支持其它的Servlet容器默认的Tomcat只是其中一种SpringBoot还支持Jetty和UndertowJetty适合用于长链接应用例如聊天Undertow是一个高性能非阻塞的Servlet容器并发性能非常好但不支持jsp若要切换只需要在pom文件中排除自带的Tomcat启动器再引入其它Servlet容器的启动器即可spring-boo

本文目录

    如何切换成其它的嵌入式Servlet容器(Jetty和Undertow)

    SpringBoot默认使用的内置Servlet容器是Tomcat

    然而 SpringBoot还支持其它的Servlet容器 默认的Tomcat只是其中一种

    SpringBoot还支持Jetty和Undertow

    • Jetty适合用于长链接应用 例如聊天

    • Undertow是一个高性能非阻塞的Servlet容器 并发性能非常好 但不支持jsp

    SpringBoot怎么切换成其它的嵌入式Servlet容器

    若要切换 只需要在pom文件中排除自带的Tomcat启动器 再引入其它Servlet容器的启动器即可

    spring-boot-starter-web里面引入了spring-boot-starter-tomcat 因此默认使用Tomcat

    因此 只需排除原先的Tomcat 再引入要添加的Servlet容器的依赖 即可:

    切换成Jetty:

    
    
        org.springframework.boot
        spring-boot-starter-web
        
            
            
                spring-boot-starter-tomcat
                org.springframework.boot
            
        
    
    
    
        spring-boot-starter-jetty
        org.springframework.boot
    

    SpringBoot怎么切换成其它的嵌入式Servlet容器

    Jetty启动成功

    同理 切换成undertow:

    
    
        org.springframework.boot
        spring-boot-starter-web
        
            
            
                spring-boot-starter-tomcat
                org.springframework.boot
            
        
    
    
    
        spring-boot-starter-undertow
        org.springframework.boot
    

    SpringBoot怎么切换成其它的嵌入式Servlet容器

    Undertow启动成功

    SpringBoot web开发_嵌入式Servlet容器

    1、切换嵌入式Servlet容器

    1.1、SpringBoot支持的Servlet种类及其切换

    1)默认支持的webServer:Tomcat、Jrtty、Undertow

    2)切换服务器

    SpringBoot怎么切换成其它的嵌入式Servlet容器

    
        org.springframework.boot
        spring-boot-starter-web
        
            
                org.springframework.boot
                spring-boot-starter-tomcat
            
        
    

    1.2、原理

    1)SpringBoot应用启动发现当前是Web应用。web场景包-导入tomcat

    2)web应用会创建一个web版的ioc容器 ServletWebServerApplicationContext

    3)ServletWebServerApplicationContext  启动的时候寻找 ServletWebServerFactory(Servlet 的web服务器工厂---> Servlet 的web服务器)

    4)SpringBoot底层默认有很多的WebServer工厂;

    • TomcatServletWebServerFactory

    • JettyServletWebServerFactory

    • UndertowServletWebServerFactory

    5)底层直接会有一个自动配置类。

    ServletWebServerFactoryAutoConfiguration导入了ServletWebServerFactoryConfiguration(配置类)

    6)ServletWebServerFactoryConfiguration 配置类 根据动态判断系统中到底导入了那个Web服务器的包。(默认是web-starter导入tomcat包),容器中就有 TomcatServletWebServerFactory

    7)TomcatServletWebServerFactory 创建出Tomcat服务器并启动;TomcatWebServer 的构造器拥有初始化方法initialize---this.tomcat.start();

    8)内嵌服务器,就是手动把启动服务器的代码调用(tomcat核心jar包存在)

    2、定制Servlet容器

    2.1、修改配置文件

    通过对application.properties配置文件的设置,定制Servlet容器

    #修改servlet容器
    server.port=8000
    #server.undertow.accesslog.dir=/tmp

    2.2、实现 WebServerFactoryCustomizer

    xxxxxCustomizer:定制化器,可以改变xxxx的默认规则

    通过WebServerFactoryCustomizer修改 Servlet 容器的响应端口号:

    import org.springframework.boot.web.server.WebServerFactoryCustomizer;
    import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
    import org.springframework.stereotype.Component;
     
    @Component
    public class CustomizationBean implements WebServerFactoryCustomizer {
     
        @Override
        public void customize(ConfigurableServletWebServerFactory server) {
            server.setPort(9000);
        }
    }

    2.3、ConfigurableServletWebServerFactory

    直接自定义 ConfigurableServletWebServerFactory 的接口实现类

    public interface ConfigurableWebServerFactory extends WebServerFactory, ErrorPageRegistry {
        void setPort(int port); 
        void setAddress(InetAddress address); 
        void setErrorPages(Set errorPages); 
        void setSsl(Ssl ssl); 
        void setSslStoreProvider(SslStoreProvider sslStoreProvider); 
        void setHttp2(Http2 http2); 
        void setCompression(Compression compression); 
        void setServerHeader(String serverHeader); 
        default void setShutdown(Shutdown shutdown) {
        }
    }

    ConfigurableServletWebServerFactory 接口实现类(框架中默认实现类):

    SpringBoot怎么切换成其它的嵌入式Servlet容器

    通过自定义 ConfigurableServletWebServerFactory 接口的实现类,即可定制Servlet容器

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    jsp+servlet实现猜数字游戏
    jsp+servlet实现猜数字游戏

    利用Session保存随机数,用户通过表单提交猜测数字,Servlet接收后与随机数比较,根据大小关系通过重定向返回“大了”“小了”或“猜中”提示,并记录尝试次数,实现完整猜数字游戏交互逻辑。

    servlet+jsp实现过滤器 防止用户未登录访问
    servlet+jsp实现过滤器 防止用户未登录访问

    在Web开发中,使用过滤器统一拦截未登录用户访问受保护页面。通过过滤器验证session,无session则重定向登录页,避免在每个JSP页面重复编写判断代码,实现权限验证与业务逻辑解耦,提升维护效率。

    JavaWeb Servlet中Filter过滤器的详解
    JavaWeb Servlet中Filter过滤器的详解

    Filter过滤器用于在Servlet前后拦截并处理请求与响应,常驻内存,性能开销小。其生命周期包含初始化、过滤执行和销毁三阶段。多个过滤器按配置顺序组成过滤链,通过chain.doFilter传递控制权,可中断以实现提前终止逻辑。需实现Filter接口并配置web.xml映射。

    Java配置Servlet开发环境指南
    Java配置Servlet开发环境指南

    首先安装JDK并配置JAVA_HOME和PATH环境变量,然后下载Tomcat并设置CATALINA_HOME,接着在IntelliJIDEA中创建Web项目并关联Tomcat服务器,通过Maven引入ServletAPI依赖,编写HelloServlet类并使用注解或web.xml注册,最后部署到Tomcat并访问http://localhost:8080/your-app/hello验证运行结果。

    Java Servlet的性能优化技巧有哪些?
    Java Servlet的性能优化技巧有哪些?

    优化JavaServlet性能的技巧包括:1.缓存数据和结果;2.使用异步处理;3.使用Web服务器优化;4.避免频繁的数据库访问;5.使用轻量级框架;6.监控Servlet性能。

    深入探讨Servlet和HTTP
    深入探讨Servlet和HTTP

    Servlet是一种用Java编写的服务器端程序,主要用于处理客户端的请求和生成响应。它运行在基于Java的ServletAPI之上,并在JavaWeb服务器中执行。Servlet实际上是一种特殊的Java类,可以与客户端通过HTTP协议进行通信。通过Servlet,开发人员可以轻松地构建动态Web应用程序,处理用户请求并向他们提供所需的信息。Servlet可以动态生成HTML页面、处理表单数据、管理会话状态以及与数据库进行交互等。它是JavaWeb应用程序的核心组件之一,为Web开发人员提供了强大而灵活

    Java Servlet的应用场景有哪些?
    Java Servlet的应用场景有哪些?

    JavaServlet可用于:1.动态内容生成;2.数据访问与处理;3.表单处理;4.文件上传;5.会话管理;6.过滤器。示例:创建一个FormSubmitServlet来处理表单提交,将name和email作为参数,并重定向到success.jsp。

    Java Servlet的初始化和销毁过程是如何工作的?
    Java Servlet的初始化和销毁过程是如何工作的?

    JavaServlet初始化过程包括加载字节码、调用init方法获取配置信息并初始化Servlet,销毁过程涉及调用destroy方法释放资源,如关闭数据库连接。

    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    Java错误:Servlet错误,如何解决和避免
    Java错误:Servlet错误,如何解决和避免

    JavaWeb应用程序开发中,Servlet是非常常用的技术。但是在开发过程中难免会出现一些Servlet错误,如何解决和避免Servlet错误成为许多Java开发者的头等问题。本文将根据个人经验和相关资料介绍一些常见的Servlet错误及其解决方法。ClassNotFoundException当我们尝试加载一个类的时候,如果该类不存在或者不能被系统访问,

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。