Servlets 当servlet引发用户定义的异常时,未显示自定义错误html页面

Servlets 当servlet引发用户定义的异常时,未显示自定义错误html页面,servlets,Servlets,我是jsp和servlet的新手。我有一个error.html页面,我希望在servlet抛出用户定义的异常时显示该页面,但我得到一个500 inetrnal服务器错误。执行响应时,错误设置正常工作。sendError。。你能帮我一下吗?代码如下所示 if ((username != null) && (username.length() > 0)) { RequestDispatcher dispatcher = getServletContext().g

我是jsp和servlet的新手。我有一个error.html页面,我希望在servlet抛出用户定义的异常时显示该页面,但我得到一个500 inetrnal服务器错误。执行响应时,错误设置正常工作。sendError。。你能帮我一下吗?代码如下所示

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%确定正在运行您认为正在运行的代码?可以肯定的是,在抛出异常或发送响应错误之间进行更改之后,重新构建、重新部署并重新启动。顺便说一句,这绝对不是处理客户端输入验证错误的正确方法,但这是一个完整的故事。