Servlets 当servlet引发用户定义的异常时,未显示自定义错误html页面
我是jsp和servlet的新手。我有一个error.html页面,我希望在servlet抛出用户定义的异常时显示该页面,但我得到一个500 inetrnal服务器错误。执行响应时,错误设置正常工作。sendError。。你能帮我一下吗?代码如下所示Servlets 当servlet引发用户定义的异常时,未显示自定义错误html页面,servlets,Servlets,我是jsp和servlet的新手。我有一个error.html页面,我希望在servlet抛出用户定义的异常时显示该页面,但我得到一个500 inetrnal服务器错误。执行响应时,错误设置正常工作。sendError。。你能帮我一下吗?代码如下所示 if ((username != null) && (username.length() > 0)) { RequestDispatcher dispatcher = getServletContext().g
if ((username != null) && (username.length() > 0)) {
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
//If user does not enter anything, throw a custom exception
else {
//response.sendError(500, "You did not enter your name");
throw new NameNotEnteredException();
}
我已在下面附上我的web.xml错误配置:
<error-page>
<exception-type>exceptions.NameNotEnteredException</exception-type>
<location>/NameNotEnteredError.html</location>
</error-page>
exceptions.NameNotInteredException
/nameNoteInteredError.html
我已经附加了glassfish服务器的堆栈跟踪:我希望这是您需要的堆栈跟踪
你在要求什么?否则请告诉我如何生成堆栈跟踪
===========================================堆栈跟踪的开始=================================
信息:hello_servlet_错误处理在359毫秒内成功部署。
警告:Servlet GreetingServlet2的StandardWrapperValve[GreetingServlet2]:PWC1406:Servlet.service()引发异常异常。NameNoteInteredException
位于servlets.GreetingServlet2.doGet(GreetingServlet2.java:48)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
位于com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
位于com.sun.enterprise.web.peSessionLockingsStandardPipeline.invoke(peSessionLockingsStandardPipeline.java:91)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
位于org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
位于com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
位于com.sun.grizzly.http.ProcessorTask.InvokeApter(ProcessorTask.java:828)
在com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
位于com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
在com.sun.grizzly.http.DefaultProtocolFilter.execute上(DefaultProtocolFilter.java:225)
位于com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)上
在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)上
http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
位于com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
在com.sun.grizzly.SelectionKeyContextTask.call上(SelectionKeyContextTask.java:59)
位于com.sun.grizzly.ContextTask.run(ContextTask.java:71)
位于com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
位于com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
运行(Thread.java:662)
===========================================================================================================================================如何在
web.xml
中设置错误页面
?在web.xml中显示错误页面配置我已将我的web.xml错误页面配置附在下面“内部服务器错误”的堆栈跟踪是什么你得到了哪一页?我觉得奇怪的是,你的症状描述与预期行为完全相反。您是否100%确定正在运行您认为正在运行的代码?可以肯定的是,在抛出异常或发送响应错误之间进行更改之后,重新构建、重新部署并重新启动。顺便说一句,这绝对不是处理客户端输入验证错误的正确方法,但这是一个完整的故事。您是如何在web.xml
中设置错误页的?在web.xml中显示错误页配置我已将我的web.xml错误页配置附在下面的是“内部服务器错误“你得到了哪一页?我觉得奇怪的是,你的症状描述与预期行为完全相反。您是否100%确定正在运行您认为正在运行的代码?可以肯定的是,在抛出异常或发送响应错误之间进行更改之后,重新构建、重新部署并重新启动。顺便说一句,这绝对不是处理客户端输入验证错误的正确方法,但这是一个完整的故事。