首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Tomcat 核心原理與 Web 應用部署實戰:從請求處理流程到雙重部署方式

     編輯:Java 綜合教學

前言

Tomcat 作為最流行的 Servlet 容器,理解其請求處理流程與部署機制,是 Java Web 開發者的必修課。本文結合圖解與實戰 Demo,講解 Tomcat 目錄結構、請求流轉、WAR 包部署與 `` 外部部署兩大方式。

一、Tomcat 請求處理流程

Tomcat 請求處理流程圖

  1. Connector(默認 8080 埠)接收 HTTP 請求,解析為 `Request`/`Response` 對象。
  2. Engine → Host → Context(Web 應用上下文)層層分發。
  3. Wrapper(Servlet 封裝)定位目標 Servlet,調用 `service(req, resp)`。
  4. Servlet 業務邏輯處理,寫回 `Response`,Connector 返回給瀏覽器。

二、實戰 Demo:簡單登錄頁面

1. 專案結構

web-deploy/
├── index.jsp          # 登錄表單
├── WEB-INF/
│   ├── web.xml        # Servlet 映射
│   └── classes/
│       └── com/lp/servlet/UserServlet.class

2. 核心代碼

index.jsp

<form action="user/login" method="post">
    請輸入用戶名:<input type="text" name="userName" />
    <input type="submit" value="提交" />
</form>

UserServlet.java

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException {
    resp.setContentType("text/html;charset=gb2312");
    PrintWriter out = resp.getWriter();
    String userName = req.getParameter("userName");
    out.println("歡迎你:" + userName);
}

web.xml

<servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.lp.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/user/login</url-pattern>
</servlet-mapping>

三、部署方式對比

方式操作步驟優點缺點
WAR 包放入 webapps 1. 專案打包為 `web-deploy.war`
2. 複製到 `$CATALINA_HOME/webapps/`
3. 啟動 Tomcat 自動解壓
最簡單、生產環境標準 修改代碼需重新打包部署
外部 Context 配置 1. 在 `$CATALINA_HOME/conf/Catalina/localhost/` 新建 `web-deploy.xml`
2. 內容:
`<Context path="/web-deploy" docBase="C:/91/web-deploy" reloadable="true" />`
3. 重啟 Tomcat
開發期熱部署(reloadable)、不動 WAR、指向任意目錄 需手動維護 XML、生產環境不推薦

四、關鍵配置解析

  • path:Web 應用上下文路徑,訪問 URL 前綴(如 `/web-deploy`)。
  • docBase:Web 應用根目錄絕對路徑(含 `WEB-INF`)。
  • reloadable="true":監聽 `/WEB-INF/classes/` 與 `/WEB-INF/lib/` 變更,自動重載類,**僅開發環境開啟**,生產環境會嚴重影響效能。
  • server.xml 中 `` 可修改端口。

五、常見問題排查

  1. 404:檢查 `path`、`url-pattern`、Servlet 類全限定名是否一致。
  2. 中文亂碼:`request.setCharacterEncoding("UTF-8")`、`response.setContentType("text/html;charset=UTF-8")`。
  3. 靜態資源 404:確認 `docBase` 指向正確、靜態文件在 WebRoot 目錄下。

總結

Tomcat 部署本質是「將 Web 應用掛載到 Host 的某個 Context 路徑」。生產用 WAR,開發用外部 Context + `reloadable`,靈活切換即可。深入理解 `server.xml`、`context.xml`、`web.xml` 三層配置關係,能快速定位部署故障。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved