《基于JavaEE的电子商务网站建设》课件第10章.ppt

上传人(卖家):momomo 文档编号:7862485 上传时间:2024-08-28 格式:PPT 页数:172 大小:827.50KB
下载 相关 举报
《基于JavaEE的电子商务网站建设》课件第10章.ppt_第1页
第1页 / 共172页
《基于JavaEE的电子商务网站建设》课件第10章.ppt_第2页
第2页 / 共172页
《基于JavaEE的电子商务网站建设》课件第10章.ppt_第3页
第3页 / 共172页
《基于JavaEE的电子商务网站建设》课件第10章.ppt_第4页
第4页 / 共172页
《基于JavaEE的电子商务网站建设》课件第10章.ppt_第5页
第5页 / 共172页
点击查看更多>>
资源描述

1、第10章图书显示、购物车及订单模块的实现第10章图书显示、购物车及订单模块的实现10.1 图书显示模块图书显示模块10.2 购物车模块购物车模块 10.3 订单模块订单模块 第10章图书显示、购物车及订单模块的实现10.1 图书显示模块图书显示模块10.1.1 所有图书列表显示、查询及排序功能的实现所有图书列表显示、查询及排序功能的实现1.图书列表相关Web页面的处理图书列表页面booklist.jsp(使用s:include标签)包含代码、5个页面,而代码是分页处理代码,代码、分别是头页面和尾页面,这些在第9章已经讲解。booklist.jsp页面的主要代码如下(省略所有样式的定义):第10

2、章图书显示、购物车及订单模块的实现 第10章图书显示、购物车及订单模块的实现 首页 a href=bookListAction.action?page=第10章图书显示、购物车及订单模块的实现 尾页|当前第$pageview.currentpage页|共$pageview.totalpage页 第10章图书显示、购物车及订单模块的实现s:include标签起包含页面的作用,value属性是所包含页面的名字。代码在图书列表中使用s:iterator标签对每个图书列表项进行逐一显示,其value的属性值为#request.records,说明在bookListAction中对应的逻辑函数会返回名为

3、records的变量,范围为request,这个变量就是所有符合查询结果的图书信息集合,具体可以查看下文中Action的定义。第10章图书显示、购物车及订单模块的实现1)排序页面(order.jsp)排序页面如图10-1所示,使用下拉列表来选择排序条件。其中下拉列表名称为order,“默认”的选项值为null,“上架日期”的选项值为date,“价格从低到高”的选项值为lowprice,“价格从高到低”的选项值为highprice。因此,排序页面order.jsp的主要代码为:第10章图书显示、购物车及订单模块的实现图10-1 排序页面第10章图书显示、购物车及订单模块的实现排序方式:第10章图

4、书显示、购物车及订单模块的实现在客户端浏览器中的输出如下:默认 上架日期 价格从低到高 价格从高到低Struts2标签的s:select表单标签除了我们常用的name、label等属性外,还有表10-1中的一些属性。第10章图书显示、购物车及订单模块的实现第10章图书显示、购物车及订单模块的实现2)查询页面(search.jsp)查询页面如图10-2所示,使用下拉列表来选择查询字段,使用单行文本输入控件来输入查询字段的匹配关键字。图10-2 查询页面第10章图书显示、购物车及订单模块的实现其中下拉列表的名称为type,“-查看所有图书-”的选项值为null,“书名”的选项值为bookName,

5、“书籍类型”的选项为bookType,“作者”的选项值为author,“出版社”的选项值为publisher,匹配关键字的文本输入控件名称为keyword。因此,查询页面search.jsp的主要代码为:第10章图书显示、购物车及订单模块的实现图书查询:第10章图书显示、购物车及订单模块的实现以上表单提交触发的Action为bookListAction,其中通过判断type下拉列表的值来设置图书搜索字段,并通过keyword输入框来获取对应字段的匹配关键字,实现匹配关键字的模糊查询。type下拉列表的list属性值直接使用OGNL表达式来创建列表,列表中的每一项都将作为HTML列表框的一个选项

6、。在客户端浏览器中的输出如下:第10章图书显示、购物车及订单模块的实现 -请选择-书名 书籍类型 作者 出版社第10章图书显示、购物车及订单模块的实现3)图书列表项页面(onebooklist.jsp)图书列表项页面如图10-3所示,显示图书名称、图片、作者、出版社、出版时间、图书描述和图书价格等信息,并提供了购买超链接。第10章图书显示、购物车及订单模块的实现图10-3 图书列表项页面第10章图书显示、购物车及订单模块的实现 图书列表项页面onebooklist.jsp的主要代码如下(省略部分样式):$bookName 第10章图书显示、购物车及订单模块的实现 人气指数:$clickCoun

7、t 作者:$author 出版社:$publisher 出版时间:$publishDate 内容简介:$description¥$marketPrice第10章图书显示、购物车及订单模块的实现¥$sellPrice 节省:¥$savedPrice a href=?id=$id&visible=$visible 第10章图书显示、购物车及订单模块的实现代码做了个条件选项,当图书的visible属性为真时,表示此图书在货架上可卖,因此显示如图10-3所示的购买图标,并触发cartAction业务(将在10.2节具体实现);当图书的visible属性为假时,表示此图书不在货架上,显示缺货的图样。本实

8、例对缺货的处理仅保持接口,并未实现。第10章图书显示、购物车及订单模块的实现 以上所有页面组合成图书列表booklist.jsp页面,也就是本项目的主页,如图10-4所示,图中截取了每页6条记录的两条,读者能清楚地看到本项目的主页内容。第10章图书显示、购物车及订单模块的实现图10-4 项目主页面第10章图书显示、购物车及订单模块的实现2.实现图书列表处理的Action由于图书实体BookInfo的属性较多,其输入信息就会比较复杂,因此我们介绍另一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口。ModelDriven让

9、用户可以直接操作应用程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。第10章图书显示、购物车及订单模块的实现ModelDriven接口中只有一个方法:public T getModel()该方法返回一个用于接收用户输入数据的模型对象。在Web页面中,这个模型对象的属性可以直接通过属性名来访问,在action中也不需要为这个模型对象提供JavaBean风格的get/set方法。第10章图书显示、购物车及订单模块的实现1)建立模型对象下面建立的模型对象在图书列表、图书添加、图书更新和单本图书显示中都要用到,com.bean.book.BookInfoFormBean的代码如下,除实体

10、BookInfo的所有属性外还包括了分页页码、排序、查询类别和查询关键字的定义,这些都是在对应action中要获取的表单值。第10章图书显示、购物车及订单模块的实现package com.bean.book;import java.util.Date;public class BookInfoFormBean /当前选择分页页面 private int page=1;/选定排序顺序 private String order;/查询类别 private String type;/查询关键字第10章图书显示、购物车及订单模块的实现 private String keyword;private In

11、teger id;private String ISBN;private String bookName;private String author;private String bookType;private String publisher;public String bookPic;private Date publishDate;private String description;第10章图书显示、购物车及订单模块的实现 private Float marketPrice;private Float sellPrice;private Boolean visible=true;pr

12、ivate Date createDate;private Integer clickCount=1;private Integer sellCount=0;private Boolean commend=false;/省略get/set方法第10章图书显示、购物车及订单模块的实现2)完成BookAction.java编码代码如下:package com.action.book;/省略导入包Controller /用于说明BookAction是spring容器管理的bean类public class BookAction extends ActionSupport implements Mod

13、elDriven Resource /在BookAction中注入BookInfoService private BookInfoService bookInfoService;第10章图书显示、购物车及订单模块的实现 private BookInfoFormBean bookInfoFormBean=new BookInfoFormBean();public void setBookInfoService(BookInfoService bookInfoService)this.bookInfoService=bookInfoService;public String bookList()t

14、ry ActionContext ct=ActionContext.getContext();HttpServletRequest request=(HttpServletRequest)ct .get(ServletActionContext.HTTP_REQUEST);第10章图书显示、购物车及订单模块的实现 PageView pageview=new PageView(6,bookInfoFormBean.getPage();QueryResult qr=new QueryResult();LinkedHashMap aa=new LinkedHashMap();if(bookInfoF

15、ormBean.getOrder()!=null&!.equals(bookInfoFormBean.getOrder()if(bookInfoFormBean.getOrder().equals(date)aa.put(createDate,desc);第10章图书显示、购物车及订单模块的实现 else if(bookInfoFormBean.getOrder().equals(lowprice)aa.put(sellPrice,asc);else aa.put(sellPrice,desc);String type=bookInfoFormBean.getType();if(type!=n

16、ull&!.equals(type)第10章图书显示、购物车及订单模块的实现 if(bookInfoFormBean.getKeyword()!=null&!.equals(bookInfoFormBean.getKeyword()StringBuffer sql=new StringBuffer(o.+type+like?);List pram=new ArrayList();pram.add(%+bookInfoFormBean.getKeyword()+%);qr=bookInfoService.getScrollData(BookInfo.class,pageview .getFirs

17、tindex(),pageview.getMaxresult(),sql .toString(),pram.toArray(),aa);第10章图书显示、购物车及订单模块的实现 else qr=bookInfoService.getScrollData(BookInfo.class,pageview .getFirstindex(),pageview.getMaxresult(),aa);pageview.setQueryResult(qr);/设置pageview和records两个request范围的变量 request.setAttribute(pageview,pageview);re

18、quest.setAttribute(records,pageview.getRecords();第10章图书显示、购物车及订单模块的实现 return SUCCESS;catch(Exception e)e.printStackTrace();return ERROR;/重写ModelDriven接口方法 public BookInfoFormBean getModel()return bookInfoFormBean;第10章图书显示、购物车及订单模块的实现从以上代码可以看到实现了ModelDriven接口,并重写了接口中的getModel()方法,实现了模型对象与action的结合。代码

19、中最重要的就是bookList()逻辑方法的实现,也就是商品列表显示方法。bookList()方法的实现过程可分为三个阶段来理解:第10章图书显示、购物车及订单模块的实现 使用bookInfoFormBean.getOrder()获取order.jsp中对排序条件的选择。条件为空,即在列表中选择“默认”,没有排序语句;条件不为空,如果为date,即在列表中选择“上架日期”,那么在查询条件中设置按createDate属性降序排列;如果为lowprice,即在列表中选择“价格从低到高”,那么设置按sellPrice属性升序排列;其它设置按sellPrice属性降序排列。第10章图书显示、购物车及订

20、单模块的实现 使用bookInfoFormBean.getOrder()获取order.jsp中对排序条件的选择。条件为空,即在列表中选择“默认”,没有排序语句;条件不为空,如果为date,即在列表中选择“上架日期”,那么在查询条件中设置按createDate属性降序排列;如果为lowprice,即在列表中选择“价格从低到高”,那么设置按sellPrice属性升序排列;其它设置按sellPrice属性降序排列。第10章图书显示、购物车及订单模块的实现 使用bookInfoFormBean.getType()获取search.jsp中对查询条件的选择。条件为空,即在列表中选择“-查看所有图书-”

21、,则直接运行代码,调用没有where条件语句的getScrollData()方法。第10章图书显示、购物车及订单模块的实现 bookInfoFormBean.getType()不为空时,使用bookInfoFormBean.getKeyword()方法获取对应查询字段的关键字。如果关键字不为空,那么使用StringBuffer(“o.”+type+“like?”)来定义where中的查询条件,实现模糊查询,然后调用getScrollData()方法完成整个JPQL语句的执行。bookList()方法最后返回pageview和records两个变量,读者可以在booklist.jsp页面中看到,

22、它们分别用于分页数据和图书列表项循环变量。第10章图书显示、购物车及订单模块的实现3.Action配置及运行完成了Web页面和Action的定义后,就必须对二者进行关联,也就是对struts.xml进行配置。Controller注释把BookAction定义为spring容器管理的bean类,其默认bean名称为bookAction,因此在struts.xml的配置代码如下:/booklist.jsp第10章图书显示、购物车及订单模块的实现10.1.2 单本图书信息显示的实现单本图书信息显示的实现1.singlebook.jsp页面电子商城应通过页面来具体显示所有商品的相关信息,让用户充分了解

23、商城中物品的信息。由于商品信息一般都比较多,而在商品列表中只能列出用户最关心的信息,因此单本图书信息页面的制作是十分必要的。第10章图书显示、购物车及订单模块的实现singlebook.jsp页面利用action中返回的book变量来获取图书的所有信息并显示,具体代码如下(运行显示界面见图10-5):img src=/第10章图书显示、购物车及订单模块的实现 作 者:出 版 社:上架时间:在售 停售 I S B N:第10章图书显示、购物车及订单模块的实现 出版时间:所属分类:是否推荐:是 否 第10章图书显示、购物车及订单模块的实现 定价:¥书城价:¥节省:¥人气指数:销售量:a href=

24、?id=$id&visible=$visible 第10章图书显示、购物车及订单模块的实现 内容简介:第10章图书显示、购物车及订单模块的实现2.Action的实现细心的读者会发现连接到singleBookAction的地址中有id变量的传入,这个id就是每本书的关键字id,能唯一确定单本图书表的记录,使用这个变量通过通用业务逻辑的find()函数就能获取到该id的图书记录值。在9.1.1节的com.action.book BookAction.java中添加singleBook()方法,可实现单本图书信息获取的业务逻辑,代码如下:第10章图书显示、购物车及订单模块的实现 public Str

25、ing singleBook()ActionContext ct=ActionContext.getContext();HttpServletRequest request=(HttpServletRequest)ct .get(ServletActionContext.HTTP_REQUEST);BookInfo bookInfo=bookInfoService.find(BookInfo.class,bookInfoFormBean.getId();request.setAttribute(book,bookInfo);return SUCCESS;第10章图书显示、购物车及订单模块的实现

26、3.Struts.xml配置及运行完成了Web页面和Action的定义后,同样必须对二者进行关联,配置struts.xml文件,代码如下:/singlebook.jsp重启Tomcat,运行http:/localhost/bookSite/singleBookAction.action?id=6的结果如图10-5所示。第10章图书显示、购物车及订单模块的实现图10-5 单本图书显示页面第10章图书显示、购物车及订单模块的实现 10.2 购购物物车车模模块块10.2.1 购物车的配置文件购物车的配置文件1.beans.xml配置为了让读者更加详细地了解Spring容器对bean的管理,在购物车模

27、块中我们不采用Spring注解进行依赖注入,而使用在beans.xml中配置的方式来完成bean的定义和依赖注入。在beans.xml中添加如下代码:第10章图书显示、购物车及订单模块的实现 第10章图书显示、购物车及订单模块的实现2.struts.xml配置对于购物车模块,一共涉及两大部分的action配置,包括购物车action和购物车管理action。(1)购物车配置的代码如下:/cart.jsp第10章图书显示、购物车及订单模块的实现(2)购物车管理配置的代码如下:cartAction.action cartAction.action第10章图书显示、购物车及订单模块的实现 cartA

28、ction.action购物车的更新主要是图书数量的更新,在10.2.3节将完成购物车管理的一系列功能。第10章图书显示、购物车及订单模块的实现10.2.2 购物车的实现购物车的实现Session的好处是开发简单、效率较高,但相对内存占用会较多,尤其是访问量比较大的网站;而数据库的效率显然也是个问题。很多时候一些大型电子商务网站会从业务角度来综合使用这两种方式。具体为:第10章图书显示、购物车及订单模块的实现(1)只有在用户选择“添加商品到购物车”时才创建购物车对象。要知道大多数的用户都处于浏览状态,为每个光临的用户都自动创建一个购物车显然是不明智的。(2)将购物车临时存储到Session中有

29、个好处,就是我们可以为没有登录的用户提供购物车服务,只有在用户进行结算的时候才需要登录。当然,我们也可以使用Session ID作为唯一识别符将购物车存储到数据库中。第10章图书显示、购物车及订单模块的实现(3)对于已经登录的用户,如果他的购物车不为空,我们会在Session过期时将他的购物车数据存储到数据库中,这样用户下次进入网站的时候就可以持有上次挑选的商品进行一次结算,这种人性化的方式更加吸引用户。不过这里面有个陷阱就是折扣的问题,因为很多促销活动中,商品的价格和日期有关,因此这种方式可能带来商品价格上的混乱。对于中小型购物网站显然不用考虑得这么周全。本项目使用Session来实现购物车

30、。第10章图书显示、购物车及订单模块的实现1.实现Session监听利用Session实现购物车存在的一个关键解决问题就是Session的监听。大部分读者应该清楚,Session变量的作用范围仅限于同一个IE浏览器页面,如果打开另一个IE浏览器页面,则Session变量将会重新赋值。而用户可能会打开多个窗口来查看图书信息并进行购买,要保证用户的商品都在同一个购物车中,就要实现Session创建和摧毁的监听。第10章图书显示、购物车及订单模块的实现1)Session监听器类Session监听器类为com.action.shopping.SiteSessionListener.java,具体代码如

31、下:package com.action.shopping;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;第10章图书显示、购物车及订单模块的实现public class SiteSessionListener implements HttpSessionListener private stati

32、c Map sessions=new HashMap();public void sessionCreated(HttpSessionEvent sessionEvent)sessions.put(sessionEvent.getSession().getId(),sessionEvent.getSession();public void sessionDestroyed(HttpSessionEvent sessionEvent)sessions.remove(sessionEvent.getSession().getId();第10章图书显示、购物车及订单模块的实现 public stat

33、ic HttpSession getSession(String sessionID)return sessions.get(sessionID);public static void removeSession(String sessionID)if(sessions.containsKey(sessionID)sessions.remove(sessionID);第10章图书显示、购物车及订单模块的实现2)Session监听器配置Session监听器配置在web.xml中,也就是在工程启动时,具体代码如下:com.action.shopping.SiteSessionListener第10

34、章图书显示、购物车及订单模块的实现3)测试监听器(1)不使用监听器。根据10.2.1节的配置,新建购物车的action业务逻辑,代码在com.action.shopping.CartAction.java中。package com.action.shopping;/省略导入包public class CartAction extends ActionSupport private BookInfoService bookInfoService;第10章图书显示、购物车及订单模块的实现 public void setBookInfoService(BookInfoService bookInfo

35、Service)this.bookInfoService=bookInfoService;public String execute()throws Exception ActionContext ct=ActionContext.getContext();HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);第10章图书显示、购物车及订单模块的实现 if(request.getSession().getAttribute(out)=null)request.getSes

36、sion().setAttribute(out,new Date();return SUCCESS;新建cart.jsp文件,输出out变量,即$out,测试运行http:/localhost/bookSite/cartAction.action,打开两个浏览器,发现显示的时间不相同,说明在不同的页面同一个Session值不会被保存。第10章图书显示、购物车及订单模块的实现(2)使用监听器。修改以上的execute方法,代码如下:public String execute()throws Exception ActionContext ct=ActionContext.getContext()

37、;HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);String sid=request.getParameter(sid);HttpSession session=SiteSessionListener.getSession(sid);第10章图书显示、购物车及订单模块的实现 System.out.println(session);if(session=null)request.getSession().setAttribute(buycart,new Date()

38、;else request.setAttribute(message,session.getAttribute(buycart);return SUCCESS;第10章图书显示、购物车及订单模块的实现修改cart.jsp文件,输出message变量,即$message,测试运行http:/localhost/bookSite/cartAction.action,在【console】控制台输出字符串A(A代表访问的session的sid值,一般如“D6DEC55CEBC4EFB51B8FC52EEAA67181”字样),另外打开一个IE窗口,在【console】控制台输出字符串B,而且页面显示的

39、时间不一致。第10章图书显示、购物车及订单模块的实现但是当把第二个页面的访问地址改成http:/localhost/bookSite/cartAction.action?sid=字符串A,则第二个页面的时间就会与第一个页面的时间一致,这说明Session监听器设置成功。在购物模块中可以把第一个页面的时间看成是购物车的物品,当打开新的浏览器时就可以通过Session监听器获得此购物车的物品。下面进入购物车模块制作的讲解。第10章图书显示、购物车及订单模块的实现2.初步实现购物车功能实现购物车功能时,首先要实现每项购买产品的添加。那么,添加到购物车的购物项应该存放哪些相关数据呢?这就是我们这节首先

40、要解决的问题。1)购物项辅助类的实现编写购物项类com.bean.BuyItem.java,其中属性book代表每个购物项中的书目,属性amount代表对应购物项中书的数量,具体代码如下:第10章图书显示、购物车及订单模块的实现package com.bean;import com.bean.book.BookInfo;public class BuyItem private BookInfo book;private int amount;public BuyItem()public BuyItem(BookInfo book)this.book=book;第10章图书显示、购物车及订单模块

41、的实现 public BuyItem(BookInfo book,int amount)this.book=book;this.amount=amount;/省略get/set方法 ublic int hashCode()final int prime=31;int result=1;result=prime*result+(book=null)?0:book.hashCode();return result;第10章图书显示、购物车及订单模块的实现 public boolean equals(Object obj)f(this=obj)return true;if(obj=null)retu

42、rn false;if(getClass()!=obj.getClass()return false;BuyItem other=(BuyItem)obj;if(book=null)if(other.book!=null)return false;else if(!book.equals(other.book)return false;return true;第10章图书显示、购物车及订单模块的实现以上hashCode()和equals()两个方法的定义表示BuyItem类之间的比较依赖book属性,也就是book属性相同的两个BuyItem实例相等,也就是同一本书被看成同一个购物项,如果被多

43、次点击购买,那么只是在同一个购物项中增加amount的数量。我们可以对购物项的比较做一个测试,建立测试类junit.test.BuyCartTest.java,测试购买同一种图书是否能通过购物项判断出来,具体代码如下:第10章图书显示、购物车及订单模块的实现package junit.test;/省略导入包public class BuyCartTest Test public void test()BookInfo book1=new BookInfo(1);BuyItem buyItem1=new BuyItem(book1,5);BookInfo book2=new BookInfo(1

44、);BuyItem buyItem2=new BuyItem(book2,9);System.out.println(buyItem1.equals(buyItem2);第10章图书显示、购物车及订单模块的实现2)购物车类的实现有了购物项的定义,那么只有建立购物车类,再把购物项添加到购物车就可以完成购物车的业务逻辑。建立购物车com.bean.BuyCart.java,其中包含购物项列表items和添加购物项功能addItem()方法,具体代码如下:第10章图书显示、购物车及订单模块的实现package com.bean;/省略导入包public class BuyCart private L

45、ist items=new ArrayList();/省略get/set方法 public void addItem(BuyItem item)if(!items.contains(item)items.add(item);第10章图书显示、购物车及订单模块的实现 else for(BuyItem bi:items)if(bi.equals(item)bi.setAmount(bi.getAmount()+1);break;在addItem()方法中先判断购物项列表中是否存在要购买的书,如果不存在,则添加购物项;如果存在该购物项,则累加其购买数量。第10章图书显示、购物车及订单模块的实现3)购

46、物车Action的实现实现了购物车类,就完成了购物车Action的逻辑处理辅助类的编写。因此,根据前面的session测试方法,修改com.action.shopping.CartAction.java文件,即可实现Web页面的输出和购物车物品的获取。具体代码如下:第10章图书显示、购物车及订单模块的实现package com.action.shopping;/省略导入包public class CartAction extends ActionSupport private Integer id;private Boolean visible;private BookInfoService

47、bookInfoService;/省略get/set方法 public String execute()throws Exception 第10章图书显示、购物车及订单模块的实现 ActionContext ct=ActionContext.getContext();HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_ REQUEST);HttpServletResponse response=(HttpServletResponse)ct.get(ServletActionContex

48、t.HTTP_ RESPONSE);BuyCart buyCart=(BuyCart)request.getSession().getAttribute(buycart);/判断其它页面有无buyCart存在 if(buyCart=null)第10章图书显示、购物车及订单模块的实现 String sid=WebUtil.getCookieByName(request,buyCartID);if(sid!=null)HttpSession session=SiteSessionListener.getSession(sid);if(session!=null)buyCart=(BuyCart)s

49、ession.getAttribute(buycart);if(buyCart!=null)SiteSessionListener.removeSession(sid);request.getSession().setAttribute(buycart,buyCart);第10章图书显示、购物车及订单模块的实现 WebUtil.addCookie(response,buyCartID,request.getSession().getId(),request.getSession().getMaxInactiveInterval();/若其它页面无buyCart存在,则新建session if(

50、buyCart=null)buyCart=new BuyCart();request.getSession().setAttribute(buycart,buyCart);第10章图书显示、购物车及订单模块的实现/session的最大存放时间为30分钟 WebUtil.addCookie(response,buyCartID,request.getSession().getId(),request.getSession().getMaxInactiveInterval();if(getId()!=null&getId()0)BookInfo book=bookInfoService.find(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《基于JavaEE的电子商务网站建设》课件第10章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|