1

是否可以记录正在访问的确切 URL 和传递的参数?我从使用相同 jsp 文件名的多个站点记录了一系列错误。我似乎无法在我的开发盒上复制服务器错误,因此我想尽可能多地记录以尝试缩小问题范围。

我得到的错误是:

    01-Mar-2013 21:37:58 org.apache.catalina.core.ApplicationDispatcher invoke
    SEVERE: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:991)
    at java.lang.Double.valueOf(Double.java:475)
    at org.apache.jsp.product_jsp._jspService(product_jsp.java:212)

如果我能弄清楚正在尝试访问的内容,我可以解决该错误,如果这有意义的话。

任何帮助将非常感激 :-)

4

1 回答 1

0

您可以像这样定义错误处理程序页面web.xml

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/...</location>
</error-page>

并在该页面/servlet 记录原始请求信息。它应该是可用的,因为根据 Servlet 规范

如果错误处理程序的位置是 servlet 或 JSP 页面:

■ 容器创建的原始解包请求和响应对象被传递到servlet 或JSP 页面。

■ 请求路径和属性的设置就像对错误资源的RequestDispatcher.forward 已执行一样。

因此,您可以使用getRequestURL()或其他方法或任何请求属性javax.servlet.error.status_code, javax.servlet.error.exception_type, javax.servlet.error.message, javax.servlet.error.exception, javax.servlet.error.request_uri, javax.servlet.error.servlet_name

获取所有需要的信息来记录。

于 2013-03-06T13:34:18.030 回答