最近在学习web方面的各种应用,学习到dwr时,我想将它整合到我的ssh框架上,将dwr和spring整合很容易,将dwr.xml中create的属性creator设置为spring就行了。
整合步骤如下:
1.在web.xml中配置dwr的控制器
2.在WEB_INF下添加dwr.xml文件,写了一个简单方法调用,内容如下:
这里的userService是在spring的配置文件里定义的。在我的applicationConext.xml中如下:
这样dwr与spring整合就完成了。但我的项目是ssh项目,在web.xml定义的struts2的过滤器拦截了dwr请求,所以请求dwr时总是报错。经过搜索找到了解决答案:
在struts.xml中添加一个常量,即为struts标签添加constant子标签,内容如下:
这里一定要注意/dwr/.*和dwr/test/.*在星号的前面是有一个点的。我原以为没有点的,在我没加点时请求../project/dwr/是成功的,但点击页面的方法进入../project/dwr/test/..中就出问题了,报出找不到action。具体是什么原因不明白,等待高人来解答。
整合步骤如下:
1.在web.xml中配置dwr的控制器
<!-- 配置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>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.在WEB_INF下添加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="check">
<param name="beanName" value="userService"></param>
<include method="login"/>
</create>
</allow>
</dwr>
这里的userService是在spring的配置文件里定义的。在我的applicationConext.xml中如下:
<bean
id="userService"
class="zwh.struts.maven.service.impl.UserServiceImpl">
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>
这样dwr与spring整合就完成了。但我的项目是ssh项目,在web.xml定义的struts2的过滤器拦截了dwr请求,所以请求dwr时总是报错。经过搜索找到了解决答案:
在struts.xml中添加一个常量,即为struts标签添加constant子标签,内容如下:
<constant name="struts.action.excludePattern" value="/dwr/.*,/dwr/test/.*"></constant>
这里一定要注意/dwr/.*和dwr/test/.*在星号的前面是有一个点的。我原以为没有点的,在我没加点时请求../project/dwr/是成功的,但点击页面的方法进入../project/dwr/test/..中就出问题了,报出找不到action。具体是什么原因不明白,等待高人来解答。