1
我在一個巨大的jsp/servlet項目上工作,它有一個模板系統,它相當複雜(很難指出哪些jsp文件被導入,因爲它基於所選模板和其他一些參數) 。當我使用網絡瀏覽器測試站點時,我想確定哪個jsp文件正在運行,而無需向大量jsp文件添加調試信息。我怎麼能這樣做?任何詭計? 順便說一句,我使用eclipse和tomcat。識別哪個JSP文件正在運行
我在一個巨大的jsp/servlet項目上工作,它有一個模板系統,它相當複雜(很難指出哪些jsp文件被導入,因爲它基於所選模板和其他一些參數) 。當我使用網絡瀏覽器測試站點時,我想確定哪個jsp文件正在運行,而無需向大量jsp文件添加調試信息。我怎麼能這樣做?任何詭計? 順便說一句,我使用eclipse和tomcat。識別哪個JSP文件正在運行
創建其被映射一個Filter
如下
<filter-mapping>
<filter-name>yourFilterName</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
並在doFilter()
方法做大致以下作業。
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);
感謝您的回答。儘管servlet-api.2.4.jar位於我的lib上,但無法解析RequestDispatcher.FORWARD_REQUEST_URI和RequestDispatcher.INCLUDE_REQUEST_URI。我已經導入了javax.servlet.RequestDispatcher。 – 2011-03-18 15:54:59
不客氣。 ServletContainer特定的庫不在'/ WEB-INF/lib'中。項目,目標運行時和web.xml必須設置爲至少一個兼容Servlet 2.3的版本(即在引入「Filter」時)。最好將其設置爲目標運行時支持的最高值。另一種方法是對這些值進行硬編碼。查看Javadoc中的常量字段值。 – BalusC 2011-03-18 15:55:51
再次感謝。我解決了這個問題。這些靜態常量附帶Servlet 3.0規範。至少需要Tomcat 7。 – 2011-03-18 19:40:32