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

Sha*_*mik 3 java jsp servlets java-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>
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,任何请求都将发送到名为Transformer的控制器servlet.现在这个servlet通常会尝试将一个请求从A转换为B.我面临的问题是 - 我进入循环我只想将url /test.jsp的请求转换为/abc/test.jsp但是第二个请求/abc/test.jsp也在点击Transformer servlet,结果它没有按预期工作.我想我可以使用Filter但是我在应用程序中有太多的servlet和JSP页面,无处不在.

Boz*_*zho 8

使用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>
Run Code Online (Sandbox Code Playgroud)