我正在开发一个使用简单 JSP 的遗留应用程序,这些 JSP 使用<jsp:include>
.
没有使用任何框架——只有 JSP Servlet 和过滤器。
谁能建议一种方法来跟踪正在呈现哪些 JSP 页面?
也许有一个日志,或者渲染引擎(Jasper)中的一个钩子。
我正在开发一个使用简单 JSP 的遗留应用程序,这些 JSP 使用<jsp:include>
.
没有使用任何框架——只有 JSP Servlet 和过滤器。
谁能建议一种方法来跟踪正在呈现哪些 JSP 页面?
也许有一个日志,或者渲染引擎(Jasper)中的一个钩子。
创建一个仅侦听url-pattern
of*.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>
通过key获取父页面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);
}