gpt4 book ai didi

java - 处理Servlet中的异常和错误页面

转载 作者:行者123 更新时间:2023-12-02 09:52:05 25 4
gpt4 key购买 nike

通过使用浏览器,当抛出错误时,我会正确地重定向到web.xml文件中指定的自定义错误页面

但是为什么我总是在 curl 的输出中看到 默认 400 错误页面及其跟踪?我缺少处理的异常类型(我正在使用 java.lang.Exception)或其他类型?

enter image description here

这是 servlet 的代码:

package test.company.com;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.Exception;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

try {
// stuff here ..

} catch (Throwable e) {
// Log and throw the superclass Exception
LOGGER.log(Level.SEVERE, e.getMessage());
throw new ServletException();
}

}

这是 web.xml 配置文件:

<error-page>  
<exception-type>javax.servlet.ServletException</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>

最佳答案

请参阅此处的前两个答案:Which characters make a URL invalid? - 您正在发送<aaa>从命令行,和 <>不允许出现在 URL 中。浏览器自动将这些字符编码为 %3C%3E当您将它们输入地址字段时,它们是实体,但是 curl不 - 它希望你知道你在做什么。 ;-) 因此,Tomcat 甚至不调用您的 servlet,并以错误请求(错误 400)进行响应。

所以,替换<aaa>%3Caaa%3E在命令行中,您将看到您的 servlet(可能还有预期的错误 500)。

关于java - 处理Servlet中的异常和错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56254912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com