创建 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,有两个方法,都接受订单号,但是分别返回订单细节和客户细节。MessagingBean 从 MockupDB 得到细节。
清单 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] 下一页