Как мне перенаправить на текущую страницу в Servlet Filter? - PullRequest
3 голосов
/ 07 октября 2009

У меня есть страница, на которой говорится: / myapp / test.jsp? QueryString = Y . Фильтр необходимо перенаправить на текущую страницу. Он должен идти в / myapp / test.jsp (без строки запроса). Ниже приведена информация о том, что он находится в корневом каталоге: / myapp . Я работаю в WAS6.1.

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpReq = (HttpServletRequest) req;
        HttpServletResponse httpResp = (HttpServletResponse) resp;
{
   boolean blnNeedToRedirect = true;
   if (blnNeedToRedirect) {
      httpResp.sendRedirect(".");
      return;
   }

   chain.doFilter(req, resp);
}

Ответы [ 2 ]

8 голосов
/ 07 октября 2009

Использование HttpServletrequest.getRequestURI . Это должно работать для вас:

httpResp.sendRedirect(httpReq.getRequestURI());
0 голосов
/ 29 сентября 2014

httpReq.getRequestURI () Дает вам путь сервлета, и он должен работать следующим образом. Чтобы перенаправить на ту же страницу, выполните следующую команду:

((HttpServletResponse) httpResp).sendRedirect(httpResp.encodeRedirectURL(httpReq.getRequestURI()));

Другой вариант - добавить заголовок Location с кодом состояния 302 следующим образом:

((HttpServletResponse) httpResp).setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
((HttpServletResponse) httpResp).addHeader("Location", request.getRequestURL().toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...