總體來說吧,很多年前,Sun 還在世的那個(gè)年代,在度過了早期用 C++寫 Html 解析器的蠻荒時(shí)期后,有一批最早的腳本程序進(jìn)入了 cgi 時(shí)代,此時(shí)的 Sun 決定進(jìn)軍這個(gè)領(lǐng)域,為了以示區(qū)別并顯得自己高大上,于是研發(fā)了 servlet 標(biāo)準(zhǔn),搞出了最早的 jsp。并給自己起了個(gè)高大上的稱號 JavaEE ( Java 企業(yè)級應(yīng)用標(biāo)準(zhǔn),其實(shí)不就是一堆服務(wù)器以 http 提供服務(wù)嗎,吹逼)。
既然是企業(yè)級標(biāo)準(zhǔn)那自然得有自己的服務(wù)器標(biāo)準(zhǔn)。于是 Servlet 標(biāo)準(zhǔn)誕生,以此標(biāo)準(zhǔn)實(shí)現(xiàn)的服務(wù)器稱為 Servle 容器服務(wù)器,Tomcat 就是其中代表,被 Sun 捐獻(xiàn)給了 Apache 基金會,那個(gè)時(shí)候的 Web 服務(wù)器還是個(gè)高大上的概念,當(dāng)時(shí)的 Java Web 程序的標(biāo)準(zhǔn)就是 War 包(其實(shí)就是個(gè) Zip 包),這就是 War 包的由來。
后來隨著服務(wù)器領(lǐng)域的屢次進(jìn)化,人們發(fā)現(xiàn)我們?yōu)槭裁匆@么笨重的 Web 服務(wù)器,還要實(shí)現(xiàn)一大堆 Servlet 之外的管理功能,簡化一下抽出核心概念 servlet 不是更好嗎,最早這么干的似乎是 Jetty,出現(xiàn)了可以內(nèi)嵌的 Servelet 服務(wù)器。
去掉了一大堆非核心功能。后來 tomcat 也跟進(jìn)了,再后來,本來很笨重的傳統(tǒng) JavaEE 服務(wù)器 Jboss 也搞了個(gè) undertow 來湊熱鬧。正好這個(gè)時(shí)候微服務(wù)的概念興起,“ use Jar,not War ”。要求淘汰傳統(tǒng) Servlet 服務(wù)器的呼聲就起來了。
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope></dependency><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-servlet-api</artifactId><version>8.0.36</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>