Spring Boot2.0之 原理—创建内置Tomcat容器

前面所述的https://www.cnblogs.com/toov5/p/9823728.html 中的第一条先不赘述了,就是玩了maven

重点介绍后两条

首先内置Tomcat:

SpringBoot中内置tomcat服务器

Java操作创建tomcat

我们点击pom中的

持续点击到

继续点击会发现:

这个依赖 为我所需~

注意:Springboot2.0之后 Tomcat8.0以上版本

引入到自己的pom中(类似的还有其他的依赖包):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.toov5.tomcat</groupId>
  <artifactId>tomcat</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
        <!--Java语言操作tomcat -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>8.5.16</version>
        </dependency>

        <!-- tomcat对jsp支持 -->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>8.5.16</version>
        </dependency>
    </dependencies>    

</project>

servlet代码:

package com.toov5.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class IndexServlet 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().print("successful congratulation ");
    }
}

然后用servlet创建Tomcat容器

package com.toov5.tomcat;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.Tomcat.FixContextListener;

import com.toov5.servlet.IndexServlet;

//使用Java创建Tomcat容器
//tomcat 底层执行程序  最终执行servlet
//Springmvc底层使用servlet

public class Test {
       private static int PORT = 8080; //端口
       private static String CONTEX_PATH = "/toov5";  //项目访问名称
       private static String SERVLET_NAME="IndexServet";
       public static void main(String[] args) {
        Tomcat tomcatServer =  new Tomcat();
        tomcatServer.setPort(PORT);  //指定端口号
        //是否设置自动部署
        tomcatServer.getHost().setAutoDeploy(false);
        //创建上下文,拿到上下文后就可以设置整个访问地址了
        StandardContext standardContext = new StandardContext();
        standardContext.setPath(CONTEX_PATH);
        //监听上下文
        standardContext.addLifecycleListener(new FixContextListener());
        standardContext.addLifecycleListener(new FixContextListener());
        // tomcat容器添加standardContext 添加整个context
        tomcatServer.getHost().addChild(standardContext);
        // 创建servlet   servlet的名字叫IndexServlet
        tomcatServer.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());
        // 添加servleturl映射
        standardContext.addServletMappingDecoded("/index", SERVLET_NAME);
        try {
            tomcatServer.start();
        } catch (LifecycleException e) {
            e.printStackTrace();
        }
        System.out.println("tomcat服务器启动成功!");
        //需要异步接受请求
            tomcatServer.getServer().await();
    }  

}

这段代码等同于,

web.xml中的:

<servlet>
  <servlet-name>toov5</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/springmvc.xml</param-value>
   </init-param>
</servlet>
<servlet-mapping>
 <servlet-name>toov5</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

  

项目目录结构:

启动:

访问路径名字是这个:

上下文:

访问之:

小伙伴,有木有很好玩呀~

原文地址:https://www.cnblogs.com/toov5/p/9823952.html

时间: 2024-11-02 20:30:04

Spring Boot2.0之 原理—创建内置Tomcat容器的相关文章

Spring Boot 添加jersey-mvc-freemarker依赖后内置tomcat启动不了解决方案

我在我的Spring Boot 项目的pom.xml中添加了jersey-mvc-freemarker依赖后,内置tomcat启动不了. 报错信息如下: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletCon

Spring Boot2.0之注解方式启动Springmvc

回顾下springmvc原理图: DispatcherServlet是Spring MVC的核心,每当应用接受一个HTTP请求,由DispatcherServlet负责将请求分发给应用的其他组件. 在旧版本中,DispatcherServlet之类的servlet一般在web.xml文件中配置,该文件一般会打包进最后的war包种:但是Spring 3引入了注解,我将要介绍,如何基于注解配置Spring MVC. 1.Spring mvc无配置文件夹,采用注解方式启动. 把配置的内容 转换为 Ja

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox) 垂直盒子 VBox 和水平盒子 HBox 很类似,只是其包含的节点是在单列中进行排列.图 1-4 显示了一个VBox的示例. 图 1-4 VBox示例 内边距(Padding)属性可以设置节点到VBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.边缘(Margin)属性可以为每个节点增加额外的环绕空间. 代码片段 例 1-3 创建了一个VBox,其中包含了一系列的选项. 例 1-3 创建VBo

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox) 水平盒子 HBox 为多个节点排列在一行中提供了一个简单的方法. 图 1-2 是HBox的一个示例. 图 1-2 HBox示例 内边距(Padding)属性可以设置节点到HBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.样式(Style)属性可以设置背景颜色. 代码片段 例 1-2 创建了一个HBox,实现了一个工具栏(ToolBar)的效果,其中包含了两个按钮. 例 1-2 创建HBox

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane) 边框面板 BorderPane 将面板划分为5个区域来放置界面元素:上.下.左.右.中. 图 1-1 显示了边框面板的布局示意图.每个区域的大小是没有限制的.在你使用边框面板时,如果不需要某个区域,你只要不为该区域设置内容,该区域则不会被分配显示空间,自然也就不会显示. 图 1-1 边框面板布局示意图 边框面板是我们经常见到的一个非常经典的布局效果:上面是菜单栏和工具栏,下面是状态栏,左边是导航面板

[译]JavaFX 2.0+系列教程-使用内置的布局面板(7)-流面板(FlowPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(7)-流面板(FlowPane) 流面板 FlowPane 中包含的节点会连续的平铺放置,并且在边界处自动换行(或者列).节点可以在垂直方向进行平铺(列),或者以水平方向进行平铺(行).垂直的流面板会以高度边界来进行自动换列,水平的流面板会以宽度边界来自动换行. 图 1-10 显示了一个简单的水平流面板,其中包含的每个节点都是带数字编号的图标.相反的,在垂直流面板中,第一列会包含标号为1到4的节点,第二列会包含编号为5到8的节点. 图 1

[译]JavaFX 2.0+系列教程-使用内置的布局面板(6)-网格面板(GridPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(6)-网格面板(GridPane) 网格面板 GridPane 使你可以创建灵活的基于行和列的网格来放置节点.节点可以放在任意一个单元格中.如果你需要的话,你也可以设置一个节点跨越多个单元格(行或者列).网格面板对于创建表单或者其他以行和列来组织的界面来说是非常有用的. 图 1-8 显示了一个网格面板,它包含了一个图标.标题.子标题.文本和一个饼状图.在图中,属性 gridLinesVisible 被用来设置显示网格线,它能展示出行和列的

[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane) 堆栈面板 StackPane 将所有的节点放在一个堆栈中进行布局管理,后添加进去的节点会显示在前一个添加进去的节点之上.这个布局为将文本(Text)覆盖在一个图形(Shape)或者图像(Image)上提供了一个简单的方案,或者可以将普通的图形相互覆盖来创建更复杂的图形. 图 1-6 显示了一个帮助按钮,它是通过在一个渐变背景的方形上堆了一个问号标志来实现的. 图 1-6 简单的堆栈面板示例Sample

Spring Boot2.0自定义配置文件使用

声明: spring boot 1.5 以后,ConfigurationProperties取消locations属性,因此采用PropertySource注解配合使用 根据Spring Boot2.0官方文档,PropertySource注解,只支持properties文件,因此排除 YAML配置 针对二,可考虑新建配置类,自行搜索,不再此次讨论范围 具体使用: 1.根目录下新建自定义配置文件夹与properties配置文件 example.name=tom example.wife=jerr