如何对包含的页面使用 Java EE 过滤器?

How use a Java EE Filter with included pages?

我是使用 Java EE 过滤器的新手,我对它们有疑问。

我想创建一个过滤器,在加载我网站 (JSP) 的每个网页时执行一些操作。比如我要访问index.jsp,先加载Filter,再加载index.jsp。 concact.jsp、sales.jsp 等也是如此

出于这个原因,我决定在 web.xml:

中使用此代码
<filter-mapping>
    <filter-name>MainFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

问题是我的大部分 JSP 都包含在其他辅助 JSP 中,例如导航栏、页脚消息等。因此,我的 index.jsp 会像这样:

<html>
   <head>
  ... 
   </head>
   <body>
      <%@include file="/WEB-INF/includes/header.jsp"%>
      <%@include file="/WEB-INF/includes/navbar.jsp"%>

      // jsp/html/js stuff here...

      <%@include file="/WEB-INF/includes/footer.jsp"%>
   </body>
</html>

因此,如果我调用 index.jsp,过滤器将被调用 4 次(1 次用于 index.jsp,3 次用于包含)。

如何解决这个问题,使其只调用一次 cookie 过滤器?有任何想法吗?我快被它气死了...

谢谢!

尝试改用下一个过滤器配置:

<filter-mapping>
    <filter-name>MainFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>