調試JSP前需確保已安裝JDK(Java開發工具包)和Tomcat(JSP服務器),這是調試的基礎環境。
sudo apt update
sudo apt install openjdk-11-jdk
安裝完成后驗證版本:java -version # 確認Java版本
javac -version # 確認編譯器可用
/opt
目錄,設置權限和systemd服務:wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz
sudo tar zxvf apache-tomcat-9.0.53.tar.gz -C /opt
sudo mv /opt/apache-tomcat-9.0.53 /opt/tomcat
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat # 創建專用tomcat用戶
sudo chown -R tomcat:tomcat /opt/tomcat # 設置目錄所有權
創建systemd服務文件/etc/systemd/system/tomcat.service
,內容如下(關鍵配置已標注):[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" # 指向JDK路徑
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M" # 內存分配
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
Restart=always
[Install]
WantedBy=multi-user.target
啟動Tomcat并設置開機自啟:sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
Tomcat的日志是定位JSP問題的核心工具,日志文件位于/opt/tomcat/logs/
目錄下,重點查看以下文件:
catalina.out
:記錄Tomcat啟動、關閉及運行時的全局日志(包含JSP編譯錯誤);localhost.YYYY-MM-DD.log
:記錄Web應用的上下文加載、Servlet初始化等應用級日志。tail
命令實時查看日志:sudo tail -f /opt/tomcat/logs/catalina.out
當JSP頁面出現500錯誤時,日志中會顯示具體的異常堆棧(如NullPointerException
、JasperException
),幫助快速定位問題。
在JSP頁面的腳本片段(<% %>
)中插入System.out.println()
,輸出變量值或流程標記到Tomcat控制臺(即catalina.out
)。例如:
<%
String username = request.getParameter("username");
System.out.println("Received username: " + username); // 輸出到日志
%>
重啟Tomcat后,通過tail -f catalina.out
查看輸出,適用于簡單的變量值驗證。
JDB是JDK內置的命令行調試工具,可用于調試JSP編譯后的Servlet代碼(JSP最終會被編譯為*.java
文件,存放在/opt/tomcat/work/Catalina/localhost/your-app/
目錄下)。
/opt/tomcat/bin/catalina.sh
文件,在JAVA_OPTS
中添加JVM調試參數:export JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
重啟Tomcat使配置生效:sudo systemctl restart tomcat
jdb -attach localhost:5005
連接成功后,使用JDB命令設置斷點、單步執行(如stop in com.example.YourServlet.doGet
設置方法斷點,next
單步執行),查看變量值(locals
命令)。集成開發環境(如IntelliJ IDEA、Eclipse)提供圖形化調試界面,更適合復雜項目的調試。以IntelliJ IDEA為例:
localhost
,端口為5005
(與Tomcat的調試端口一致);catalina.sh
并重啟Tomcat;使用瀏覽器(如Chrome、Firefox)的開發者工具(按F12
打開),查看以下信息:
tomcat
)對Web應用目錄(/opt/tomcat/webapps/your-app
)有讀寫權限;sudo ufw allow 5005/tcp