我试图在我的servlet代码中的某些条件下重定向到错误页面。但直到现在还没有任何结果。
所以我使用weblogic 10.x作为我的app服务器。我正在使用控制台将应用程序直接部署到托管服务器。
所以基本上我把它们装扮成.war文件并将它们部署为webapps。
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws IOException , ServletException
{
try
{
throw new Exception("503_Exception") ;
}
catch(Exception e)
{
response.sendRedirect(response.encodeRedirectURL(HandleError.handle(e, request)));
}
}
public class HandleError{
public static String handle(Throwable t, javax.servlet.http.HttpServletRequest request)
{
String sErrorMsg = t.getMessage();
if (sErrorMsg.equals("503_Exception")) {
request.setAttribute("msg", "INVALID SESSION");
return "/jsp/error/custom.html";
}
return "/default_error.html";
}
}
war文件结构
->jsp->error->custom.html
->web-inf
->web-inf->classes->project2->Class1.class
http:// machineNAME:3030 / Application3-Project2-context-root - >重定向到 - > http:// machineNAME:3030 / jsp / error / custom。 html - >>缺少实际上下文根的地方..
错误404 - 从RFC 2068找不到 超文本传输协议 - HTTP / 1.1: 10.4.5 404 Not Found
服务器找不到任何东西 匹配Request-URI。没有 指示是否是 条件是暂时的或永久的。
如果服务器不想制作 这些信息可供使用 客户端,状态码403 (禁止)可以代替使用。该 应该使用410(Gone)状态代码 如果服务器知道,通过一些 内部可配置机制, 旧资源是永久性的 不可用,没有转发 地址。
但如果我给 -
response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + HandleError.handle(e, request)));
我得到错误310(net :: ERR_TOO_MANY_REDIRECTS):在chrome和FF错误中说重新指示太多。
有人可以帮帮我吗? 提前致谢。 :)
答案 0 :(得分:2)
在开头添加request.getServletContext().getContextPath()
是一种很好的方法。但是你显然正在进入无限的重定向循环。不要忘记记录您的例外情况。因此,您将能够看到问题所在。