今天被一哥们问到了这个问题 顿时觉得很囧 以前只知道404 ,500等几个错误
刚才到网上找了下 常用的有这些
200 ->请求已完成 记得在ajax中的status状态值也是用200来判断发送的请求是否完成
400 ->400 错误请求,原因可能是请求中存在异常字符或者是请求语法有错误等等引起
404 ->大名鼎鼎,找不到指定资源或者文件等, 想servlet的mapping配置错误 或者像struts的action配置错误都有可能引起该错误
414 ->请求URI太长,顾名思义.而以get方法的url长度上限是2048个字符(IE浏览器)
500 ->名气也不小,服务器不能完成请求,可能是jsp页面的java代码或者是servlet/action中的代码抛出了异常导致
505 ->HTTP版本不受支持 (不解)
捕捉这些的方法也很简单,大概有两种
1.
可以在web.xml中加入
<error-page>
<error-code>404</error-code> /*错误代码 */
<location>/404.jsp</location> /*用来捕捉的页面 */
</error-page>
<error-code>500</error-code> /*错误代码 */
<location>/500.jsp</location> /*用来捕捉的页面 */
</error-page>
</error-page>
这样的话貌似在火狐中可行 但是在IE中却不成功
解决办法:IE【工具】->【Internet选项】->【高级】中勾掉【显示友好http错误提示】
但是没有api可以自动修改该选项,所以不推荐
2.
<error-page>
<error-code>404</error-code> /*错误代码 */
<location>/error.jsp</location> /*用来捕捉的页面 */
</error-page>
<error-code>500</error-code> /*错误代码 */
<location>/error.jsp</location> /*用来捕捉的页面 */
</error-page>
</error-page>
把所有的异常统一到一个页面进行捕捉,在error.jsp中对异常进行解析,通过结果进而分配到不同的错误页面
在error.jsp中加入
<%
int status_code = -1;
String exception_info = null;
Exception theException = null;
status_code = ((Integer) request.getAttribute("javax.servlet.error.status_code"));
exception_info = (String) request.getAttribute("javax.servlet.error.message");
theException = (Exception) request.getAttribute("javax.servlet.error.exception_type");
if(status_code==404)
response.sendRedirect("error404.jsp"); //跳转404错误的jsp
if(status_code==500)
response.sendRedirect("error500.jsp"); //跳转500错误的jsp
%>
另外如果是防止在jsp的java代码抛出异常的话也可以 try...catch{response.sendRedrect();}
或者jstl的<c:catch> <c:redirect url=""></c:redirect></c:catch>