2013-12-14 5 views
1

Я пишу веб-приложение, которое перенаправляет запрос (включая запрос html и запрос сервлета, $ .post или $ .get) на определенную веб-страницу в фильтрах. он работает для html запрос страницы. Если я перейду на веб-страницу, к которой я не могу получить доступ, она перенаправляется, как и ожидалось. но если я нажму кнопку, отправьте запрос сервлета, к которому я не могу получить доступ, он не перенаправляет. То, что он делает, просто возвращает содержимое веб-страницы REDIRECT_URL и веб-страницу, на которую я щелкнул и отправил запрос еще там. Ниже приведен код, который я использую для перенаправленияКак перенаправить запрос сервлета на страницу html в фильтре

httpResponse.setContentType("text/html;charset=UTF-8"); 
      httpResponse.setHeader("pragma", "no-cache"); 
      httpResponse.setHeader("Cache-Control", "no-cache"); 

httpRequest.getRequestDispatcher(REDIRECT_URL).forward(httpRequest, httpResponse); 

Как я могу сделать то, что ожидаю в фильтре. Я не хочу перенаправлять в Интернете. Я хочу, чтобы все работы выполнялись с помощью фильтра. Спасибо ..

ответ

1

getRequestDispatcher (REDIRECT_URL) .forward не перенаправляет. Он делает серверную сторону вперед, а это означает, что контейнер просто сделает другой внутренний запрос за кулисами.

Что вы хотите HttpServletRequest.sendRedirect:

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html#sendRedirect(java.lang.String)

httpResponse.setContentType("text/html;charset=UTF-8"); 
httpResponse.setHeader("pragma", "no-cache"); 
httpResponse.setHeader("Cache-Control", "no-cache"); 

httpResponse.sendRedirect(REDIRECT_URL); 
+0

Он не хочет, чтобы перенаправить. Кроме того, при использовании фильтров вы подвергаетесь риску циклических перенаправлений, поэтому предпочтительнее пересылка. – ayahuasca

Смежные вопросы