2
我正在使用使用簡單JSP的遺留應用程序,這些JSP使用<jsp:include>
嵌套。如何確定正在呈現哪些JSP頁面?
沒有框架被使用 - 只是JSP Servlets和過濾器。
任何人都可以提出一種方法來跟蹤哪些JSP頁面被渲染?
也許在渲染引擎(Jasper)中有一個日誌,或者可能是一個鉤子。
我正在使用使用簡單JSP的遺留應用程序,這些JSP使用<jsp:include>
嵌套。如何確定正在呈現哪些JSP頁面?
沒有框架被使用 - 只是JSP Servlets和過濾器。
任何人都可以提出一種方法來跟蹤哪些JSP頁面被渲染?
也許在渲染引擎(Jasper)中有一個日誌,或者可能是一個鉤子。
創建一個篩選器,該篩選器僅在*.jsp
和INCLUDE
調度程序的url-pattern
上偵聽。
<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);
}