Tomcat
是一個開源、免費的Web服務器,屬於輕量級web服務器,適合部署中小型、併發訪問用戶不是不少的web項目,是部署中小型jsp的首選。java
Tomcat
和Nginx
、Apache
等Web
服務器同樣,具備處理靜態資源的能力,但Tomcat
處理靜態HTML
的能力不如Nginx、Apache。
web
此外tomcat仍是一個Servlet
和JSP
容器,Tomcat
的默認模式是獨立的Servlet
容器。apache
通常狀況下多用Nginx+Tomcat
,Nginx
處理靜態資源,Tomcat
處理動態資源編程
Tomcat就是Servlet容器。windows
下載tomcat的zip壓縮包,瀏覽器
須要設置2個環境變量:tomcat
注意是主目錄,不是主目錄下的bin目錄。服務器
設置這2個環境變量後,就能夠雙擊startup.bat啓動tomcat了。併發
無論是雙擊startup.bat啓動,仍是命令行下啓動,都須要設置這2個環境變量。app
在命令行下執行命令時,操做系統會到PATH環境變量指定的路徑中,找對應的程序來執行命令。
若是在PATH指定的路徑下找不到對應的程序,則在命令行當前的路徑下找,再找不到就提示「xxx不是內部或外部命令」。
有2種方式:
在命令提示符下,執行java、javac也是一樣的道理。
說明:須要重啓計算機,環境變量的配置纔會生效。
雙擊bin下的startup.bat啓動,雙擊shutdown.bat關閉
命令行下startup啓動,shutdown關閉
啓動tomcat後,在瀏覽器地址欄輸入localhost:8080,或者127.0.0.1:8080,可轉到tomcat服務器的控制檯。
startup.bat只是tomcat的啓動入口,和編程中的主類、主函數差很少,只是程序入口,調用其它模塊就好了。
startup.bat實際是調用catalina.bat來完成啓動的,catalina.bat負責啓動,startup.bat只負責調用catalina.bat。
好比已經有一個啓動的tomcat了、IDEA中正在使用tomcat進行調試,或者8080端口被其它程序佔用。
apache使用的端口號默認是80,tomcat使用的端口號默認是8080。
若是url中未指定端口號,瀏覽器默認使用80端口。服務器使用的不是80端口時,咱們須要手動在域名|IP地址後面指定端口號。
一個程序可使用多個端口,但一個端口不能同時被多個程序使用。
任務管理器 -> 詳細信息 -> PID ,查看8080端口是否被佔用。PID,即port id,端口號。
若是端口號被佔用,有2種解決方式:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
將8080改成其它未使用的端口號。
訪問時,瀏覽器地址中的端口號也要換爲對應的。
咱們可在如下3項中查看、配置tomcat服務器,以及tomcat上的web項目:
這三項的所需的權限不一樣,須要在conf->tomcat-users.xml中配置:
<tomcat-users> <user username="chy" password="abcd" roles="manager-gui,admin-gui"/> </tomcat-users>
tomcat默認沒有設置用戶,須要咱們手動添加一個用戶。
roles只能使用特定的值,這些值對應權限。
中文亂碼緣由:
windows的控制檯(黑框框)默認使用gbk,tomcat的日誌默認使用utf-8(tomcat會把日誌輸出到黑框框、log文件夾下的日誌文件中)。
tomcat用utf-8編碼日誌,把日誌輸出給windows的黑框框,windows使用gbk來解碼,顯式日誌信息,
utf-8用3個字節表示一箇中文字符,gbk用2個字節表示一箇中文字符,對不上,解析不了,亂碼。
英文都是1個字節,能解析,正常顯示。
解決方式:
conf -> logging.properties -> 搜索 java.util.logging.ConsoleHandler.encoding :
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
tomcat使用的是jdk自帶的日誌處理器。
一看到console,就知道是輸出到控制檯的日誌,將UTF-8改成GBK,重啓tomcat便可。