java - 如何检查servlet的执行是否没有异常

标签 java servlets

您好,我对 Java Servlet 还很陌生。我想确保服务器端代码的执行没有异常,即我想检查服务器代码上是否抛出任何异常。如何使用我得到的响应来确定这一点?

谢谢

最佳答案

由于 Servlet 在服务器端执行,因此服务器端代码决定是否应让客户端知道 exception或不。除非未处理异常(在 servlet 代码内)并且未为 Web 应用程序设置错误页面(两者都不推荐),否则客户端不会自动了解它。

理想情况下,客户永远不应该知道确切的 exception 。相反,客户端应该只收到一条正确的错误消息,说明为什么当前请求无法成功处理。

应根据需要共享错误详细信息。例如,如果输入验证失败,则在错误消息中包含无效字段的名称是有意义的。显示 NumberFormatException 是不合适的相反(例如,因为客户输入的年龄不是数字)。

编辑:
这里没有单一正确的方法。您可以采用多种方法,具体取决于您的 Web 应用程序希望向客户端提供有关错误的描述程度。

如果您只是需要让客户端知道发生了错误并提供简短的错误描述,您可以使用 sendError() (在幕后会自动将 HTTP 状态 header 设置为错误代码,例如下面的 400 Bad Request)

if (request.getParameter("id") == null)
    response.sendError(response.SC_BAD_REQUEST, "ID parameter missing");

其他方法包括配置 <error-pages>在你的web.xml对于不同的错误代码或异常。容器将自动转发到 .jsp下面配置的文件。

<error-page>
  <error-code>404</error-code>
  <location>/error404.jsp</location>
</error-page>

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

JSP 需要有其 isErrorPage属性设置为 true接收隐式 exception对象以获取有关异常的更多信息。例如,exception.getMessage()可以用于(在某些情况下)生成要向用户显示的错误消息。

客户端

客户端不需要执行任何特殊操作(例如 getError())即可接收错误。客户端仍然会接收浏览器呈现的 HTML,就像请求成功一样,但由于请求没有成功,客户端会收到 HTML 格式的错误消息(甚至可以 view > source 它)。

发送的 HTML 取决于您是否使用 sendError() (这将从您的 Web 服务器(如 Tomcat)发送标准错误响应)或您自己配置的 <error-page> JSP,在这种情况下您可以完全控制 HTML 错误模板。

关于java - 如何检查servlet的执行是否没有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17094440/

相关文章:

java - guice:自动绑定(bind)泛型类

tomcat - Heroku Java Tomcat ServletContextListener 不在 slugc 或重启时调用 contextDestroyed

java - 从 eclipse web 项目创建 war 文件

java - jGrasp 和 MinGW 出错 - 无法编译 - 代码 0xc000007b

java - 您如何创建一个立即触发,然后每 t 毫秒触发一次的 javax.swing.Timer?

java - 在小程序中绘制图像

java - 如何检查 Java 中的泛型枚举?

java - jsf 的依赖项(如 servlet)阻止应用程序启动

java - 基于AJAX POST向JSP文件发送请求

java - 如何将列表发送到请求它的 jsp?