博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot嵌入式的Servlet容器
阅读量:6290 次
发布时间:2019-06-22

本文共 3675 字,大约阅读时间需要 12 分钟。

一.查看SpringBoot默认的嵌入式Servlet容器(默认使用的是tomcat)

  在IDEA的项目的pom文件中按Ctrl + shift + Alt + U可以打开SpringBoot依赖的图表,如下所示

    

    可以发现默认嵌入式的tomcat服务器的版本为9.0.16

二.修改Servlet容器的默认配置

   1.直接在application.properties或yml文件中配置,例如

#通用的Servlet容器设置server.xxxserver.port=8081server.context‐path=/demoserver.tomcat.uri‐encoding=UTF‐8#Tomcat的设置server.tomcat.xxx #server.tomcat.port=8088

  2.编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器;来修改Servlet容器的配置。

三.注册Servlet三大组件(Servlet、Filter、Listener)

  由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。

  因此

    1.创建组件

public class MyServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        doPost(req, resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.getWriter().write("hello Servlet");    }}
public class MyFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override    public void destroy() {    }    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        System.out.println("过滤器已经执行了");        filterChain.doFilter(servletRequest , servletResponse);    }}
public class MyListener implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        System.out.println("web项目启动了");    }    @Override    public void contextDestroyed(ServletContextEvent sce) {        System.out.println("web项目销毁了");    }}

    2.注册这些组件

@Configurationpublic class MyMvcConfig implements WebMvcConfigurer {    //注册三大组件    @Bean   //Servlet组件    public ServletRegistrationBean myServlet(){        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");        return registrationBean;    }    @Bean   //Filter组件    public FilterRegistrationBean myFilter(){        FilterRegistrationBean registrationBean = new FilterRegistrationBean();        registrationBean.setFilter(new MyFilter());        registrationBean.setUrlPatterns(Arrays.asList("/myFilter"));        return registrationBean;    }    @Bean   //Listener组件    public ServletListenerRegistrationBean myListener(){        ServletListenerRegistrationBean
registrationBean = new ServletListenerRegistrationBean<>(new MyListener()); return registrationBean; }}

   3.测试:

    启动项目后发现控制台输出

      

    访问 /myServlet 后发现页面输出

      

    访问/myFilter后,控制台输出

      

    项目退出运行后,控制台输出

      

四.SpringBoot切换其他Servlet容器

  Jetty(适合开发长连接的应用):添加依赖如下

<dependency>

  <groupId>org.springframework.boot</groupId>
  <artifactId>spring‐boot‐starter‐web</artifactId>
  <exclusions><!--排除默认的tomcat服务器-->

    <exclusion>

      <artifactId>spring‐boot‐starter‐tomcat</artifactId>
      <groupId>org.springframework.boot</groupId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <artifactId>spring‐boot‐starter‐jetty</artifactId>
  <groupId>org.springframework.boot</groupId>
</dependency>

  Undertow(不支持JSP,但是是非阻塞的,并发性能比较好),添加依赖如下

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

转载于:https://www.cnblogs.com/ywb-articles/p/10643977.html

你可能感兴趣的文章
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>