JAVA 购物车实现
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return 0.0 ; else
/* 取得篮中某个商品的个数。
*/ public double getPieces(Product p_in_inv) {
int SKU = p_in_inv.getSKU(); Product p = (Product)products_.get( Integer.toString(SKU)); if(p == null)
一、通过 BasketBean 类实现,保持购物车组件的状态,;
二、它通过一系列的 JSP 页面向顾客发送请求。
一旦我们的购物车与某一个特定的顾客 session 相联系,顾客的 BasketBean 对象的实例 就会存储在 HttpSession 对象中。一个以普通 ID 进入 CustomerServlet 工作流程的客户,他 会产生很多动作,servlet 引擎提供了 HttpSession 对象来组织并存储这一系列的相互作用 (Session 对象为存储和取回任何使用唯一的键/值对的 Java 对象提供了方便的方法)。在 CustomerServlet 类中 ,我们首先通过 HttpSession session = request.getSession(true)从 servlet
我们的购物车方案实际上是一种简化了的在线商店的模型:顾客选择商品,添加到他们 的购物车中,然后通过一系列形式最终购买这些商品。上图中就显示了我们的应用程序体系
结构是如何把 JSP、servlets 和 JavaBeans 有机的结合起来的,从图上更可以看出,只使用 JSP 来构建一个简单网络应用程序是可行,但是一个有效的应用程序是这三种技术共同作用 的结果。
为了产生 HTML , servlet 必须用 println()输出格式化的 HTML 字符串,如:
out.println("<html>"); out.println("<br><br>购物车系统"); out.println("</html>");
从上面的代码段中可以看出,servlet 用 println()输出 HTML 页面,也就是说,当编写一 个 Java Servlet 时,开发者必须充当程序员和网页设计师两个身份。而 JSP 则是在 HTML 中 嵌入简单的 Java 代码,使普通的 HTML 网页设计师也能写出优秀的动态网页,这样就使网 站的设计沿着两条平行的轨道,即 Java 程序设计和 HTML 页面设计共同进行下去,从而加 快网站开发的速度和开发的质量。JSP 也支持业务逻辑组件和现有的组件之间的宽松连接, 从而做到可重用性。 下面,我想通过一个简单的购物车程序来说明一下 JSP,Servlet 和 Bean 在网络体系结构中 是怎样相互作用的,并且借这个例子解释编写一个实际可用的电子商务应用程序应该注意的 一些问题。 简单购物车的实现方案
引擎中取得 Session 对象,大家都可以看到,我们传递了 true 值,意思是我们告诉 Servlet 引擎,如果一个 session 对象已经不存在了,就新建一个;然后我们查看 Session 中是否有我 们的购物车,如果我们找不到购物车,我们就知道这个购物 Session 刚刚开始,我们必须新 建一辆购物车,并且把它保存在 Session 对象中,如果我们能够在 Session 中找到购物车, 那我们就知道顾客正处在一个购物期间,那时就必须存储购物车当前的状态。在查看了购物 车的状态之后,我们把顾客的请求发送到相应的 JSP 页中去,请求本身包含一个状态参数 (BasketBean.PAGE)告诉 CustomerServlet 把请求发送到哪里,我们的控制器取回这个参数, 然后使用一个 RequestDispatcher 对象把请求提交给下一个 JSP 页。
double totalPrice = 0.0 ;
Enumeration e = products_.elements(); while(e.hasMoreElements()) {
Product product = (Product)e.nextElement(); totalPrice += product.getPieces() * product.getPrice(); } return totalPrice; }
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); } // 处理顾客请求 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
/* 当前购物篮中有那些商品。 主键是商品号 ,值为 Product 对象
*/ private Hashtable products_ = new Hashtable();
public BasketBean() { }
/* 计算篮中的商品的总价值。
*/ public double getTotal() {
代码 Hale Waihona Puke Baidu CustomerServlet.java
package shoppingcart;
import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException;
public class CustomerServlet extends HttpServlet { public void doGet(HttpServletRequest request,
}
// 取得当前的工作流程。
RequestDispatcher rd = null; String nextPage = request.getParameter(BasketBean.PAGE);
if (nextPage == null || nextPage.equals(BasketBean.UPDATE)) { // 从目录中查找选择
/* 工作流程的状态
*/
final static public String UPDATE = "Update" ; final static public String PURCHASE = "Purchase" ; final static public String RECEIPT = "Receipt" ;
rd = getServletConfig().getServletContext().getRequestDispatcher("Inventory.jsp"); } else if (nextPage.equals(BasketBean.PURCHASE)) {
// 提供购买信息 rd = getServletConfig().getServletContext() .getRequestDispatcher("Purchase.jsp"); } else if (nextPage.equals(BasketBean.RECEIPT)) { file:// 提供购买信息
当然,我们可以只使用 JSP 来构建电子商务系统,比如一个简单的购物车系统,但是 如果你要想完成一个有效的的应用程序,并使它用于商业上,则需要综合以上我所说的三种 技术相互补充的力量。让我们来看怎么把它们联合起来以完成最好的效果吧!我们都知道, JSP 是 Sun 公司倡导的用来替代微软 ASP 的纯 Java 替代品,JSP 技术发展壮大了 Java Servlet 技术,事实上, JSP 引擎在运行 JSP 时也把 JSP 页面翻译成 Servlets;而不用我多说,大家一 定都知道 Servlets 在网络编程世界是非常流行的,因为它在理论上和实践上都是可以完全取 代 CGI 脚本的,Servlets 能产生动态的网页,这是通过把静态的 HTML 与数据库查询或事 务性服务提供的内容混合起来实现的。JSP 则是通过在 HTML 页面中内嵌 Java 代码这条途 径来实现生成动态的网页的目的的,把 Java 代码插入到 HTML 页的这种能力极大的增加了 基于 Java Servlet 网络体系结构的灵活性。
// 新的顾客,创建一个购物车。 basket = new BasketBean(); session.setAttribute(BasketBean.BASKET, basket); } else { // 已存在的顾客,保存篮中的内容。 basket.savePurchases(request);
一下 详细讲了一个 JAVA 购物车的实现方法!!
电子商务模型的 JSP、JavaBean 实现 现在,开发和管理一个电子商务系统需要高效率的开发和利用网络资源,特别是如果你想让 你的顾客在网上购买你的产品或是取得你提供的服务的话,更要注意这一点。构建一个这样 的商务网站来实现你商业上的目的并不是一件非常简单的工作,在开发电子商务网站的时 候,我们就要充分的利用搞技术含量的技术,我们可以利用到最先进的 Java 技术:Java Server Pages(JSP),Java Servlets 和 JavaBeans(甚至是 EJB),它们各自都有自己的不同的优点, 因此了解在构建一个电子商务网站时如何合理的利用它们各自的优势,并且把它们联合起来 以完成你想达到的效果是非常重要的。
解释了 model-view-controller( MVC )模式,它把应用程序划分成独立的数据管理(Model), 表现形式(View)和控制组件(Controller),成为最先进的图形用户接口的基础,这些划分模 块支持独立开发并且可以重复使用组件。我们也能把 MVC 模式应用于我们的网络应用程 序中:JSP 最适合充当实现网络应用程序的对外表现的部分;而 JavaBeans 封装了提供给 Web 网站的服务信息内容并且简化了数据在体系结构组件之间的传输;Servlet 则正好充当控制 者和协调用户请求和应用程序信息、更新程序数据等功能。 好,前面我们已经有了“CustomerServlet”大致的设计方案,现在让我们来看看编写我们应 用程序上的一些细节问题。
代码段 2:BasketBean 类
package shoppingcart;
import javax.servlet.http.HttpServletRequest; import java.util.Hashtable; import java.util.Enumeration;
public class BasketBean { final static public String BASKET = "Basket" ; final static public String PAGE = "Page" ;
rd = getServletConfig().getServletContext().getRequestDispatcher("Receipt.jsp"); }
if (rd != null) { rd.forward(request, response);
} }
}
上面的程序段显示了 CustomerServlet 类中的 doGet()和 doPost()方法。CustomerServlet 类做了两件事情来控制我们应用程序的工作流程:
// 取得请求的 Session 对象 HttpSession session = request.getSession(true); BasketBean basket = null;
file://如果没有购物车则创建一个新的如果已存在,则更新它 basket = (BasketBean)session.getAttribute(BasketBean.BASKET); if(basket == null) {
/* 取得篮中某个商品的个数。
*/ public double getPieces(Product p_in_inv) {
int SKU = p_in_inv.getSKU(); Product p = (Product)products_.get( Integer.toString(SKU)); if(p == null)
一、通过 BasketBean 类实现,保持购物车组件的状态,;
二、它通过一系列的 JSP 页面向顾客发送请求。
一旦我们的购物车与某一个特定的顾客 session 相联系,顾客的 BasketBean 对象的实例 就会存储在 HttpSession 对象中。一个以普通 ID 进入 CustomerServlet 工作流程的客户,他 会产生很多动作,servlet 引擎提供了 HttpSession 对象来组织并存储这一系列的相互作用 (Session 对象为存储和取回任何使用唯一的键/值对的 Java 对象提供了方便的方法)。在 CustomerServlet 类中 ,我们首先通过 HttpSession session = request.getSession(true)从 servlet
我们的购物车方案实际上是一种简化了的在线商店的模型:顾客选择商品,添加到他们 的购物车中,然后通过一系列形式最终购买这些商品。上图中就显示了我们的应用程序体系
结构是如何把 JSP、servlets 和 JavaBeans 有机的结合起来的,从图上更可以看出,只使用 JSP 来构建一个简单网络应用程序是可行,但是一个有效的应用程序是这三种技术共同作用 的结果。
为了产生 HTML , servlet 必须用 println()输出格式化的 HTML 字符串,如:
out.println("<html>"); out.println("<br><br>购物车系统"); out.println("</html>");
从上面的代码段中可以看出,servlet 用 println()输出 HTML 页面,也就是说,当编写一 个 Java Servlet 时,开发者必须充当程序员和网页设计师两个身份。而 JSP 则是在 HTML 中 嵌入简单的 Java 代码,使普通的 HTML 网页设计师也能写出优秀的动态网页,这样就使网 站的设计沿着两条平行的轨道,即 Java 程序设计和 HTML 页面设计共同进行下去,从而加 快网站开发的速度和开发的质量。JSP 也支持业务逻辑组件和现有的组件之间的宽松连接, 从而做到可重用性。 下面,我想通过一个简单的购物车程序来说明一下 JSP,Servlet 和 Bean 在网络体系结构中 是怎样相互作用的,并且借这个例子解释编写一个实际可用的电子商务应用程序应该注意的 一些问题。 简单购物车的实现方案
引擎中取得 Session 对象,大家都可以看到,我们传递了 true 值,意思是我们告诉 Servlet 引擎,如果一个 session 对象已经不存在了,就新建一个;然后我们查看 Session 中是否有我 们的购物车,如果我们找不到购物车,我们就知道这个购物 Session 刚刚开始,我们必须新 建一辆购物车,并且把它保存在 Session 对象中,如果我们能够在 Session 中找到购物车, 那我们就知道顾客正处在一个购物期间,那时就必须存储购物车当前的状态。在查看了购物 车的状态之后,我们把顾客的请求发送到相应的 JSP 页中去,请求本身包含一个状态参数 (BasketBean.PAGE)告诉 CustomerServlet 把请求发送到哪里,我们的控制器取回这个参数, 然后使用一个 RequestDispatcher 对象把请求提交给下一个 JSP 页。
double totalPrice = 0.0 ;
Enumeration e = products_.elements(); while(e.hasMoreElements()) {
Product product = (Product)e.nextElement(); totalPrice += product.getPieces() * product.getPrice(); } return totalPrice; }
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); } // 处理顾客请求 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
/* 当前购物篮中有那些商品。 主键是商品号 ,值为 Product 对象
*/ private Hashtable products_ = new Hashtable();
public BasketBean() { }
/* 计算篮中的商品的总价值。
*/ public double getTotal() {
代码 Hale Waihona Puke Baidu CustomerServlet.java
package shoppingcart;
import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException;
public class CustomerServlet extends HttpServlet { public void doGet(HttpServletRequest request,
}
// 取得当前的工作流程。
RequestDispatcher rd = null; String nextPage = request.getParameter(BasketBean.PAGE);
if (nextPage == null || nextPage.equals(BasketBean.UPDATE)) { // 从目录中查找选择
/* 工作流程的状态
*/
final static public String UPDATE = "Update" ; final static public String PURCHASE = "Purchase" ; final static public String RECEIPT = "Receipt" ;
rd = getServletConfig().getServletContext().getRequestDispatcher("Inventory.jsp"); } else if (nextPage.equals(BasketBean.PURCHASE)) {
// 提供购买信息 rd = getServletConfig().getServletContext() .getRequestDispatcher("Purchase.jsp"); } else if (nextPage.equals(BasketBean.RECEIPT)) { file:// 提供购买信息
当然,我们可以只使用 JSP 来构建电子商务系统,比如一个简单的购物车系统,但是 如果你要想完成一个有效的的应用程序,并使它用于商业上,则需要综合以上我所说的三种 技术相互补充的力量。让我们来看怎么把它们联合起来以完成最好的效果吧!我们都知道, JSP 是 Sun 公司倡导的用来替代微软 ASP 的纯 Java 替代品,JSP 技术发展壮大了 Java Servlet 技术,事实上, JSP 引擎在运行 JSP 时也把 JSP 页面翻译成 Servlets;而不用我多说,大家一 定都知道 Servlets 在网络编程世界是非常流行的,因为它在理论上和实践上都是可以完全取 代 CGI 脚本的,Servlets 能产生动态的网页,这是通过把静态的 HTML 与数据库查询或事 务性服务提供的内容混合起来实现的。JSP 则是通过在 HTML 页面中内嵌 Java 代码这条途 径来实现生成动态的网页的目的的,把 Java 代码插入到 HTML 页的这种能力极大的增加了 基于 Java Servlet 网络体系结构的灵活性。
// 新的顾客,创建一个购物车。 basket = new BasketBean(); session.setAttribute(BasketBean.BASKET, basket); } else { // 已存在的顾客,保存篮中的内容。 basket.savePurchases(request);
一下 详细讲了一个 JAVA 购物车的实现方法!!
电子商务模型的 JSP、JavaBean 实现 现在,开发和管理一个电子商务系统需要高效率的开发和利用网络资源,特别是如果你想让 你的顾客在网上购买你的产品或是取得你提供的服务的话,更要注意这一点。构建一个这样 的商务网站来实现你商业上的目的并不是一件非常简单的工作,在开发电子商务网站的时 候,我们就要充分的利用搞技术含量的技术,我们可以利用到最先进的 Java 技术:Java Server Pages(JSP),Java Servlets 和 JavaBeans(甚至是 EJB),它们各自都有自己的不同的优点, 因此了解在构建一个电子商务网站时如何合理的利用它们各自的优势,并且把它们联合起来 以完成你想达到的效果是非常重要的。
解释了 model-view-controller( MVC )模式,它把应用程序划分成独立的数据管理(Model), 表现形式(View)和控制组件(Controller),成为最先进的图形用户接口的基础,这些划分模 块支持独立开发并且可以重复使用组件。我们也能把 MVC 模式应用于我们的网络应用程 序中:JSP 最适合充当实现网络应用程序的对外表现的部分;而 JavaBeans 封装了提供给 Web 网站的服务信息内容并且简化了数据在体系结构组件之间的传输;Servlet 则正好充当控制 者和协调用户请求和应用程序信息、更新程序数据等功能。 好,前面我们已经有了“CustomerServlet”大致的设计方案,现在让我们来看看编写我们应 用程序上的一些细节问题。
代码段 2:BasketBean 类
package shoppingcart;
import javax.servlet.http.HttpServletRequest; import java.util.Hashtable; import java.util.Enumeration;
public class BasketBean { final static public String BASKET = "Basket" ; final static public String PAGE = "Page" ;
rd = getServletConfig().getServletContext().getRequestDispatcher("Receipt.jsp"); }
if (rd != null) { rd.forward(request, response);
} }
}
上面的程序段显示了 CustomerServlet 类中的 doGet()和 doPost()方法。CustomerServlet 类做了两件事情来控制我们应用程序的工作流程:
// 取得请求的 Session 对象 HttpSession session = request.getSession(true); BasketBean basket = null;
file://如果没有购物车则创建一个新的如果已存在,则更新它 basket = (BasketBean)session.getAttribute(BasketBean.BASKET); if(basket == null) {