SSH框架中整合dwr时无法调用后台方法的解决办法

转载自:https://blog.csdn.net/Unseenblade/article/details/53087414

在按照网上做的单独dwr测试都可以成功,可是与SSH框架整合在一起的时候却无法调用后台的方法,在我徜徉网络整个下午才摸索出了答案。

由于网上关于dwr资料也不少,所以我只说重点吧(我遇到的问题),首先说配置


1、web.xml

[html]  view plain  copy
  1. <pre name="code" class="html"><servlet>  
  2.     <servlet-name>dwr-invoker</servlet-name>  
  3.     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
  4.     <init-param>  
  5.         <param-name>debug</param-name>  
  6.         <param-value>true</param-value>  
  7.     </init-param>  
  8.     <init-param>  
  9.         <param-name>crossDomainSessionSecurity</param-name>  
  10.         <param-value>false</param-value>  
  11.     </init-param>  
  12. </servlet>  
  13. <servlet-mapping>  
  14.     <servlet-name>dwr-invoker</servlet-name>  
  15.     <url-pattern>/dwr/*</url-pattern>  
  16. </servlet-mapping>  

 
 特别注意crossDomainSessionSecurity这个参数要配置,没有这个参数页面接收不到返回结果(拒绝请求)。 
 

2、dwr.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">  
  3. <dwr>  
  4.   <allow>  
  5.     <create creator="spring" javascript="test">  
  6.       <param name="beanName" value="dwrTest"/>  
  7.     </create>  
  8.   </allow>  
  9. </dwr>  
由于我是用ssh框架,所以creator是“spring”,当然,value=“dwrTest”中的dwrTest也是需要spring注入的,我在测试类上用annotation注解了:@component(“dwrTest”),其他的我就不再赘述。


3.测试

然后当我在jsp页面中引入两个必备JavaScript:engine.js和util.js,在加上新建的test.js,当我访问页面时发现js调用的方法没有反应,也就是说根本没调用,而且我访问

http://localhost:8000/projectName/dwr/  也没有反应,说找不到路径,经过我漫长的搜寻之路找到答案,原来是web.xml中struts2拦截器配置 /* 后,当输入XXX/dwr时会被struts2捕获,被当做某个action  所以就找不到路径,

解决办法:(1)在Struts2中配置常量<constant name="struts.action.excludePattern" value="/dwr.*"></constant>


此时再次访问 http://localhost:8000/projectName/dwr/成功了会看到这样的页面:


点击test进去,会看到:

稍微阅读一下,你会明白:要用test,你要引用这三个js,他使用的是绝对路径,是不是(2)和你引用的路径不同?赶紧复制粘贴吧。

把js路径改好再运行就OK了,困扰了我好久。。。如果帮到了您,就给我个赞吧,不枉我花费了一个下午。

猜你喜欢

转载自blog.csdn.net/dfsethtdfd/article/details/80697886