開始前請確認已安裝並配置好以下三大核心工具:
在任意磁碟根目錄(如 D:\)手動建立以下標準目錄樹:
shop/ ← 專案根目錄(即 Context Path)
├── src/ ← Java 源碼目錄
│ └── com/zyz/ ← 套件結構
│ └── Dog.java ← 實體類
├── WEB-INF/ ← 受保護資源目錄(瀏覽器不可直接訪問)
│ ├── web.xml ← 部署描述符(可選,Servlet 3.0+ 可省略)
│ └── classes/ ← 編譯輸出目錄
│ └── com/zyz/ ← 編譯後的 .class 檔案
└── index.jsp ← 歡迎頁面(位於專案根目錄)

package com.zyz;
public class Dog {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
打開 CMD(Win+R → cmd),依序執行:
d: cd shop javac src\com\zyz\Dog.java -d WEB-INF\classes
-d WEB-INF\classes 指定編譯輸出目錄,自動建立套件對應的子目錄結構WEB-INF\classes\com\zyz\Dog.class 將自動生成<%@ page language="java" pageEncoding="utf-8" %>
<%@ page import="com.zyz.Dog" %>
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8"/>
<title>Dog Shop</title>
</head>
<body>
<h1>
<%
Dog d = new Dog();
d.setName("花花");
out.println(d.getName());
%>
</h1>
</body>
</html>
shop 整個複製到 $CATALINA_HOME/webapps/ 下src 目錄(生產環境不需要源碼)

$CATALINA_HOME/bin/startup.sh (Linux/Mac) 或 startup.bat (Windows)https://localhost:8080/shop/index.jsp
| 關鍵點 | 說明 |
|---|---|
| WEB-INF 目錄 | 受容器保護,瀏覽器無法直接訪問內部資源,安全存放類檔案、配置檔、lib 包 |
| classes 目錄 | 類加載器默認掃描路徑,編譯輸出必須放此處 |
| javac -d 參數 | 自動根據 package 聲明建立目錄結構,避免手動建立資料夾出錯 |
| JSP 編譯原理 | 首次訪問時由容器翻譯為 Servlet,再編譯為 class,最終執行 |
| Context Path | 專案根目錄名稱即為訪問路徑前綴(此處為 /shop) |
web.xml 配置 Servlet、Filter、Listener、歡迎頁面列表WEB-INF/lib/ 目錄context.xml 或 server.xml 定義 DataSourceserver.xml 的 <Context reloadable="true">