Обработка ошибок response.redirect на странице JSP - PullRequest
3 голосов
/ 02 марта 2010

У меня есть условие, когда 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 ]

1 голос
/ 11 сентября 2014

Эй, чувак, я думаю, ты делаешь это неправильно. Как я понимаю твой вопрос. Я надеюсь, что вы хотите перенаправить свою страницу в errorHandler.jsp в случае, если на вашей странице one.jsp возникнет исключительная ситуация.

Чтобы ваш код работал правильно, давайте переопределим оба 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>
1 голос
/ 02 марта 2010

Итак, если URL-адрес правильный и перенаправление работает нормально, то почему вы ожидаете, что он будет работать с неправильным URL-адресом?

Убедитесь, что вы используете правильный URL-адрес и убедитесь, что вы ничего не печатаете на своем JSP, например, out.println («что-то») или что у вас нет HTML-кода перед вызовом перенаправления.

0 голосов
/ 02 марта 2010

Вы не должны делать это внутри файла JSP. Тогда уже слишком поздно менять ответ. Если вы проверите журналы сервера, то велика вероятность, что вы увидите IllegalStateException: response already committed, распространяющийся по журналам.

Лучшее место для подобных вещей - Filter. Помните правило разработки JSP # 1: сырой код Java принадлежит классам Java, а не файлам JSP Вы разрабатываете код, а не создаете прототип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...