gpt4 book ai didi

java - 如何识别非静态tomcat请求

转载 作者:行者123 更新时间:2023-11-30 11:54:38 25 4
gpt4 key购买 nike

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

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

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

这感觉有点尴尬,因为 Tomcat 已经完成了对 web.xml 的所有这些解析,所以我希望有某种现有的 API 来查询已解析的信息。

最佳答案

我正在开发 Tomcat 7;虽然 servlet 3.0 api 的新注释可能会使这更容易;它仍然可以在 Tomcat 6 上执行您所说的操作。由于您已经了解了向下过滤的基本概念,因此我不会介绍它,但您应该能够以这样的方式声明您的过滤器映射它们只应用于特定的 servlet。查看示例中的 web.xml,我发现 here :

<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>

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

关于java - 如何识别非静态tomcat请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com