注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → 编程开发AJAX → 文章内容

DWR 简化 Ajax 的 portlet 间通信

作者:佚名 来源:不详 发布时间:2007-12-10 22:46:51

创建 MockupDB 和 MessagingBean

     清单 3 所示的 MockupDB 是个单体类,模拟客户订单的数据库。所有订单都硬编码在这个类中。真实应用程序可能使用关系数据库系统,但这个示例对我们的目的来说足够了。


清单 3. MockupDB
package db;import java.util.Hashtable;import java.util.Map;public class MockupDB {  private static MockupDB instance=new MockupDB();  private String[] orders=new String[4];  private Map orderDetails=new Hashtable();  private Map customerDetails=new Hashtable();  private MockupDB()  {    String ordStart="ORD";    orders[0]=ordStart+"000408015";    orders[1]=ordStart+"001600023";    orders[2]=ordStart+"000042000";    orders[3]=ordStart+"011235813";    orderDetails.put(orders[0],"1. WebSphere Everyplace Connection Manager<br/>"+                     "2. WebSphere Portal");    orderDetails.put(orders[1],"1. DB2 Universal Database<br/>2. DB2 Everyplace");    orderDetails.put(orders[2],"1. Tivoli Access Manager for e-business <br/>2."+                     "Tivoli Directory Integrator");    orderDetails.put(orders[3],"1. IBM System z9<br/>2. IBM System p5 550 Express");    customerDetails.put(orders[0],"<b>Systems and Technology Group</b><br/>"+                        "Some Road<br/>Finland");    customerDetails.put(orders[1],"<b>Global Financing</b><br/>Another Street"+                        "<br/>Finland");    customerDetails.put(orders[2],"<b>Software</b><br/>Yet Another Road"+                        "<br/>Finland");    customerDetails.put(orders[3],"<b>Global Services</b><br/>Still Another "+                        "Street<br/>Finland");  }  public static MockupDB getInstance()  {    return instance;  }  public String[] getOrders()  {    return orders;  }  public String getOrderDetails(String orderNro)  {    return (String)orderDetails.get(orderNro);  }  public String getCustomerDetails(String orderNro)  {    return (String)customerDetails.get(orderNro);  }}                  

     清单 4 所示的 MessagingBean 是个简单的 POJO,有两个方法,都接受订单号,但是分别返回订单细节和客户细节。MessagingBeanMockupDB 得到细节。


清单 4. MessagingBean
package msg;import javax.servlet.http.HttpSession;import db.MockupDB;public class MessagingBean {  public MessagingBean()  {          }  public String getOrderDetails(String orderNumber,HttpSession httpSession)  {    String orderDetails=MockupDB.getInstance().getOrderDetails(orderNumber)    httpSession.setAttribute("orderDetailsOrderNumber",orderNumber);    httpSession.setAttribute("orderDetails",orderDetails);    return orderDetails;  }  public String getCustomerDetails(String orderNumber,HttpSession httpSession)  {    String customerDetails=MockupDB.getInstance().getCustomerDetails(orderNumber);    httpSession.setAttribute("customerDetailsOrderNumber",orderNumber);    httpSession.setAttribute("customerDetails",customerDetails);    return customerDetails;  }}                  

MessagingBean 还把订单细节和客户细节添加到 HttpSession

javaScriptFunctions.jsp

    javaScriptFunctions.jsp 导入了来自 DWR 的 JavaScript 库(engine.js)并动态地创建库 MessagingBean.js。注意,MessagingBean.js 使用的名称与 dwr.xml(清单 2)中的 JavaBean 的名称相同;实际上,DWR 生成 MessagingBean.js。DWR 框架使用 engine.js 库;作为开发人员,通常不需要考虑直接使用它。

    如清单 5 所示,sendOrderNr() 函数调用 清单 4 中定义的 MessagingBean 函数。DWR 自动把 HttpSession 添加到方法调用。JavaScript 函数中的最后一个参数是 callback 函数。在稍后创建的 portlet JSP 中,包含这个 JSP。


清单 5. javaScriptFunctions.jsp
<%@ page contentType="text/html" import="java.util.*,javax.portlet.*,interportletmessagingusingajax.*" %><%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %><portlet:defineObjects/><SCRIPT type="text/javascript" src='<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/dwr/interface/MessagingBean.js") %>'> </SCRIPT><SCRIPT type="text/javascript" src='<%= renderResponse.encodeURL(renderRequest.getContextPath() +  "/dwr/engine.js") %>'> </SCRIPT><SCRIPT type="text/javascript">function <portlet:namespace />sendOrderNr(orderNr){document.getElementById("orderDetailsOrderNumber").innerHTML=orderNr;document.getElementById("customerDetailsOrderNumber").innerHTML=orderNr;MessagingBean.getOrderDetails(orderNr,<portlet:namespace />showOrderDetails);MessagingBean.getCustomerDetails(orderNr,<portlet:namespace />showCustomerDetails);return false;}function <portlet:namespace />showOrderDetails(orderDetails){document.getElementById("orderDetails").innerHTML=orderDetails;return false;}function <portlet:namespace />showCustomerDetails(customerDetails){document.getElementById("customerDetails").innerHTML=customerDetails;return false;}</SCRIPT>                  


上一页  [1] [2] [3] [4] [5]  下一页


  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved