·····学院JavaWeb应用开发课程设计用Servlet实现购物车班级:·······姓名:##########指导教师:#时间:2012/12/24至2012/12/28目录-2-1、课程设计概述---------------------------31.1课程设计的主要思想-----------------------31.2课程设计的主要目的-----------------------32、课程需求分析---------------------------32.1性能需求分析-----------------------------32.2功能需求分析-----------------------------43、课程详细说明、调试---------------------43.1课程设计流程图---------------------------43.2课程设计功能模块图-----------------------53.3课程源代码调试示-------------------------53.4课程需要注意的问题-----------------------114、个人总结-----------------------------------121、课程设计概述-3-1.1课程设计的主要思想本次设计主要用的思想是MVC设计模式,Jsp充当View的角色,servlet充当Conteoller,JavaBen(Book)充当Model,实现界面与逻辑的分离,通过传递参数进行调用,Jsp页面通过发送一个操作类型变量,从而使得servlet获知应当进行的操作,并通过调用javabean进行实际的执行,这样页面与逻辑就得到了分离,互不干涉和影响实现了购物的一些简单操作,本程序没有用到数据库的知识。1.2课程设计的主要目的本次课程用到了我们学过的很多知识,有html,java,jsp,servlet,javaben等知识,这样一来加强我们对现正在学的知识的巩固以及对以前学的html和java的回顾,掌握这些知识的综合运用,对方法,类的进一步加深,同时也让学生通过实验来感受静态网页和动态的网页不同。不仅如此,还加强我们的动手能力和对出现问题的解决能力以及对我们自身所学知识的一个检验。2、课程需求分析2.1性能需求分析随着计算机技术的发展和网络人口的增加,网络世界越来越丰富,电子商务已经成为网上的一股潮流。我们相信要不了太长时间,顾客就可以在网络世界上获得他们在现实世界上可以-4-获得的所有商品和服务。而对图书的需求也与日俱增,因此开发一个网上商店系统是有很大的实用价值和经济价值。对于我们计算机软件专业的学生来说,这是一次我们所学知识用于现实中的很有意义的实践活动,所以开发这样一个简单的Servlet实现的购物车是很有价值的。2.2功能需求分析利用Servlet实现的这个购物车应具备的功能有:(1)商品的展示界面,所选中购买商品的界面以及商品付款的界面。(2)能对添加到购物车的商品进行添加,删除等简单的操作。(3)能正确的运用jsp,selvlet,javaben。(4)要注意连贯性,就是页面的跳转要连贯。3、课程详细说明、调试3.1课程设计流程图商品展示添加购物车结账从车中取出继续购物选中3.2课程设计功能模块图-5-购物车各文件对应功能模块表对应模块对应文件对应功能商品展示模块EShop.jsp用于显示商品的情况购物车模块Cart.jsp用于显示购物车的情况结账模块CheckOut.jsp用于显示结账的情况数据存储模块ShoppingServlete.java用于数据的存储和计算商品处理模块Book.java用于实现商品的对象化3.3课程源代码结果调试示例(1)输入正确的地址将会显示的商品展示模块页面在浏览器中输入:上面的商品展示界面对应的关键代码:………formname=shoppingFormaction=bbmethod=POSTb书目/bselectname=Book-6-option简爱/作者一/14.95/optionoption商务文件/作者二/16.95/optionoption励志书/作者三/16.95/optionoption投标书/作者四/13.95/optionoption白雪公主/作者五/14.95/optionoption小白看魔术/作者六/10.95/option/selectb订购数量:/binputtype=textname=qtysize=3value=1/inputtype=hiddenname=actionvalue=ADD/inputtype=submitname=submitvalue=添加到购物车//form/centerp/jsp:includepage=Cart.jsp/………(2)对所展示的书籍又不熟悉的,点击对应的书籍我们设有详细信息的超链接,看完信息后可以点击“返回购物”从而回到展示页面。点击《简爱》书籍:对于上面超链接部分的代码:………pimgsrc=image/2.jpgalign=left/fontcolor=#000000size=+1face=宋体《简·爱》创作于英国谢菲尔德,是一部带有自传色彩的长篇小说,它阐释了这样一个主题:人的价值=尊严+爱。《简·爱》-7-中的简爱人生追求有两个基本旋律:富有激情、幻想、反抗和坚持不懈的精神;对人间自由幸福的渴望和对更高精神境界的追求。这本小说的主题是通过对孤女坎坷不平的人生经历,成功地塑造了一个不安于现状、不甘受辱、敢于抗争的女性形象,反映一个平凡心灵的坦诚倾诉的呼号和责难,一个小写的人成为一个大写的人的渴望。brbr内容:brbr简·爱是个孤女,出生于一个穷牧师家庭。父母由于染上伤寒,在一个月之中相继去世。幼小的简寄养在舅父母家里。舅父里德先生在红房子中去世后,简过了10年受尽歧视和虐待的生活。一次,由于反抗表哥的殴打,简被关进了红房子。肉体上的痛苦和心灵上的屈辱和恐惧,使她大病了一场。br舅母把她视作眼中钉,并把她和自己的孩子隔离开来,从此,她与舅母的对抗更加公开和坚决了。以后,简被送进了洛伍德孤儿院。br孤儿院教规严厉,生活艰苦,院长是个冷酷的伪君子。简在孤儿院继续受到精神和肉体上的摧残。由于恶劣的生活条件,孤儿院经常有孩子病死,她最好的朋友海伦在一次大的斑疹伤寒中去世了。这次斑疹伤寒也使孤儿院有了大的改善。简在新的环境下接受了六年的教育,并在这所学校任教两年。由于谭波尔儿小姐的离开,简厌倦了孤儿院里的生活,登广告谋求家庭教师的职业....../font/ph2align=rightahref=EShop.jsp返回购买/a/h2………(3)点击下拉列表选中自己喜欢的书籍,点击“添加到购物车”就会到达购物车模块的页面,如果想删除就点击旁边的“从购物车中取出”。购物车界面对应的关键代码:………%for(intindex=0;indexbuylist.size();index++){Bookbook=(Book)buylist.elementAt(index);%-8-trtdb%=book.getArtist()%/b/tdtdb%=book.getName()%/b/tdtdb%=book.getPrice()%/b/tdtdb%=book.getQuantity()%/b/tdtdformname=bbmethod=POSTinputtype=submitvalue=从购物车中取出inputtype=hiddenname=delindexvalue='%=index%'inputtype=hiddenname=actionvalue=DELETE/form/td/tr%}%/tablepformname=checkoutFormaction=bbmethod=POSTinputtype=hiddenname=actionvalue=CHECKOUTinputtype=submitname=Checkoutvalue=结账/form………(5)如果以及确定要买的书籍就点击下面的“结账”,就会到达结账功能模块的页面,这里将显示你的支付情况。结账页面对应的代码附录:……-9-tableborder=0cellpadding=0width=100%%Vectorbuylist=(Vector)session.getValue(shopping.shoppingcart);Stringamount=(String)request.getAttribute(amount);for(inti=0;ibuylist.size();i++){Bookbook=(Book)buylist.elementAt(i);%trtdb%=book.getArtist()%/b/tdtdb%=book.getName()%/b/tdtdb%=book.getPrice()%/b/tdtdb%=book.getQuantity()%/b/td/tr/table………(6)关于数据的存储模块和商品的对象化模块的代码都会用到,下面对这两个文件附录一些关键的代码:ShoppingServlet.java:………重写doPost()方法:doPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{res.setContentType(text/html;charset=GB2312);req.setCharacterEncoding(GB2312);HttpSessionsession=req.getSession(false);if(session==null){res.sendRedirect();}获取信息:Vectorbuylist=(Vector)session.getValue(shopping.shoppingcart);Stringaction=req.getParameter(action);if(!action.equals(CHECKOUT)){if(action.equals(DELETE)){Stringdel=req.getParameter(delindex);intd=(newInteger(del)).intValue();buylist.removeElementAt(d);}-10-elseif(action.equals(ADD)){booleanmatch=false;BookaBook=getBook(req);if(buylist==null){buylist=newVector();buylist.addElement(aBook);}else{for(inti=0;ibuylist.size();i++){Bookbook=(Book)buylist.elementAt(i);if(book.getName().equals(aBook.getName())){book.setQuantity(book.getQuqntity()+aBook.getQuantity());buylist.setElementAt(book,i);match=true;}}if(!match){buylist.addElement(aBook