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>

  

項目目錄結構:

啟動:

訪問路徑名字是這個:

 上下文:

 

訪問之:

 

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

 下一步我們將加載 Springmvc 在這里

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM