1. 程式人生 > >Spring Boot2.0之 原理—建立內建Tomcat容器

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>

  

專案目錄結構:

啟動:

訪問路徑名字是這個:

 上下文:

 

訪問之:

 

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