学习dwr框架的总结。
现在是下午16:30分,嘿嘿,还有一个小时就下班罗~~ 在这里吐槽下这家XX公司。哎比我上家OO公司更惨。我记得上家OO公司只是限制了QQ,而这家公司把外网都给限制了。蛋痛啊,尤其对于我这种菜鸟级别的。很多东西不懂就得Google啊~哎~~
不说了写写总结吧,个人认为dwr是一个利用javascript来控制前后台数据异步交互的框架,之前我是没接触过, 应为公司可能要用我就抽时间来学习学习。
首先呢:需要导入一个dwr.jar包 ,如果是2.0的最好导入一个commons-logging-1.0.4.jar,否则就会报一个找不到类异常。
A) 我们来创建一个类:
public class UserService {
//存放数据
private static Map dataMap = new HashMap();
public boolean save(User user){
if(dataMap.containsKey(user.getId()))
return false;
System.out.println("下面开始保存用户");
System.out.println("password:"+user.getPassword());
System.out.println("name:"+user.getName());
System.out.println("email:"+user.getEmail());
dataMap.put(user.getId(),user);
System.out.println("用户保存结束");
return true;
}
}
B) 创建一个javabean用于数据转换:
public class User {
private String id;
private String name;
private String password;
private String email;
getset....
}
C) 在WEB-INF下的web.xml配置如下:
<servlet>
<description>Direct Web Remoter Servlet</description>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
D) 再创建一个dwr.xml文件,配置如下:
<dwr>
<allow>
//js中根据 UserService这个名字来调用java中的方法。
<create creator="new" javascript="UserService">
<param name="class" value="com.kit.service.UserService"></param>
</create>
//告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。比如data.xxx就能取到了
<convert match="com.kit.service.User" converter="bean"></convert>
</allow>
</dwr>
E) jsp代码如下:
<html>
<head>
<base href="<%=basePath%>">
<!-- 这两个文件是必须有的 -->
<script type='text/javascript' src='<%=path%>/dwr/engine.js'> </script>
<script type='text/javascript' src='<%=path %>/dwr/util.js'> </script>
<!-- 调用 必须要写 否则它会报你的方法未定义() -->
<script type='text/javascript' src='<%=path %>/dwr/interface/UserService.js'> </script>
<script>
function saveFun(data) {
if (data) {
alert("注册成功!");
} else {
alert("登陆已经存在!");
}
}
function OnSave(){
var userMap ={};
userMap.id = regForm.id.value;
userMap.password = regForm.password.value;
userMap.name = regForm.name.value;
userMap.email = regForm.email.value;
//调用java方法 .save(参数,会返回一个结果集);
UserService.save(userMap,saveFun);
}
</script>
</head>
<body>
<input type="button" value="提交" onclick="val();"/>
<form name="regForm">
<br>登陆ID:<input type="text" name="id"/><br/>
口令:<input type="text" name="password"/><br/>
姓名:<input type="text" name="name"/><br/>
电子邮件:<input type="text" name="email"/><br/>
<input type="button" name="submitBtn" value="提交" onclick="OnSave();">
</form>
</body>
</html>
那么像list集合我们该怎么来遍历呢?
function val(){
UserDao.UserQuery(function(data){
for(var i=0;i<data.length;i++){
alert(data.name);
}
那么像map又该怎么遍历呢?
for(var key in data){
//根据key那value值。
var bean =data[key]; alert(bean.name); } 那在js中怎么把它转成javabean呢? function OnSave(){ //把它组成一个键值对的形式。必须和实体类属性一致。 var rmap ={sname:"你好 啊",sid:"sid",spass:"spass"}; UserService.save(rmap,function(data){}); }