Как определить по фильтру, какая страница обслуживала форварда из RequestDispatcher? - PullRequest
0 голосов
/ 26 января 2012

У меня есть фильтр, который обрабатывает запросы, чтобы регистрировать их, поэтому я могу отслеживать, какой сеанс зашел на страницу и в какое время с какими параметрами запроса.отлично работает ... отправка сообщений из jsp в jsp или прямой вызов в jsp.Когда форма отправляется сервлету, который перенаправляет этот запрос в новый jsp, я не могу увидеть, в какой jsp запрос был переадресован.

Например, предположим, у меня есть страница входа в систему, которая публикует сообщенияв LoginServlet, который затем перенаправляет запрос в index.jsp или index1.jsp.Как я могу определить из запроса, возвращает ли LoginServlet index.jsp или index1.jsp?

Это в среде Java 1.5 с использованием спецификации сервлета 2.3.

public class PageLogFilter implements Filter {

FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
}
public void destroy() {
    this.filterConfig = null;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException {
    try {
        if (request instanceof HttpServletRequest) {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpSession session = req.getSession(false);

                //For non-forwards, I can call req.getRequestURI() to determine which 
                //page was returned. For forwards, it returns me the URI of the  
                //servlet which processed the post. I'd like to also get the URI
                //of the jsp to which the request was forwarded by the servlet
            }
        }
    } catch (Exception e) {
        System.out.println("-- ERROR IN PageLogFilter: " + e.getLocalizedMessage());
    }
    chain.doFilter(request, response);
}
}

1 Ответ

0 голосов
/ 26 января 2012

Звоните request.getRequestURI() после chain.doFilter(..)

...