【JavaEE WEB 開發】Tomcat 詳解 Servlet 入門
一. Tomcat 下載安裝配置
1. Tomcat 下載
Tomcat 下載 :
-- 下載頁面 :
-- 下載對應平臺的版本 : 有 MAc/Linux 平臺, Windows 平臺的伺服器軟體;
2. Tomcat 執行 (Linux/Mac 環境)
Tomcat 執行 (Mac/Linux) :
-- 進入 Tomcat 安裝目錄 :
localhost:apache-tomcat-6.0.44 octopus$ pwd /Users/hanshuliang/develop/apache-tomcat-6.0.44 localhost:apache-tomcat-6.0.44 octopus$ ls LICENSE RELEASE-NOTES bin lib temp work NOTICE RUNNING.txt conf logs webapps localhost:apache-tomcat-6.0.44 octopus$
-- 進入 bin 目錄 :
localhost:apache-tomcat-6.0.44 octopus$ cd bin/ localhost:bin octopus$ ls bootstrap.jar cpappend.bat shutdown.bat tool-wrapper.bat catalina-tasks.xml daemon.sh shutdown.sh tool-wrapper.sh catalina.bat digest.bat startup.bat version.bat catalina.sh digest.sh startup.sh version.sh commons-daemon-native.tar.gz setclasspath.bat tomcat-juli.jar commons-daemon.jar setclasspath.sh tomcat-native.tar.gz
-- 執行啟動命令 : 特別注意, 需要使用 root 許可權啟動, 否則會報出許可權錯誤, 使用命令 sudo ./startup.sh ;
localhost:bin octopus$ sudo ./startup.sh Using CATALINA_BASE: /Users/hanshuliang/develop/apache-tomcat-6.0.44 Using CATALINA_HOME: /Users/hanshuliang/develop/apache-tomcat-6.0.44 Using CATALINA_TMPDIR: /Users/hanshuliang/develop/apache-tomcat-6.0.44/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home Using CLASSPATH: /Users/hanshuliang/develop/apache-tomcat-6.0.44/bin/bootstrap.jar
-- 檢視是否啟動 : 開啟瀏覽器, 輸入 localhost:8080 網址, 檢視是否出現 Tomcat 頁面;
3. Tomcat 執行 (Windows 環境)
Tomcat 執行 (Windows) :
-- 進入 Tomcat 安裝目錄 :
-- 進入 bin 目錄 : 啟動 startup 可執行程式;
-- 瀏覽器驗證 : 在瀏覽器輸入 http://localhost:8080/ 網址, 出現以下介面即配置正確;
3. Tomcat 錯誤排除
(1) 啟動閃退問題
啟動閃退 : 沒有配置 JAVA_HOME 環境變數, 使用 Tomcat 時, 必須配置 JAVA_HOME 環境變數;
-- 閃退原因 : tomcat 啟動後, 會查詢 JAVA_HOME 環境變數, 之後還會查詢 CATALINA_HOME 環境變數 (Tomcat 根目錄), CATALINA_HOME 這個變數建議不設定;
(2) CATALINA_HOME 配置出現問題
CATALINA_HOME 問題 : 不建議配置 CATALINA_HOME 環境變數;
-- 配置 CATALINA_HOME 出現的問題 : 如果有多個 Tomcat, 在任意 Tomcat 中啟動, 只會啟動 CATALINA_HOME 指定的 Tomcat 目錄;
-- 不配置 CATALINA_HOME : 在什麼地方啟動, 就會到啟動 startup 命令的 會將 命令所在的 Tomcat 啟動;
(3) 埠問題
端口占用問題解決方案 :
-- 1. 關閉佔用埠的程序 : 使用 cports 軟體檢視佔用埠的程序, 將其關閉即可, 工作管理員是看不到埠的;
-- 2. 修改 Tomcat 的 HTTP 埠 : 在 tomcat 的 conf/server.xml 中修改下面的配置, 預設 8080 , 修改成一個 其他的數字;
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
4. Tomcat 配置 與 目錄
(1) 瀏覽器埠設定
訪問伺服器埠配置 :
-- 配置檔案 : apache-tomcat-6.0.39\conf\server.xml;
-- 配置內容 : 當前預設設定的埠號是 8080, 訪問地址是 http://localhost:8080/;
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
(2) Tomcat 共享資源
共享一個資源 :
-- 建立 html 頁面 : 建立一個 index.html 文件, 裡面隨便寫一寫字串;
-- 將檔案放到 webapps 中的目錄中 : 在 webapps 中建立一個任意名稱目錄 test, 然後將 index.html 放置到該目錄中;
-- 啟動 Tomcat :
-- 瀏覽器中輸入 : 瀏覽器位址列輸入 http://localhost:8080/test/index.html 地址;
(3) URL 解析
解析 url 地址 : http://localhost:8080/test/index.html;
-- "http://" : url 所使用的協議名稱, http 協議;
-- "localhost" : 域名, 相當於 IP 地址;
-- 8080: : Tomcat 所使用的埠號;
-- /test : Tomcat 共享目錄的名稱, 在 webapps 下面的共享目錄;
-- index.html : 共享檔名稱;
(4) 目錄解析
Tomcat 目錄解析 :
-- 目錄截圖 :
-- bin 目錄 : Tomcat 的命令路徑, 包括 啟動 關閉 Tomcat 伺服器;
-- conf 目錄 : Tomcat 配置檔案目錄, 其中 server.xml 用於配置埠號;
-- lib 目錄 : Tomcat 的支援包;
-- logs 目錄 : 執行產生的日誌資訊存放目錄;
-- temp 目錄 : 臨時檔案存放目錄;
-- webapps 目錄 : 共享資源目錄, 不能單獨共享一個檔案, 需要建立的資料夾, 將檔案放到一個目錄中才能共享;
-- work 目錄 : tomcat 執行時的工作目錄;
二. J2EE 應用建立
1. 建立 J2EE 應用
(1) MyEclipse 中建立應用
MyEclipse 建立 Web 應用 :
-- 建立應用 : 選擇 File -> New -> Web Project 選項;
-- 配置應用資訊 : 注意 我們使用的是 Tomcat 6.0 版本, 對應 JavaEE 5.0 版本;
-- 建立 Tomcat 伺服器 : 選擇 Window -> Preference -> MyEclipse -> Server -> Tomcat 6.x 選項, 進行如下配置 :
-- 配置後效果 :
-- 部署應用 : 右鍵點選伺服器, 選擇 Add Deployment;
-- 將剛建立的 Hello World 部署到 Tomcat 中去 :
-- 部署後效果 :
-- 執行 Tomcat 伺服器 : 位址列輸入 http://localhost:8080/HelloWorld/ 地址;
-- MyEclipse 應用檔案截圖 :
(2) eclipse 中建立應用
Eclipse 建立 Web 應用 :
-- 建立 Dynamic Web Project :
-- 配置 應用 :
-- 應用目錄展示 :
(3) Eclipse 和 MyEclipse 中建立應用伺服器版本對應
Eclipse 伺服器版本對應 :
-- dynamic web module 2.4 <--> Tomcat 5.5
-- dynamic web module 2.5 <--> Tomcat 6.0
-- dynamic web module 3.0 <--> Tomcat 7.0
MyEclipse 伺服器版本對應 :
-- JavaEE 5.0 <--> Tomcat 6.0
-- J2EE 1.4 / J2EE 1.3 <--> Tomcat 5.5
2. Servlet 簡單示例
(1) Servlet 示例
Servlet 簡單示例 :
-- MyServlet.java 程式碼 :
package cn.org.octopus.hello;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//避免出現中文亂碼
resp.setContentType("text/html;charset=utf-8");
//輸出內容
resp.getWriter().write("當前時間 : " + new Date());
}
}
-- web.xml 配置檔案 :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 配置 Servlet 需要配置 Servlet 和 Servlet-mapping 兩個標籤 -->
<servlet>
<!-- Servlet 內部名稱-->
<servlet-name>HelloWorld</servlet-name>
<!-- Servlet 全路徑名-->
<servlet-class>cn.org.octopus.hello.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- Servlet 內部名稱-->
<servlet-name>HelloWorld</servlet-name>
<!-- servlet 訪問名稱 -->
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
-- 執行效果 :