如何检查是否有servlet的执行是免费的

时间:2013-06-13 18:29:59

标签: java servlets

您好我是Java Servlets的新手。我想确保服务器端代码的执行是免费的,即我想检查服务器代码是否有任何异常。如何确定使用我得到的响应?

谢谢

3 个答案:

答案 0 :(得分:1)

如果从servlet获取内容,那里没有未处理的异常。如果要获取已处理异常的信息,请将它们记录在catch子句中。

答案 1 :(得分:1)

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

理想情况下,永远不应让客户知道确切的exception。相反,客户端应该只收到正确的 错误消息 ,以了解当前请求无法成功处理的原因。

错误详情应根据需要分享。例如,如果输入验证失败,则在错误消息中包含无效字段的名称是有意义的。显示NumberFormatException是不恰当的(例如,因为客户输入了非数字的年龄)。

修改
这里没有一个单一的正确方法。根据您的Web应用程序想要了解客户端错误的描述程度,您可以采用各种方法。

如果您只是要让客户端知道错误描述发生了错误,您可以使用sendError()(在幕后会自动将HTTP状态标头设置为错误代码,如 400错误请求以下)

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错误模板。

答案 2 :(得分:0)

使用log4j来捕获你的异常(使用try catch块),但是如果这是你正在做的某种功课,那么这可能是你可以根据http返回代码检查的一种方式。你可以使用jquery http://jquery.com/。以下是404错误的示例代码。 此外,this页面包含所有http错误代码及其含义。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
   $(function() {
      var urlPath = "some_url";
      $.ajax(urlPath,
      {
         statusCode: {
         404: function() {
            alert('page not found');
         }
      }
   });   
});
</script>