Servlet 教程 之 Servlet 调试 2
Servlet 调试
测试/调试 Servlet 始终是开发使用过程中的难点。Servlet 往往涉及大量的客户端/服务器交互,可能会出现错误但又难以重现。
这里有一些提示和建议,可以帮助您调试。
消息日志
使用适当的日志记录方法来记录所有调试、警告和错误消息,这是非常好的想法,推荐使用 log4J 来记录所有的消息。
Servlet API 还提供了一个简单的输出信息的方式,使用 log() 方法,如下所示:
// 导入必需的 java 库
import java.io.;
import javax.servlet.;
import javax.servlet.http.*;
public class ContextLog extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
java.io.IOException {
String par = request.getParameter("par1");
// 调用两个 ServletContext.log 方法
ServletContext context = getServletContext( );
if (par == null || par.equals(""))
// 通过 Throwable 参数记录版本
context.log("No message received:",
new IllegalStateException("Missing parameter"));
else
context.log("Here is the visitor's message: " + par);
response.setContentType("text/html;charset=UTF-8");
java.io.PrintWriter out = response.getWriter( );
String title = "Context Log";
String docType = "<!DOCTYPE html> \n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<h2 align=\"center\">Messages sent</h2>\n" +
"</body></html>");
} //doGet
}
ServletContext 把它的文本消息记录到 Servlet 容器的日志文件中。对于 Tomcat,这些日志可以在 /logs 目录中找到。
这些日志文件确实对新出现的错误或问题的频率给出指示。正因为如此,建议在通常不会发生的异常的 catch 子句中使用 log() 函数。