轉載自:https://blog.csdn.net/Unseenblade/article/details/53087414
在按照網上做的單獨dwr測試都可以成功,可是與SSH框架整合在一起的時候卻無法調用後臺的方法,在我徜徉網絡整個下午才摸索出了答案。
由於網上關於dwr資料也不少,所以我只說重點吧(我遇到的問題),首先說配置
1、web.xml
- <pre name="code" class="html"><servlet>
- <servlet-name>dwr-invoker</servlet-name>
- <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
- <init-param>
- <param-name>debug</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>crossDomainSessionSecurity</param-name>
- <param-value>false</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>dwr-invoker</servlet-name>
- <url-pattern>/dwr/*</url-pattern>
- </servlet-mapping>
2、dwr.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
- <dwr>
- <allow>
- <create creator="spring" javascript="test">
- <param name="beanName" value="dwrTest"/>
- </create>
- </allow>
- </dwr>
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了,困擾了我好久。。。如果幫到了您,就給我個贊吧,不枉我花費了一個下午。