首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别非静态tomcat请求

如何识别非静态tomcat请求
EN

Stack Overflow用户
提问于 2011-04-02 21:10:19
回答 1查看 259关注 0票数 2

我想将请求和响应的日志记录添加到我在Tomcat6中运行的Java webapp中。我的webapp提供由servlet生成的静态文件和动态内容的混合。我只想记录由servlet处理的请求和响应。

我认为实现日志记录的最好方法是使用过滤器来捕获传入的HttpServletRequest,并包装HttpServletResponse以允许捕获响应内容。

有没有办法在Tomcat过滤器中判断哪个servlet将处理传入的HttpServletRequest?到目前为止,我得到的最好的想法是解析web.xml文件,并提取从元素到servlet的映射。然后,我可以检查传入请求的路径,以确定哪个servlet将处理它。如果它不是Tomcat的DefaultServlet,那么我会记录该请求。

这感觉有点笨拙,因为Tomcat已经完成了对web.xml的所有解析,所以我希望有某种现有的应用程序接口来查询解析后的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-03 03:51:42

我正在Tomcat 7上工作;虽然servlet 3.0 api中的新注释可能会使这一点变得更容易;但仍然可以在Tomcat 6上做您所说的事情。既然您已经了解了向下过滤的基本概念,我将不再讨论这一点,但是您应该能够以这样一种方式声明您的过滤器映射,即它们只应用于特定的servlet。查看示例中的web.xml,我发现了here

代码语言:javascript
复制
<filter>
   <display-name>Filter1</display-name>
   <filter-name>Filter1</filter-name>
   <filter-class>Filter1</filter-class>
 </filter>

 <filter-mapping>
   <filter-name>Filter1</filter-name>
   <url-pattern>/Filter1</url-pattern>
 </filter-mapping>

 <filter-mapping>
   <filter-name>Filter1</filter-name>
   <!-- declaring which servlet to filter here...... -->
   <servlet-name>Servlet1</servlet-name>
   <dispatcher>REQUEST</dispatcher>
   <dispatcher>FORWARD</dispatcher>
   <dispatcher>INCLUDE</dispatcher>
   <dispatcher>ERROR</dispatcher>
 </filter-mapping>

我希望这能起作用。我也在做过滤器;所以如果它不让我知道,我会花更多的时间去研究它,因为我无论如何都要做这样的事情……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5523351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档