struts2项目中使dwr共存的方法
主要说下过滤器冲突的问题,至于struts2和dwr各自的使用方法,请您自行了解下。
一般我们的struts2项目的web.xml文件中会进行如下的配置:
<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是我们是这样配置的:
<servlet>
<servlet-name>dwr</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>
这样配置以后我们的dwr在项目中是无法起到任何作用的,因为我们交给dwr请求的内容给都被struts2拦截到拿走处理了,这时候我们就需要修改struts2的拦截的地址了
将上面
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
过滤方式修改为*.do,这样以.do结尾的请求都会被拦截处理,这时我们的dwr就不会被拦截了,与此同时在struts.xml文件中我们应该加上如下配置:
<constant name="struts.action.extension" value="do"/>
为了防止dwr出现什么安全错误我们还需要在web.xml文件中对dwr配置的部分加入如下配置:
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
至此我们就可以在我们的struts2项目中使用dwr了,记得在项目中的action要配制成.do的形式
这里我发现一个小问题,这样修改后如果你是用S标签写的页面那么会报错,不过我还是用html写的页面,所以开始没发现,希望大家留心

浙公网安备 33010602011771号