处理JSP页面中的response.redirect错误

时间:2010-03-02 07:43:48

标签: jsp redirect exception

我有一个条件,想要操纵或更改URL。我必须抓住错误并转到错误页面。但永远不会调用错误页面。

我正在使用response.sendRedirect(“MyURL”);在jsp页面中。如果URL正确,则其工作正常。

如果我操纵URL并使用该命令,它会在同一页面中显示HTTP 404错误,但不会调用错误页面

这是我的代码。

one.jsp  
---------  
<%@ page errorPage="exceptionHandler.jsp" %>  
<%

String webBrowserURL="http://URL"  

response.sendRedirect(webBrowserURL);  

%>  


exceptionHandler.jsp  
------------------------  

<%@ page isErrorPage="true" %>  
<% String root = request.getContextPath(); %>  

                <%  
                         //get the correct url form the database and send it to the page  
                %>  


<jsp:forward page="one.jsp" />  

帮帮我

3 个答案:

答案 0 :(得分:1)

因此,如果网址正确并且重定向工作正常,那么为什么您希望它使用错误的网址?

检查您是否使用了正确的URL,并确保您没有在JSP上打印任何内容,例如out.println(“something”),或者在调用重定向之前没有任何HTML代码。< / p>

答案 1 :(得分:1)

嘿,我认为你这样做是错误的。据我了解你的问题。如果你的one.jsp页面发生异常,我希望你能将你的页面重定向到errorHandler.jsp。

为了让你的代码正常工作,我们希望你能从这个例子中理解这一点。


one.jsp

<%@ page errorPage="exceptionHandler.jsp" %>  
<%

int x=0,y=23;
int z=y/x;

%>  

在上面的jsp页面中,我手动生成了一个异常来检查我的代码是否正常工作。您也可以尝试这样做以生成异常。

if(request.getParameter("e")==null)
{
throw new Exception();
}

exceptionHandler.jsp

  
<html>
<body>
    <%-- Log error on server side --%>
    <%
        //When the page attribute "isErrorPage" is set to "true" the exception object is available
        System.err.println("Error : " + exception.getMessage());
    %>

    <%-- Display generic error to client --%>
    <b>An error occur !</b>
</body>
</html>

答案 2 :(得分:0)

您不应该在JSP文件中执行此操作。那时改变响应通常已经太晚了。如果您检查服务器日志,那么您看到IllegalStateException: response already committed遍布日志的可能性很大。

做这种事情的最佳地点是Filter。记住JSP开发规则#1:原始Java代码属于Java类,而不属于JSP文件。您正在开发代码,而不是原型代码。