DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
1.集成步骤
1.1 添加pom依赖
<dependency>
<groupId>org.apache.geronimo.bundles</groupId>
<artifactId>dwr</artifactId>
<version>3.0.M1_1</version>
</dependency>
1.2 web.xml修改,添加dwr-servlet
<!-- dwr servlet -->
<
servlet
>
<
description
>dwr-invoker</
description
>
<
servlet-name
>dwr-invoker</
servlet-name
>
<
servlet-class
>org.directwebremoting.servlet.DwrServlet</
servlet-class
>
<
init-param
>
<
param-name
>classes</
param-name
>
<
param-value
>com.panguso.op.data.manager.service.general.GeneralContentManagementService</
param-value
>
</
init-param
>
<
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
>
|
1.3 标注需要引用的类,如这里添加的GeneralContentManagementService
@Service
@RemoteProxy
public
class
GeneralContentManagementService {
private
ContentManagementServiceAPI contentManageAPI = ContentManagementServiceAPI.getInstance();
private
ResourceManagementServiceAPI resManageAPI = ResourceManagementServiceAPI.getInstance();
private
static
BeanSchemaServiceAPI beanServiceAPI = BeanSchemaServiceAPI.getInstance();
/** * 判断一个类型的beanSchema是否保存在mysql中
*
* @param dataType 数据类型
* @param beanSchemaName beanSchema名称
* @return
* @author fangqi
* @date 2013-6-4
*/
@RemoteMethod
public
boolean
checkBeanSchemaIsInMySql(String dataType, String beanSchemaName)
{
List<BeanSchema> beanSchemas = beanServiceAPI.getMergedBeanPropertiesByDataType(dataType);
for
(BeanSchema beanSchema : beanSchemas)
{
if
(beanSchema.getEname().equals(beanSchemaName))
{
if
(beanSchema.getIsStoredInMysql())
{
return
true
;
}
}
}
return
false
;
}
|
配置完成后,启动tomcat应用,输入地址 http://localhost:8180/<webappname>/dwr 如果能看到如下界面,说明配置成功:
2.使用步骤
2.1 在需要调用的jsp文件添加js引用
<!-- 第一个为你需调用的java类的名称+.js -->
<script type=
'text/javascript'
src=
'dwr/interface/GeneralContentManagementService.js'
></script>
<!-- 第二三个为通用,都要加-->
<script type=
'text/javascript'
src=
'dwr/engine.js'
></script>
<script type=
'text/javascript'
src=
'dwr/util.js'
></script>
|
2.2 js中使用
//判断所选的字段是否存在mysql中,如果不存在,返回
dwr.engine.setAsync(
false
);
for
(
var
i = 0; i < groupFields.length; i++) {
var
callback =
function
(data){
if
(!data) {
alert(
"选择分组字段"
+ groupFields[i] +
"没有保存在mysql中,不能用来作为分组字段"
);
}
};
GeneralContentManagementService.checkBeanSchemaIsInMySql(dataType, groupFields[i], callback);
}
dwr.engine.setAsync(
true
);
|