DWR框架总结

来源:互联网 发布:caffe fcn 训练模型 编辑:程序博客网 时间:2024/05/16 06:57

                         学习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){});
      }