上一页 1 2 3 4 5 6 7 8 9 下一页 代码1 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, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } // 处理顾客请求 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// 取得请求的Session对象 HttpSession session = request.getSession(true); BasketBean basket = null;
file://如果没有购物车则创建一个新的如果已存在,则更新它 basket = (BasketBean)session.getAttribute(BasketBean.BASKET); if(basket == null) { // 新的顾客,创建一个购物车。 basket = new BasketBean(); session.setAttribute(BasketBean.BASKET, basket); } else { // 已存在的顾客,保存篮中的内容。 basket.savePurchases(request); }
// 取得当前的工作流程。
RequestDispatcher rd = null; String nextPage = request.getParameter(BasketBean.PAGE);
if (nextPage == null || nextPage.equals(BasketBean.UPDATE)) { // 从目录中查找选择
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:// 提供购买信息
rd = getServletConfig().getServletContext().getRequestDispatcher("Receipt.jsp"); }
if (rd != null) { rd.forward(request, response); } }
}
上面的程序段显示了CustomerServlet类中的doGet()和doPost()方法。CustomerServlet类做了两件事情来控制我们应用程序的工作流程:
一、通过 BasketBean 类实现,保持购物车组件的状态,;
二、它通过一系列的JSP页面向顾客发送请求。
一旦我们的购物车与某一个特定的顾客session相联系,顾客的BasketBean对象的实例就会存储在 HttpSession对象中。一个以普通ID进入CustomerServlet工作流程的客户,他会产生很多动作,servlet引擎提供了HttpSession对象来组织并存储这一系列的相互作用(Session对象为存储和取回任何使用唯一的键/值对的Java对象提供了方便的方法)。在CustomerServlet类中 ,我们首先通过HttpSession session = request.getSession(true)从 servlet 引擎中取得Session对象,大家都可以看到,我们传递了true值,意思是我们告诉Servlet引擎,如果一个session对象已经不存在了,就新建一个;然后我们查看Session中是否有我们的购物车,如果我们找不到购物车,我们就知道这个购物Session刚刚开始,我们必须新建一辆购物车,并且把它保存在Session对象中,如果我们能够在Session中找到购物车,那我们就知道顾客正处在一个购物期间,那时就必须存储购物车当前的状态。在查看了购物车的状态之后,我们把顾客的请求发送到相应的JSP页中去,请求本身包含一个状态参数(BasketBean.PAGE)告诉CustomerServlet把请求发送到哪里,我们的控制器取回这个参数,然后使用一个RequestDispatcher对象把请求提交给下一个JSP页。
上一页 1 2 3 4 5 6 7 8 9 下一页 |