我有一个条件,想要操纵或更改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" />
帮帮我
答案 0 :(得分:1)
因此,如果网址正确并且重定向工作正常,那么为什么您希望它使用错误的网址?
检查您是否使用了正确的URL,并确保您没有在JSP上打印任何内容,例如out.println(“something”),或者在调用重定向之前没有任何HTML代码。< / p>
答案 1 :(得分:1)
为了让你的代码正常工作,我们希望你能从这个例子中理解这一点。
<%@ page errorPage="exceptionHandler.jsp" %>
<%
int x=0,y=23;
int z=y/x;
%>
在上面的jsp页面中,我手动生成了一个异常来检查我的代码是否正常工作。您也可以尝试这样做以生成异常。
if(request.getParameter("e")==null)
{
throw new Exception();
}
<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文件。您正在开发代码,而不是原型代码。