如何验证错误类型 5xx 或 4xx 的自定义错误屏幕
How to verify custom error screen for error type 5xx or 4xx
我已经通过在 web.xml 中使用错误页面标记为任何 http 5xx 或 4xx 错误创建了一个自定义错误屏幕,但最好的验证方法应该是什么。我能够验证错误类型 401 和 403,但不知道其他错误。
为了快速手动测试错误页面是否正常工作,我会在处理请求的控制器代码中抛出一个运行时异常,例如:
throw new RuntimeException("test");
一个非常简单的 servlet 怎么样:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/testResponse")
public class TestResponseServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
String returnCode = request.getParameter("returnCode");
if( returnCode == null ) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "missing returnCode parameter");
return;
}
response.sendError(Integer.parseInt(returnCode), "returned code " + returnCode );
}
}
用类似 http://localhost:8080/testResponse?returnCode=505
的方式调用它
我已经通过在 web.xml 中使用错误页面标记为任何 http 5xx 或 4xx 错误创建了一个自定义错误屏幕,但最好的验证方法应该是什么。我能够验证错误类型 401 和 403,但不知道其他错误。
为了快速手动测试错误页面是否正常工作,我会在处理请求的控制器代码中抛出一个运行时异常,例如:
throw new RuntimeException("test");
一个非常简单的 servlet 怎么样:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/testResponse")
public class TestResponseServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
String returnCode = request.getParameter("returnCode");
if( returnCode == null ) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "missing returnCode parameter");
return;
}
response.sendError(Integer.parseInt(returnCode), "returned code " + returnCode );
}
}
用类似 http://localhost:8080/testResponse?returnCode=505