Java 识别正在运行的JSP文件

Java 识别正在运行的JSP文件,java,debugging,jsp,servlets,Java,Debugging,Jsp,Servlets,我在一个巨大的jsp/servlet项目上工作,它有一个模板系统,它相当复杂(很难指出导入了哪些jsp文件,因为它基于所选的模板和一些其他参数)。当我使用web浏览器测试站点时,我想识别哪个jsp文件正在运行,而不向大量jsp文件添加调试信息。我怎么能这么做?有什么把戏吗? 顺便说一下,我使用eclipse和tomcat。创建一个 <filter-mapping> <filter-name>yourFilterName</filter-name>

我在一个巨大的jsp/servlet项目上工作,它有一个模板系统,它相当复杂(很难指出导入了哪些jsp文件,因为它基于所选的模板和一些其他参数)。当我使用web浏览器测试站点时,我想识别哪个jsp文件正在运行,而不向大量jsp文件添加调试信息。我怎么能这么做?有什么把戏吗? 顺便说一下,我使用eclipse和tomcat。创建一个

<filter-mapping>
    <filter-name>yourFilterName</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

谢谢你的回答。尽管servlet-api.2.4.jar在我的lib RequestDispatcher.FORWARD\u REQUEST\u URI和RequestDispatcher.INCLUDE\u REQUEST\u URI中,但无法解析。我已经导入了javax.servlet.RequestDispatcher。不客气。Servletcontainer特定的库不属于
/WEB-INF/lib
。Project、targeted runtime和web.xml必须至少设置为与Servlet 2.3兼容的版本(即引入
Filter
时)。最好将其设置为目标运行时支持的最高值。另一种方法是硬编码这些值。请参阅Javadoc中的常量字段值。再次感谢。我解决了这个问题。这些静态常量随Servlet3.0规范一起提供。至少需要Tomcat7。
String requestURI = ((HttpServletRequest) request).getRequestURI();
String forwardURI = (String) request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
String includeURI = (String) request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI);

if (includeURI != null) {
    System.out.println("JSP included: " + includeURI);
} else if (forwardURI != null) {
    System.out.println("JSP forwarded: " + requestURI); // No, not forwardURI!
} else {
    System.out.println("JSP requested: " + requestURI);
}

chain.doFilter(request, response);