您好我是Java Servlets的新手。我想确保服务器端代码的执行是免费的,即我想检查服务器代码是否有任何异常。如何确定使用我得到的响应?
谢谢
答案 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>