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写的页面,所以开始没发现,希望大家留心

posted @ 2013-04-21 11:26  张宇鹏  阅读(237)  评论(0)    收藏  举报