java - 使用Java EE拦截一个WEBAPP的所有请求

标签 java jsp servlets jakarta-ee

我在 Tomcat 中部署了一个 WEB 应用程序。我想拦截所有传入的请求 - 获取或发布并执行一些任务。我想拦截来自 servlet、JSP 页面等的调用。所以我创建了一个 web.xml 文件,看起来像这样 -

  <servlet>
    <description></description>
    <display-name>Transformer</display-name>
    <servlet-name>Transformer</servlet-name>
    <servlet-class>com.test.Transformer</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Transformer</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

正如我们所见,任何请求都会到达这个名为 Transformer 的 Controller servlet。现在这个 servlet 通常会尝试将一个请求从 A 转换为 B。我面临的问题是 - 我正在进入一个循环我只想将 url/test.jsp 的请求转换为/abc/test.jsp 但第二个请求/abc/test.jsp 也命中了 Transformer servlet,因此它没有按预期工作。 我想我可以使用 Filter,但我在应用程序中有太多的 servlet 和 JSP 页面,无法在任何地方放置过滤器。

最佳答案

使用 javax.servlet.Filter 进行拦截。您可以将其映射到 /*,它将拦截所有内容。

<filter>
    <filter-name>YourFilterName</filter-name>
    <filter-class>com.package.YourFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>YourFilterName</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

关于java - 使用Java EE拦截一个WEBAPP的所有请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067625/

相关文章:

servlets - 从 HttpServletRequest 获取美化后的 URL

java - 尝试让java程序连接到Mac上的本地Mysql数据库

java - 从数组中查找给定元素的前驱

java - 为什么 Gson Preconditions 在这种情况下会失败?

html - 页脚下方的大空白显示在 iPhone 实际设备的某些页面上,但在 Chrome 中的模拟器上不显示

java - 在 Java EE for SAP Cloud Platform 中使用目标

servlets - Grails Servlet 过滤器疯狂 : . ..ServletRequestAttributes 无法转换为 ..GrailsWebRequest

java - 如何截取自定义形状的屏幕截图?

jsp - JSTL - 如何获得值(value)的值(value)?

JSP:在 Tomcat 中需要引号,但在 WebSphere 中没有