(一)攔截*.do,裝飾器中匹配doweb
tomcat 可行tomcat
weblogic 不可行app
web.xmlless
~~~jsp
<filter>url
<filter-name>sitemesh</filter-name>spa
<filter-class>翻譯
com.opensymphony.module.sitemesh.filter.PageFilterxml
</filter-class>blog
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
~~~
decorators.xml
~~~
<decorators defaultdir="/pages/_decorators">
<excludes>
</excludes>
<decorator name="index" page="indexde.jsp">
<pattern>/index.do*</pattern>
</decorator>
</decorators>
~~~
(二)攔截forward *.jsp,裝飾器中匹配jsp
tomcat 可行
weblogic 可行
web.xml
~~~
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
~~~
decorators.xml
~~~
<decorators defaultdir="/pages/_decorators">
<excludes>
</excludes>
<decorator name="index" page="indexde.jsp">
<pattern>/pages/index*</pattern>
</decorator>
</decorators>
~~~
(三)攔截*.do,裝飾器中同時匹配do和jsp
tomcat 可行
weblogic 可行
緣由:
摘自 http://markmail.org/message/gmurb6e5lnnivnw2#query:+page:1+mid:2z2pgcifcyi7ukag+state:result
A request comes in to a servlet, that servlet forwards to
a JSP page using RequestDispatcher.forward(). Now, in Tomcat, a call to
request.getServletPath() before and after the call to chain.doFilter() returns
the exact same thing, regardless of whether the target servlet executes a
forward. But in WebLogic, the call to getServletPath() after chain.doFilter()
returns the forwarded path, not the original path. So the path matching that
works in Tomcat doesn't work in WL, and vice-versa.
翻譯:
一個請求進入servlet,servlet又使用RequestDispatcher.forward()了一個jsp頁面。
在tomcat中,chain.doFilter() 先後使用request.getServletPath() 得到的信息是一致的。
在weblogic中,chain.doFilter() 後使用request.getServletPath() 得到的是forward後的地址。
web.xml
~~~
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
~~~
decorators.xml
~~~
<decorators defaultdir="/pages/_decorators">
<excludes>
</excludes>
<decorator name="index" page="indexde.jsp">
<pattern>/pages/index*</pattern>
<pattern>/index.do*</pattern>
</decorator>
</decorators>
~~~