成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

教你用Java的方式創(chuàng)建一個(gè)自己的Tomcat容器

開發(fā) 后端
當(dāng)我們開始接觸到SpringBoot項(xiàng)目的時(shí)候,我們特別驚訝,為什么沒有了tomcat服務(wù)器,web項(xiàng)目還能跑起來。為什么只用了一個(gè)main方法就能講一個(gè)web項(xiàng)目跑起來。學(xué)習(xí)了這篇文章你就能明白了。

 當(dāng)我們開始接觸到SpringBoot項(xiàng)目的時(shí)候,我們特別驚訝,為什么沒有了tomcat服務(wù)器,web項(xiàng)目還能跑起來。為什么只用了一個(gè)main方法就能講一個(gè)web項(xiàng)目跑起來。學(xué)習(xí)了這篇文章你就能明白了。

1.發(fā)現(xiàn)內(nèi)置Tomcat

打開一個(gè)SpringBoot項(xiàng)目,我們發(fā)現(xiàn),有tomcat的依賴

接下來讓我們把tomcat的依賴找到

首先找到spring-boot-starter-web

點(diǎn)進(jìn)去之后我們看到他用的是2.1.0版本,我們繼續(xù)點(diǎn)擊去

果然在里面找到tomcat的依賴,我們繼續(xù)點(diǎn)進(jìn)去

這是我們我們就能看到tomcat的相關(guān)依賴了。

因此我們是可以使用Java提供內(nèi)置Tomcat容器框架,使用Java語言操作Tomcat容器。這樣我們也能創(chuàng)建一個(gè)maven項(xiàng)目,并且內(nèi)置一個(gè)tomcat容器了。

2.創(chuàng)建一個(gè)maven項(xiàng)目

3.添加tomcat依賴

這里我們使用8.5版本的tomcat 

  1. <!--Java語言操作tomcat -->  
  2. <dependency>  
  3.  <groupId>org.apache.tomcat.embed</groupId>  
  4.  <artifactId>tomcat-embed-core</artifactId>  
  5.  <version>8.5.16</version>  
  6. </dependency> 

4.創(chuàng)建一個(gè)servlet:IndexServlet 

  1. public class IndexServlet extends HttpServlet {  
  2.  private static final long serialVersionUID = 1L 
  3.  @Override  
  4.  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
  5.   doPost(req, resp);  
  6.  }  
  7.  @Override  
  8.  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
  9.   resp.getWriter().print("IndexServletIndexServletIndexServletIndexServletIndexServletIndexServlet");  
  10.  }  

我們先看看傳統(tǒng)的Servlet需要怎么配置,我們需要在WEB-INF目錄下的web.xml文件中,配置sevlet的映射

當(dāng)我們?cè)L問這個(gè)servlet的時(shí)候,訪問地址應(yīng)該是:ip:<端口>/<tomcat上下文>/index

但是,但是,但是tomcat和web.xml沒了,怎么配置?簡單,沒有我們就用main方法來創(chuàng)建一個(gè)tomcat。

5.創(chuàng)建一個(gè)tomcat

5.1.定義servlet配置參數(shù)

我們先定義幾個(gè)servlet的配置參數(shù):servlet的名字,servlet的映射

5.2.內(nèi)置Tomcat常用API介紹

org.apache.catalina.startup.Tomcat

創(chuàng)建tomcat 

  1. Tomcat tomcatServer = new Tomcat(); 

設(shè)置tomcat端口 

  1. void setPort(int port); 

設(shè)置上下文地址 

  1. void setPath(String path) 

添加監(jiān)聽 

  1. void addLifecycleListener(LifecycleListener listener) 

添加sevlet 

  1. Wrapper addServlet(String contextPath,String servletName,Servlet servlet) 

添加sevlet映射 

  1. void addServletMappingDecoded(String pattern, String name) 

啟動(dòng)tomcat 

  1. void start() throws LifecycleException 

獲取服務(wù) 

  1. Server getServer() 

服務(wù)異步 

  1. tomcatServer.getServer().await() 

將Web應(yīng)用程序添加到Tomcat的webapps目錄中,等效的默認(rèn)web.xml將應(yīng)用于該Web應(yīng)用程序,并且與該應(yīng)用程序打包的任何WEB-INF/web.xml和META-INF/context.xml都將被正常處理。 

  1. Context addWebapp(String contextPath, String docBase) throws ServletException 

web應(yīng)用資源添加到此Web應(yīng)用程序 

  1. void addPreResources(WebResourceSet webResourceSet) 

5.3.創(chuàng)建tomcat并且添加servlet 

  1. public class TestTomcat {  
  2.  private static int PORT = 8080 
  3.  private static String CONTEX_PATH = "/demosevlet" 
  4.  private static String SERVLET_NAME = "index" 
  5.  private static String MAPPING = "index" 
  6.  public static void main(String[] args) throws LifecycleException, InterruptedException {  
  7.   System.out.println("開始啟動(dòng)tomcat");  
  8.   Tomcat tomcatServer = new Tomcat();  
  9.   //設(shè)置tomcat端口  
  10.   tomcatServer.setPort(PORT);  
  11.   //此tomcat端口是否自動(dòng)部署  
  12.   tomcatServer.getHost().setAutoDeploy(false);  
  13.   //創(chuàng)建一個(gè)web應(yīng)用程序  
  14.   StandardContext standardContex = new StandardContext();  
  15.   //設(shè)置web應(yīng)用程序的上下文地址  
  16.   standardContex.setPath(CONTEX_PATH);  
  17.   //添加web應(yīng)用程序的監(jiān)聽  
  18.   standardContex.addLifecycleListener(new FixContextListener());  
  19.   //將web應(yīng)用程序添加到服務(wù)器中  
  20.   tomcatServer.getHost().addChild(standardContex);  
  21.   //配置servelt和映射 
  22.   tomcatServer.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());  
  23.   standardContex.addServletMappingDecoded("/"+MAPPING, SERVLET_NAME); 
  24.    //啟動(dòng)tomcat  
  25.   tomcatServer.start();  
  26.   System.out.println("啟動(dòng)tomcat完畢");  
  27.   //開啟異步服務(wù),接收請(qǐng)求  
  28.   tomcatServer.getServer().await();  
  29.  }  

5.4.啟動(dòng)main方法創(chuàng)建tomcat

啟動(dòng)結(jié)果如下,我們看到tomcat以8080端口啟動(dòng)。另外,關(guān)注Java知音公眾號(hào),回復(fù)“后端面試”,送你一份面試題寶典!

并且在此目錄下生成了tomcat.8080文件夾

5.5.訪問IndexServlet

請(qǐng)求地址:ip:<端口>/<tomcat上下文>/index

請(qǐng)求地址:127.0.0.1:8080/demosevlet/index

 

 

責(zé)任編輯:龐桂玉 來源: Java知音
相關(guān)推薦

2015-04-22 11:29:45

PythonPython創(chuàng)建瀑布圖

2020-10-15 15:01:54

Python 開發(fā)編程語言

2020-05-09 09:59:52

Python數(shù)據(jù)土星

2020-11-20 10:50:01

Docker容器

2020-09-15 14:05:21

Python代碼預(yù)測模型

2022-06-28 12:35:21

DockerPython

2021-05-13 20:20:40

Java架構(gòu)代碼

2019-12-09 15:00:48

TomcatServlet容器

2021-05-18 14:42:55

PythonMySQL

2019-01-24 09:00:00

PythonAutoML機(jī)器學(xué)習(xí)

2022-02-25 09:41:05

python搜索引擎

2021-08-24 10:02:21

JavaScript網(wǎng)頁搜索 前端

2021-07-12 09:03:50

Python任務(wù)管理器cmd命令

2022-01-06 18:20:20

Scarlet AndroidWebSocket

2024-11-05 16:40:24

JavaScript搜索引擎

2019-08-26 19:03:58

2018-12-17 09:10:52

機(jī)器學(xué)習(xí)TensorFlow容器

2021-07-12 14:35:26

代碼架構(gòu)云原生

2015-03-23 12:33:28

2014-07-22 10:19:19

NeoBundle
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品中文在线 | 久久国产精品视频 | 欧美综合一区 | 久久久性 | 中文字幕一级毛片视频 | 久久香焦 | 久久精品天堂 | 91亚洲国产| 国产精品国产精品国产专区不卡 | 亚洲小视频 | 日韩视频一区二区在线 | 亚洲免费在线观看 | 欧美一级二级在线观看 | 亚洲精品视频免费观看 | 欧美综合一区二区 | 最新国产视频 | 成人在线视 | 污视频免费在线观看 | 国产精品亚洲视频 | 国产美女免费视频 | 国产一区二区三区在线看 | 4h影视| 中文字幕av一区二区三区 | 91精品国产91久久久久久 | 亚洲一区三区在线观看 | 国产精品伦理一区二区三区 | 自拍视频一区二区三区 | 亚洲精品成人av久久 | 日韩欧美一级片 | 在线免费观看亚洲 | 亚洲日韩中文字幕 | 在线 丝袜 欧美 日韩 制服 | 日本久久久一区二区三区 | 天天躁日日躁狠狠很躁 | 免费a级毛片在线播放 | 久久久性色精品国产免费观看 | 国产福利在线 | 国产精品久久久久一区二区三区 | 欧美在线观看一区 | 视频一区 国产精品 | 黄色在线播放视频 |