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

时间:2017-08-13 11:56:04

标签: java jsp java-ee web.xml servlet-filters

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

我想创建一个Filter,当我的站点(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次过滤器(index.jsp为1,包含为3)。

我怎么能解决这个问题只对cookie过滤器调用一次?有任何想法吗?我生气了......

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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