Spring Boot如何支持嵌入式Servlet容器

Spring Boot支持Tomcat、Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为8080。

Servlets、Filters & Listeners

这些组件可以同组件扫描注册,即把他们定义为Spring Bean。

默认情况下,如果只有一个servlet,则把它映射到/;如果有多个servlet,则加上bean name作为前缀然后映射到/*。

如果默认策略不能满足你,你可以通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean来完全控制。

如果Filter需要按顺序执行,则可以通过@Order注解定义Filter的顺序,或者实现Ordered接口。

容器初始化

嵌入式容器不会直接执行Servlet 3.0+ javax.servlet.ServletContainerInitializer或org.springframework.web.WebApplicationInitializer,这是故意为之,是为了防止第三方包程序破坏Spring Boot应用程序。

如果你需要执行容器初始化,可以通过实现注册一个org.springframework.web.WebApplicationInitializer Bean。这个接口只有一个方法onStartup,这个方法可以访问ServletContext。

当使用嵌入式容器时,可以通过@ServeltComponentScan启用@WebServlet,@WebFilter和@WebListener注解。

ServletWebApplicationContext

ServletWebApplicationContext是一个特殊的WebApplicationContext,主要用于嵌入式Servelt。

自定义嵌入式容器

一般Servlet容器的普通配置可以通过Spring的Environment属性配置,也就是在application.properties文件中配置。

支持的普通配置:

  • 网络设置:server.port服务端口; server.address服务地址。
  • Session配置:server.servlet.session.presistent配置是否启用session;

server.servlet.session.timeout配置session超时时间;

server.servlet.session.store-dir配置session存储位置;

server.servlet.session.cookie.*配置session的cookie。

  • 错误处理:错误页面的位置server.error.path
  • ssl
  • http压缩

Spring Boot尽量统一不容器的配置,但是有些配置是容器特有的,这种情况下可以使用容器特有配置,如server.tomcat,server.undertow。

JSP限制

当采用嵌入式容器时,使用jsp有些限制:

  • 可执行jar不支持jsp
  • undertow不支持jsp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot注册Servlet的三种方法详解

    本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 一.Spring Boot 注册 Spring Boot 提供了 ServletRegistrationBean, FilterRegistrationBean, ServletListenerRegistrationBean 三个类分别用来注册 Servlet, Filter, Listener,下面是 Servlet 的示例代码. import javax.servlet.http.HttpS

  • springboot扫描自定义的servlet和filter代码详解

    这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** * Created by xiaxuan on 16/11/1. */ @WebFilter(urlPatterns = "/*",filterName="CharacterEncodeFilter", initParams={ @WebInitParam(name="encoding",value="UTF-8&qu

  • Spring Boot实现异步请求(Servlet 3.0)

    在spring 3.2 及以后版本中增加了对请求的异步处理,旨在提高请求的处理速度降低服务性能消耗. 在我们的请求中做了耗时处理,当并发请求的情况下,为了避免web server的连接池被长期占用而引起性能问题,调用后生成一个非web的服务线程来处理,增加web服务器的吞吐量. 为此 Servlet 3.0 新增了请求的异步处理,Spring 也在此基础上做了封装处理. 本文还是以代码例子的方式说明如何在 Spring Boot 中应用异步请求. 首先说一下几个要点: 1.@WebFilter

  • 详解在spring boot中配置多个DispatcherServlet

    spring boot为我们自动配置了一个开箱即用的DispatcherServlet,映射路径为'/',但是如果项目中有多个服务,为了对不同服务进行不同的配置管理,需要对不同服务设置不同的上下文,比如开启一个DispatcherServlet专门用于rest服务. 传统springMVC项目 在传统的springMVC项目中,配置多个DispatcherServlet很轻松,在web.xml中直接配置多个就行: <servlet> <servlet-name>restServle

  • SpringBoot如何注册Servlet、Filter、Listener的几种方式

    在Servlet 3.0之前都是使用web.xml文件进行配置,需要增加Servlet.Filter或者Listener都需要在web.xml增加相应的配置.Servlet 3.0之后可以使用注解进行配置Servlet.Filter或者Listener:springboot也提供了使用代码进行注册Servlet.Filter或者Listener.所以springboot有两种方式进行Servlet.Filter或者Listener配置. 方式一:使用注解 (1)注册Servlet 使用@WebS

  • 深入讲解spring boot中servlet的启动过程与原理

    前言 本文主要介绍了关于spring boot中servlet启动过程与原理的相关内容,下面话不多说了,来一起看看详细的介绍吧 启动过程与原理: 1 spring boot 应用启动运行run方法 StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; FailureAnalyzers analyzers = null; configureHe

  • Spring Boot 中的Servlet简单使用

    当使用spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet.Filter和Servlet规范的所有监听器(如HttpSessionListener监听器). Spring boot 的主 Servlet 为 DispatcherServlet,其默认的url-pattern为"/".也许我们在应用中还需要定义更多的Servlet,该如何使用SpringBoot来完成呢? 在spring boot中添加自己的Servlet有两种方法,代码注册Servle

  • SpringBoot初始教程之Servlet、Filter、Listener配置详解

    1.介绍 通过之前的文章来看,SpringBoot涵盖了很多配置,但是往往一些配置是采用原生的Servlet进行的,但是在SpringBoot中不需要配置web.xml的 因为有可能打包之后是一个jar包的形式,这种情况下如何解决?SpringBoot 提供了两种方案进行解决 2.快速开始 2.1 方案一 方案一采用原生Servlet3.0的注解进行配置.@WebServlet .@WebListener.@WebFilter是Servlet3.0 api中提供的注解 通过注解可以完全代替web

  • Spring Boot如何支持嵌入式Servlet容器

    Spring Boot支持Tomcat.Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为8080. Servlets.Filters & Listeners 这些组件可以同组件扫描注册,即把他们定义为Spring Bean. 默认情况下,如果只有一个servlet,则把它映射到/:如果有多个servlet,则加上bean name作为前缀然后映射到/*. 如果默认策略不能满足你,你可以通过Servl

  • Spring Boot 中嵌入式 Servlet 容器自动配置原理解析

    目录 1.参照 Spring Boot 自动配置包里面的web模块 2.EmbeddedServletContainerFactory(嵌入式Servlet容器工厂) 3.EmbeddedServletContainer(嵌入式的Servlet容器) 4.以TomcatEmbeddedServletContainerFactory为例 5.嵌入式容器的配置修改生效原理 1.参照 Spring Boot 自动配置包里面的web模块 EmbeddedServletContainerAutoConfi

  • 如何把spring boot项目部署到tomcat容器中

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码, <dependency> <groupId>org.springframework.boot</groupId> <artifactId&

  • SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程图解

    配置嵌入式Servlet容器 SpringBoot默认使用Tomcat作为嵌入式的Servlet容器: 问题? 1).如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCustomizer]): server.port=8081 server.context-path=/crud server.tomcat.uri-encoding=UTF-8 //通用的Servlet容器设置 s

  • SpringBoot嵌入式Servlet容器与定制化组件超详细讲解

    目录 嵌入式Servlet容器 1.原理分析 2.Servlet容器切换 3.定制Servlet容器配置 定制化组件 嵌入式Servlet容器 在Spring Boot中,默认支持的web容器有 Tomcat, Jetty, 和 Undertow 1.原理分析 那么这些web容器是怎么注入的呢?我们一起来分析一下 当SpringBoot应用启动发现当前是Web应用,它会创建一个web版的ioc容器ServletWebServerApplicationContext 这个类下面有一个createW

  • spring boot 1.5.4 web容器定制(端口号等修改)方法

    spring boot 默认采用tomcat作为嵌入的web容器 定制方式有三种 1. 2.如下 @Component public class CustomizationBean implements EmbeddedServletContainerCustomizer{ /** * 定制方法一:实现EmbeddedServletContainerCustomizer * @param container */ @Override public void customize(Configura

  • 选择Spring Boot项目的内嵌容器的理由

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. Spring Boot继承了Spring的优点,并新增了一些新功能和特性: (1)SpringBoot是伴随着Spring4.0诞生的,一经推出,引起了巨大的

  • springboot2.3.1替换为其他的嵌入式servlet容器的详细方法

    现阶段,springboot内嵌了Tomcat服务器,如果你不想使用Tomcat,springboot也是支持其他的服务器切换的. 如果你想了解底层springboot所支持的服务器你可以使用idea的快捷键快速按两次shift查询一个ServerProperties 的类,通过这个类你可以知道你想要了解的情况: springboot里面支持的服务器有Jetty.Netty-等等,大家有兴趣的话可以百度一下. 接着通过在pom文件的视图依赖分析可以得知: springboot里面的Tomcat是

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

    目录 如何切换成其它的嵌入式Servlet容器(Jetty和Undertow) SpringBoot默认使用的内置Servlet容器是Tomcat SpringBoot还支持Jetty和Undertow SpringBoot web开发_嵌入式Servlet容器 1.切换嵌入式Servlet容器 2.定制Servlet容器 如何切换成其它的嵌入式Servlet容器(Jetty和Undertow) SpringBoot默认使用的内置Servlet容器是Tomcat 然而 SpringBoot还支持

  • 详解如何将Spring Boot应用跑在Docker容器中

    日常的Rest服务开发我都会首选SpringBoot,因为它本身的易用性以及自带的各种方便功能.生态等,今天就简单讲一下如何将Spring Boot应用跑在Docker容器中 项目搭建 首先打开Idea,选择初始化一个Spring Boot应用,然后一路回车下去,待Idea下载完依赖,开始编码 这里写一个简单的接口: @RestController @SpringBootApplication public class DemoApplication { @GetMapping("/hello&

随机推荐