通过配置struts.xml解决 struts2和 dwr兼容的有关问题
通过配置struts.xml解决 struts2和 dwr兼容的问题
众所周知,strust2 通过在 web.xml中配置 filter,对所有路径的请求进行过滤。
代码如下:
而dwr也是在web.xml配置servlet,对请求dwr的路径进行过滤,
代码如下:
这样就会产生冲突:给dwr的请求让struts2过滤了。
幸好struts2有一个参数:struts.action.excludePattern ,意思是该参数的值指定的请求,struts2不对其进行过滤。
这样dwr就能进行过滤了。
解决办法:
在struts.xml中,添加:
问题解决。
注意:value="/dwr/test/.*,/dwr/.*" 中的/dwr/test/.*,/dwr/.*是正则表达式的写法,不是路径的写法!
注意那个“.*” ,而不是“*”
众所周知,strust2 通过在 web.xml中配置 filter,对所有路径的请求进行过滤。
代码如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
而dwr也是在web.xml配置servlet,对请求dwr的路径进行过滤,
代码如下:
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
这样就会产生冲突:给dwr的请求让struts2过滤了。
幸好struts2有一个参数:struts.action.excludePattern ,意思是该参数的值指定的请求,struts2不对其进行过滤。
这样dwr就能进行过滤了。
解决办法:
在struts.xml中,添加:
<struts> <constant name="struts.action.excludePattern" value="/dwr/test/.*,/dwr/.*"/> </struts>
问题解决。
注意:value="/dwr/test/.*,/dwr/.*" 中的/dwr/test/.*,/dwr/.*是正则表达式的写法,不是路径的写法!
注意那个“.*” ,而不是“*”