Как определить, какие страницы JSP визуализируются? - PullRequest
2 голосов
/ 11 февраля 2010

Я работаю над унаследованным приложением, которое использует простые JSP, вложенные с использованием <jsp:include>.

Платформы не используются - только сервлеты JSP и фильтры.

Может кто-нибудь предложить способ отследить, какие страницы JSP отображаются?

Возможно, есть логи, или, возможно, хук в движке рендеринга (Джаспер).

1 Ответ

2 голосов
/ 11 февраля 2010

Создать фильтр, который прослушивает только url-pattern из *.jsp и только диспетчер INCLUDE.

<filter>
    <filter-name>includeFilter</filter-name>
    <filter-class>com.stackoverflow.q2242429.IncludeFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>includeFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

Получить родительскую страницу по HttpServletRequest#getServletPath() и включить страницу по HttpServletRequest#getAttribute() с ключом javax.servlet.include.servlet_path:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException
{
    HttpServletRequest httpreq = (HttpServletRequest) request;
    String parentPage = httpreq.getServletPath();
    String includePage = (String) httpreq.getAttribute("javax.servlet.include.servlet_path");
    // Log it here?

    chain.doFilter(request, response);
}
...