【定义DWR】:
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.
它包含两个主要的部分:
1、允许javascript从WEB服务器上一个遵循了AJAX原则的servlet中获取数据。
2、js库可以帮助开发者成功的利用获取的数据动态的改变网页的内容。
【使用DWR】
1、首先必须有dwr的jar包文件:(提供下载路径:dwrjar文件下载)
2、在web.xml里配置dwr:
<!-- 配置DWR -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3、创建类AdjBudgetModel,然后再类中创建你需要的方法:
/**
* 用于树上面的操作 by xihy 关于处理的界面的动态的处理事件 2010-05-11
*/
public AdjBudgetPlanInfo gainThebootInfo(String bootId) throws Exception
{
/**
* 查询根结点的记录
*/
try
{
return treeBugetDao.gainThebootInfo(bootId);
} catch (Exception e)
{
e.printStackTrace();
return null;
}
}
4、AdjBudgetPlanInfo文件
package com.xx.xx.budget.domain;
public class AdjBudgetPlanInfo {
private String bpiId ;
private String bctId ;
private String bacId ;
private String depId ;} **ps:这里简写了,还有部分字段没有写出来,还有对应的set和get都没有写出来,这里只是简写一下,到时候可根据自己项目中的需要自己来完善
4、创建dwr.xml文件,并且配置你刚才创建的类 AdjBudgetModel
<?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="adjBudgetServer">
<param name="beanName" value="adjBudgetModel" />
</create>
<!-- 将他作为一个对象返回,传给客户端 -->
<convert match="com.xx.xx.budget.domain.AdjBudgetPlanInfo" converter="bean">
<param name="include" value="bpiId,bpiName,bpiIsRoot,hasChildren,bpiCreateDate,bpscid,bacId,proId,bpiLevel"></param>
</convert>
<convert match="java.lang.Exception" converter="exception">
<param name='include' value='message' />
</convert>
</allow>
</dwr>
5、在jsp页面中的使用
首先在你的jsp页面上引入,这个引入的名字是刚才xml文件中配置的那个名字
<script type="text/javascript" src="<%=path%>/dwr/interface/adjBudgetServer.js"></script>
{ps:这里我们只是负责引入,这里是dwr通过反射机制引入的。
}
然后就是页面上的使用了:
function startt(){
<%
if(null != value && !value.equals(""))
{
%>
adjBudgetServer.gainThebootInfo('<%=value%>',{exceptionHandler:function(msg){alert(msg);},callback:showSub});
<%
}
else
{
%>
alert('xxx');
<%
}
%>
}
:
:以上是我自己在项目中用到的