tomcat
簡介
Tomcat 是由 Apache 開發的一個 Servlet 容器,實現了對 Servlet 和 JSP 的支持,並提供了作爲Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。
由於 Tomcat 本身也內含了一個 HTTP 服務器,它也可以被視作一個單獨的 Web 服務器。但是,不能將 Tomcat 和 Apache HTTP 服務器混淆,Apache HTTP 服務器是一個用 C 語言實現的 HTTP Web 服務器;這兩個 HTTP web server 不是捆綁在一起的。Tomcat 包含了一個配置管理工具,也可以通過編輯XML格式的配置文件來進行配置。
重要目錄
/bin - Tomcat 腳本存放目錄(如啓動、關閉腳本)。 *.sh 文件用於 Unix 系統; *.bat 文件用於 Windows 系統。
/conf - Tomcat 配置文件目錄。
/logs - Tomcat 默認日誌目錄。
/webapps - webapp 運行的目錄。
web工程目錄結構
webapp:工程發佈文件夾。其實每個 war 包都可以視爲 webapp 的壓縮包。
META-INF:META-INF 目錄用於存放工程自身相關的一些信息,元文件信息,通常由開發工具,環境自動生成。
WEB-INF:Java web應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。
/WEB-INF/lib:存放程序所需要的所有 jar 文件。
/WEB-INF/web.xml:web 應用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和組成應用的其它組件,以及應用初始化參數、安全管理約束等。
啓動
嵌入式
API方式
在pom.xml中添加依賴
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.24</version>
</dependency>
實例代碼:
import java.util.Optional;
import org.apache.catalina.startup.Tomcat;
public class SimpleTomcatServer {
private static final int PORT = 8080;
private static final String CONTEXT_PATH = "/javatool-server";
public static void main(String[] args) throws Exception {
// 設定 profile
Optional<String> profile = Optional.ofNullable(System.getProperty("spring.profiles.active"));
System.setProperty("spring.profiles.active", profile.orElse("develop"));
Tomcat tomcat = new Tomcat();
tomcat.setPort(PORT);
tomcat.getHost().setAppBase(".");
tomcat.addWebapp(CONTEXT_PATH, getAbsolutePath() + "src/main/webapp");
tomcat.start();
tomcat.getServer().await();
}
private static String getAbsolutePath() {
String path = null;
String folderPath = SimpleEmbedTomcatServer.class.getProtectionDomain().getCodeSource().getLocation().getPath()
.substring(1);
if (folderPath.indexOf("target") > 0) {
path = folderPath.substring(0, folderPath.indexOf("target"));
}
return path;
}
}
maven 插件
在pom.xml中添加依賴
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/${project.artifactId}</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
運行 mvn tomcat7:run 命令,啓動 Tomcat。
成功後,可以訪問 http://localhost:8080/xxx (xxx 是 ${project.artifactId} 指定的項目名)。