【问题标题】:Intercepting all request of one WEBAPP using Java EE使用 Java EE 拦截一个 WEBAPP 的所有请求
【发布时间】:2011-01-05 06:34:55
【问题描述】:

我在 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 的控制器 servlet。现在这个 servlet 通常会尝试将一个请求从 A 转换为 B。我面临的问题是 - 我进入一个循环我只想将 url /test.jsp 的请求转换为 /abc/test.jsp 但第二个请求/abc/test.jsp 也遇到了 Transformer servlet,因此它没有按预期工作。 我想我可以使用过滤器,但我的应用程序中有太多的 servlet 和 JSP 页面,无法将过滤器放在任何地方。

【问题讨论】:

    标签: java jsp servlets jakarta-ee


    【解决方案1】:

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

    【讨论】:

    • 是的,你是对的。我对过滤器的使用感到困惑。它解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2023-03-14
    • 2012-10-14
    • 2023-04-02
    相关资源
    最近更新 更多