2012-01-25 3 views
0

요청을 처리하기 위해 요청을 처리하는 필터가 있으므로 요청 매개 변수를 사용하여 어느 세션에서 페이지를 쳤는지 추적 할 수 있습니다. jsp에서 jsp로 게시하거나 JSP로 직접 호출하는 것입니다. 그러나 양식이 새로운 jsp로 요청을 전달하는 서블릿에 게시 될 때 요청을 전달한 jsp를 볼 수 없습니다.RequestDispatcher에서 전달을 처리 한 페이지를 필터에서 결정하는 방법은 무엇입니까?

예를 들어 LoginServlet에 게시하는 로그인 페이지가 있다고 가정하면 LoginServlet은 index.jsp 또는 index1.jsp로 요청을 전달합니다. LoginServlet이 index.jsp 또는 index1.jsp를 반환하는지 여부를 요청을 통해 어떻게 확인할 수 있습니까?

이것은 2.3 서블릿 스펙을 사용하는 java 1.5 환경에 있습니다.

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); 
} 
} 

답변

0

chain.doFilter(..)

+0

안녕 Bozho 후 전화 request.getRequestURI(). 불행히도, 그것은 작동하지 않습니다. – rpierce

+0

무엇이 반환됩니까? – Bozho

+0

서비스 servlet의 URI를 리턴합니다. "/ LoginServlet" – rpierce