调试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