JAVAWEB综训报告 用SERVLET实现购物车
- 格式:pdf
- 大小:592.05 KB
- 文档页数:12
java web购物车课程设计一、课程目标知识目标:1. 理解Java Web购物车的概念和作用,掌握其基本原理;2. 学会使用Java语言及相关技术,如Servlet和JSP,实现购物车的增删改查功能;3. 掌握数据库连接和操作,将购物车数据存储到数据库中;4. 了解Java Web项目的部署和运行过程。
技能目标:1. 能够独立设计和编写Java Web购物车程序,具备实际项目开发能力;2. 掌握调试和优化Java Web购物车程序的方法,提高程序性能;3. 学会使用版本控制工具,如Git,对项目进行管理和维护;4. 具备一定的项目分析和解决问题的能力。
情感态度价值观目标:1. 培养学生对Java Web编程的兴趣和热情,激发学习动力;2. 培养学生的团队协作精神,学会与他人共同解决问题;3. 培养学生的创新意识,敢于尝试新技术和新方法;4. 增强学生的网络安全意识,遵循法律法规,保护用户隐私。
本课程针对高中年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,学生能够掌握Java Web购物车的开发技能,培养编程兴趣和团队协作能力,为未来从事计算机相关领域工作打下坚实基础。
二、教学内容1. Java Web基础:回顾Java基础知识,学习Servlet和JSP技术,理解Web服务器工作原理。
- 教材章节:第1章 Java Web概述,第2章 Servlet技术,第3章 JSP技术。
- 内容安排:了解Java Web开发环境,掌握Servlet的生命周期方法,学习JSP页面内置对象和标签库。
2. 数据库操作:学习数据库基本操作,掌握JDBC技术,实现购物车数据存储。
- 教材章节:第4章 数据库基础,第5章 JDBC技术。
- 内容安排:学习数据库的基本概念,掌握SQL语句编写,学习JDBC连接数据库及操作。
3. 购物车功能实现:根据需求分析,设计和编写购物车功能模块。
JAVAWEB开发_购物车功能实现购物车是一个非常常见的功能,用于记录用户选择的商品和相应的数量,以便用户可以随时查看和管理自己的购物清单。
在Java Web开发中实现购物车功能,需要考虑以下几个方面:1. 数据模型设计:购物车功能需要记录商品信息和数量,可以设计一个CartItem类表示购物车中的一项商品,包含商品信息(如商品ID、名称、价格等)和数量属性。
另外,还需要设计一个ShoppingCart类表示整个购物车,包含CartItem对象的集合和相关操作方法。
2. 数据存储与管理:购物车数据可以存储在内存中或数据库中,根据实际需求选择适合的方式。
购物车功能需要实现添加商品、删除商品、更新数量和清空购物车等操作,可以在ShoppingCart类中定义相应的方法实现这些功能。
例如,添加商品可以通过一个addItem方法,将CartItem对象添加到购物车的集合中。
3. 用户界面设计:购物车功能需要提供一个用户界面用于展示购物车中的商品和相关操作,可以使用JSP、HTML和CSS等技术实现。
用户界面需要展示商品的名称、价格和数量,并提供相应的操作按钮用于删除商品、更新数量和清空购物车等操作。
用户在界面上可以修改商品数量后,需要通过Ajax或表单提交等方式更新购物车中的相应商品数量。
4. 数据持久化:购物车功能需要实现用户登录状态下购物车数据的持久化,以便用户可以在下次登录后继续使用之前的购物车数据。
可以使用Session或Cookie等技术实现购物车数据的存储和恢复。
当用户登录时,可以将购物车数据保存到数据库中;当用户再次登录时,可以从数据库中加载之前保存的购物车数据。
5. 价格计算与结算:购物车功能需要计算购物车中商品的总价,并提供结算功能。
可以在ShoppingCart类中定义一个calculateTotalPrice方法实现价格计算,根据购物车中的商品数量和价格计算总价。
结算功能可以调用支付接口完成支付操作,也可以将订单保存到数据库中,并跳转到订单确认页面。
应用Servlet实现购物车具体实现过程1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean;public class GoodsSingle {private String name; //保存商品名称private float price; //保存商品价格private int num; //保存商品购买数量public String getName() {return name;}public void setName(String name) { = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}}2、创建工具JavaBean-------- MyTools 实现字符型数据转换为整型及乱码处理package com.yxq.toolbean;import java.io.UnsupportedEncodingException;public class MyTools {public static int strToint(String str){ //将String型数据转换为int型数据的方法if(str==null||str.equals(""))str="0";int i=0;try{i=Integer.parseInt(str); //把str 转换成int 类型的变量}catch(NumberFormatException e){ // try-catch就是监视try中的语句,如果抛出catch中声明的异常类型i=0;e.printStackTrace(); //把Exception 的详细信息打印出来}return i;}public static String toChinese(String str){ //进行转码操作的方法if(str==null)str="";try {str=new String(str.getBytes("ISO-8859-1"),"gb2312");} catch (UnsupportedEncodingException e) {str="";e.printStackTrace();}return str;}}3、创建购物车JavaBean------ ShopCar实现添加、删除,购物车制作package com.yxq.toolbean;package com.yxq.toolbean;import java.util.ArrayList;import com.yxq.valuebean.GoodsSingle;public class ShopCar {private ArrayList buylist=new ArrayList();//用来存储购买的商品public void setBuylist(ArrayList buylist) {this.buylist = buylist;}/*** @功能向购物车中添加商品* @参数single为GoodsSingle类对象,封装了要添加的商品信息*/public void addItem(GoodsSingle single){if(single!=null){if(buylist.size()==0){//如果buylist中不存在任何商品GoodsSingle temp=new GoodsSingle();temp.setName(single.getName());temp.setPrice(single.getPrice());temp.setNum(single.getNum());buylist.add(temp); //存储商品}else{//如果buylist中存在商品int i=0;for(;i<buylist.size();i++){//遍历buylist集合对象,判断该集合中是否已经存在当前要添加的商品GoodsSingle temp=(GoodsSingle)buylist.get(i);//获取buylist集合中当前元素if(temp.getName().equals(single.getName())){ //判断从buylist集合中获取的当前商品的名称是否与要添加的商品的名称相同//如果相同,说明已经购买了该商品,只需要将商品的购买数量加1temp.setNum(temp.getNum()+1);//将商品购买数量加1break;//结束for循环}}if(i>=buylist.size()){//说明buylist中不存在要添加的商品GoodsSingle temp=new GoodsSingle();temp.setName(single.getName());temp.setPrice(single.getPrice());temp.setNum(single.getNum());buylist.add(temp);//存储商品}}}}/*** @功能从购物车中移除指定名称的商品* @参数name表示商品名称public void removeItem(String name){for(int i=0;i<buylist.size();i++){ //遍历buylist集合,查找指定名称的商品GoodsSingle temp=(GoodsSingle)buylist.get(i);//获取集合中当前位置的商品if(temp.getName().equals(name)){ //如果商品的名称为name参数指定的名称if(temp.getNum()>1){ //如果商品的购买数量大于1temp.setNum(temp.getNum()-1); //则将购买数量减1break; //结束for循环}else if(temp.getNum()==1){ //如果商品的购买数量为1buylist.remove(i); //从buylist集合对象中移除该商品}}}}4、创建实例首页面index.jsp,初始化商品信息<%@ page contentType="text/html;charset=gb2312"%><jsp:forward page="/index"/>5、创建处理用户访问首页面请求的Servlet---IndexServletpackage com.yxq.servlet;import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.yxq.valuebean.GoodsSingle;public class IndexServlet extends HttpServlet {private static ArrayList goodslist=new ArrayList();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();session.setAttribute("goodslist",goodslist);response.sendRedirect("show.jsp");}static{ //静态代码块String[] names={"苹果","香蕉","梨","橘子"};float[] prices={2.8f,3.1f,2.5f,2.3f};for(int i=0;i<4;i++){GoodsSingle single=new GoodsSingle();single.setName(names[i]);single.setPrice(prices[i]);single.setNum(1);goodslist.add(single);}}}6、show.jsp显示商品信息<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.ArrayList" %><%@ page import="com.yxq.valuebean.GoodsSingle" %> <% ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist"); %><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="3" align="center">提供商品如下</td></tr><tr align="center" height="30" bgcolor="lightgrey"> <td>名称</td><td>价格(元/斤)</td><td>购买</td></tr><% if(goodslist==null||goodslist.size()==0){ %><tr height="100"><td colspan="3" align="center">没有商品可显示!</td></tr><%}else{for(int i=0;i<goodslist.size();i++){GoodsSinglesingle=(GoodsSingle)goodslist.get(i);%><tr height="50" align="center"><td><%=single.getName()%></td><td><%=single.getPrice()%></td><td><a href="doCar?action=buy&id=<%=i%>">购买</a></td></tr><%}}%>7、创建处理用户购买、移除、清空购物车请求的ServletServlet----- BuyServletpackage com.yxq.servlet;import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.yxq.toolbean.MyTools;import com.yxq.toolbean.ShopCar;import com.yxq.valuebean.GoodsSingle;public class BuyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action=request.getParameter("action"); //获取action参数值if(action==null)action="";if(action.equals("buy")) //触发了“购买”请求buy(request,response); //调用buy()方法实现商品的购买if(action.equals("remove")) //触发了“移除”请求remove(request,response); //调用remove()方法实现商品的移除if(action.equals("clear")) //触发了“清空购物车”请求clear(request,response); //调用clear()方法实现购物车的清空}//实现购买商品的方法protected void buy(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();String strId=request.getParameter("id"); //获取触发“购买”请求时传递的id参数,该参数存储的是商品在goodslist对象中存储的位置int id=MyTools.strToint(strId);ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist");GoodsSingle single=(GoodsSingle)goodslist.get(id);ArrayListbuylist=(ArrayList)session.getAttribute("buylist"); //从session范围内获取存储了用户已购买商品的集合对象if(buylist==null)buylist=new ArrayList();ShopCar myCar=new ShopCar();myCar.setBuylist(buylist); //将buylist对象赋值给ShopCar类实例中的属性myCar.addItem(single); //调用ShopCar类中addItem()方法实现商品添加操作session.setAttribute("buylist",buylist);response.sendRedirect("show.jsp"); //将请求重定向到show.jsp页面}//实现移除商品的方法protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();ArrayListbuylist=(ArrayList)session.getAttribute("buylist");String name=request.getParameter("name");ShopCar myCar=new ShopCar();myCar.setBuylist(buylist); //将buylist对象赋值给ShopCar类实例中的属性myCar.removeItem(MyTools.toChinese(name)); //调用ShopCar类中removeItem ()方法实现商品移除操作response.sendRedirect("shopcar.jsp");}//实现清空购物车的方法protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session=request.getSession();ArrayListbuylist=(ArrayList)session.getAttribute("buylist"); //从session范围内获取存储了用户已购买商品的集合对象buylist.clear();//清空buylist集合对象,实现购物车清空的操作response.sendRedirect("shopcar.jsp");}}8、在web.xml文件中配置Servlet<?xml version="1.0" encoding="UTF-8"?><web-app><!-- 配置IndexServlet --><servlet><servlet-name>indexServlet</servlet-name><servlet-class>com.yxq.servlet.IndexServlet</servlet-class ></servlet><servlet-mapping><servlet-name>indexServlet</servlet-name><url-pattern>/index</url-pattern></servlet-mapping><!-- 配置BuyServlet --><servlet><servlet-name>buyServlet</servlet-name><servlet-class>com.yxq.servlet.BuyServlet</servlet-class> </servlet><servlet-mapping><servlet-name>buyServlet</servlet-name><url-pattern>/doCar</url-pattern></servlet-mapping></web-app>9、创建页面shopcar.jsp购物车<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.ArrayList" %><%@ page import="com.yxq.valuebean.GoodsSingle" %> <%//获取存储在session中用来存储用户已购买商品的buylist 集合对象ArrayListbuylist=(ArrayList)session.getAttribute("buylist");float total=0; //用来存储应付金额%><table border="1" width="450" rules="none" cellspacing="0" cellpadding="0"><tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr><tr align="center" height="30" bgcolor="lightgrey"> <td width="25%">名称</td><td>价格(元/斤)</td><td>数量</td><td>总价(元)</td><td>移除(-1/次)</td><% if(buylist==null||buylist.size()==0){ %><tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr><%}else{for(int i=0;i<buylist.size();i++){GoodsSingle single=(GoodsSingle)buylist.get(i);String name=single.getName(); //获取商品名称float price=single.getPrice(); //获取商品价格int num=single.getNum(); //获取购买数量//计算当前商品总价,并进行四舍五入float money=((int)((price*num+0.05f)*10))/10f;total+=money; //计算应付金额%><tr align="center" height="50"><td><%=name%></td><td><%=price%></td><td><%=num%></td><td><%=money%></td><td><ahref="doCar?action=remove&name=<%=single.getName() %>">移除</a></td></tr><%}}%><tr height="50" align="center"><td colspan="5">应付金额:<%=total%></td></tr><tr height="50" align="center"><td colspan="2"><a href="show.jsp">继续购物</a></td><td colspan="3"><a href="doCar?action=clear">清空购物车</a></td></tr></table>【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】。
在这里做的是一个图书购物车简单的小系统。
Megan 运行结果部分图片显示:所以需要创建一个实体类,其中应该包括一个书本的所有内容,将其set,get,和构造方法补充完毕,将其类称为Book.java。
然后需要创建一个Dome.java来代替数据库,也就是说这个Dome里面的数据将作为数据库。
接着就是Java web的三层模型,分别是Dao Service Servlet在这里做的都是模拟,因为是Dome.java模拟的是数据,所以也不用在连接数据库了,因为Dome里面的数据是Book类型的,所以在这里面使用了Map<String,Book>的类型,将数据使用map.put的方法添加进去。
下面就是Dao层的代码不需要数据库,所以这里就简单了,直接创建新的方法就可以了。
创建GetAll()方法,获取存放书籍的Map集合。
创建find的方法,根据关键字获取某本书籍,也就是获取的时候某一个id值下面的book 因为购物车是一个整体,购物车里面放的是购物项,可以对其进行增加或者删除什么的操作,所以创建一个Cart.java这就是购物车类,创建CartItem.java这是购物车之中的购物项,购物项中应该包括Book,以及这本书的quantity,还有价钱,需要注意的是该五项的价钱应该等于书的数量*这本书的价格。
所以在补充set,get方法的时候,应该将其getPrice的方法重新在写一下。
购物车里面是购物项和购物车的总价格,在这里创建一个map集合Map<String,CartItem>,创建方法:addBook将购物项加入到购物车里面,创建方法:getPrice购物车的总价就是所有购物项的价格加起来,addBook的时候,还需要判断购物车是否存在该购物项,如果不存在的话就需要new CartItem,将用户传递过来的书籍作为其中的参数,将购物项的数量设置为1,然后使用map.put,将购物项加入到购物车其中,如果该购物项存在的话,那么只需要将其的数量设置加1就可以了,然后对getPrice的方法进行修改,将购物车的总价就是所有的购物项的价格加起来Service层就是对Dao层的调用,getAll(),findBook(),添加购买书籍。
实验报告||实验名称实现聊天室和购物车课程名称Java EE编程技术||一、实验目的及要求学生在了解Java语言的基础上了解并掌握J2EE的构架及相关技术,重点掌握核心技术中最基本的Servlet、JSP、Javabean、JDBC,初步具有基于J2EE平台的软件开发能力、设计并实现小型应用系统1.设计并实现简单的聊天室:1)要求使用JSP或者servlet,使用session控制2)至少3个页面3)使用application对象或者servletcontext保存聊天信息4)能进行用户登录验证5)能显示在线用户名及数量6)供多个用户同时聊天7)选作:数据库存用户名、注册、登录2. 实现购物车1)使用servlet、JSP实现购物车,要求使用java的集合对象、session控制,购物车在结算前能进行购买数量的反复修改。
2)使用javaBean对购物车进行重新整合实现,实现表示层和业务逻辑层的分离。
3)选作:使用数据库保存货物和购物订单、用户登录、注册二、所用仪器、设备PC机,基于window xp 或者windows server 平台,使用JDK+Netbeans+MySQL为开发工具三、实验原理1.设计结构框架如下图2.聊天室由index.jsp , logincheck.jsp,room.jsp , say.jsp,out.jsp 构成。
购物车由index.jsp ,shopping.jsp , sure.jsp构成。
控制层是用来实现各个表示层间的跳转以及对数据的操作。
数据层由session和application构成。
3.javabean实质是一个java类;使用javabean可以实现代码的重复利用,减少代码的使用量。
Index.jsp//登录页面Logcheck.jsp//验证用户名,重定向到聊天室Room.jsp//聊天室,接收和显示聊天内容Say.jsp//获得和处理聊天内容并转回room.jspout.jsp//将用户状态改为下线,即将用户从application中删除四、实验结果 1.聊天室登陆聊天室Index.jsp //商场主页Shoping.jsp //将所买的物品的数量及复选框的选择情况记录到session ,并通过调用javabean 计算物品总花费。
javaee购物车课程设计一、课程目标知识目标:1. 学生能理解Java EE购物车的基本概念,掌握其核心功能和实现原理。
2. 学生能掌握使用Servlet和JSP实现购物车功能的基本步骤,了解相关的Java类和接口。
3. 学生能了解数据库连接和操作在购物车中的应用,掌握SQL语句的编写和执行。
技能目标:1. 学生能运用Java EE技术独立设计和实现一个简单的购物车系统。
2. 学生能通过调试和优化,解决购物车系统中可能出现的问题。
3. 学生能运用所学知识对购物车系统进行拓展,提高系统的功能和性能。
情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,提高自主学习和解决问题的能力。
2. 学生在团队协作中,学会沟通与分工,培养合作精神和集体荣誉感。
3. 学生通过购物车项目实践,认识到编程在生活中的实际应用,激发创新意识。
课程性质:本课程为Java EE方向的实践课程,以项目为导向,注重培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的Java基础,熟悉Java语法和面向对象编程,对Web开发有一定了解。
教学要求:教师需结合实际项目,引导学生掌握购物车的核心技术和实现方法,注重实践与理论相结合,提高学生的编程能力和解决问题的能力。
同时,关注学生的情感态度价值观培养,使学生在课程学习中得到全面发展。
通过分解课程目标为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 购物车基本概念与功能需求分析- 购物车的作用和意义- 功能需求:添加商品、查看商品、修改商品数量、删除商品、结算2. Java EE技术基础- Servlet的生命周期和常用方法- JSP页面基本语法和内置对象- JavaBean的使用3. 数据库连接与操作- JDBC的使用- SQL语句编写与执行- 数据库连接池技术4. 购物车系统设计与实现- 系统架构设计- 购物车类的设计与实现- 购物车与数据库的交互5. 购物车功能模块开发- 添加商品到购物车- 查看购物车商品列表- 修改购物车商品数量- 删除购物车商品- 购物车结算功能6. 系统测试与优化- 功能测试- 性能测试- 安全性测试- 代码优化7. 课程项目与实践- 项目需求分析- 项目设计与实现- 项目测试与调试- 项目总结与拓展教学内容根据课程目标和教材章节安排,注重科学性和系统性。
JAVAWEB购物车实验报告购物车是电子商务网站中常见的一个功能模块,通过购物车用户可以将自己想要购买的商品加入到购物车中,方便用户后续操作和管理。
本实验通过使用Java Web技术,实现了一个简单的购物车功能。
在本实验中,我们使用了Java语言和Servlet技术来实现购物车功能。
首先我们需要搭建一个Java Web项目,在项目中创建一个CartServlet类来处理购物车操作。
通过对请求的解析和处理,我们可以实现添加商品、移除商品、修改商品数量等操作。
在实现购物车功能时,我们使用了一个Cart类来表示购物车。
该类中包含了一个商品列表和一些方法来实现对商品的操作。
在CartServlet类中,我们通过Session来存储用户的购物车信息,这样用户可以在不同的页面之间共享购物车信息。
在添加商品到购物车时,我们首先判断商品是否已经在购物车中,如果是则增加商品数量,否则将商品添加到购物车中。
在移除商品时,我们只需要找到购物车中对应的商品并移除即可。
在修改商品数量时,我们需要找到购物车中对应的商品并更新数量。
为了展示购物车功能,我们创建了一个简单的网页,用户可以通过该网页向购物车中添加商品、移除商品和修改数量。
当用户添加商品到购物车时,页面会显示添加成功的提示信息,并显示当前购物车中的商品列表。
用户可以通过页面上的按钮来移除商品和修改商品数量。
通过实验,我们成功实现了一个简单的购物车功能,用户可以方便地将自己想要购买的商品添加到购物车中,并通过页面对购物车中的商品进行管理。
通过了解和使用Java Web技术,我们进一步加深了对Servlet和Session的理解,并学会了如何使用Java Web技术来开发购物车功能。
在未来的工作中,我们可以进一步完善购物车功能,比如增加结算功能和保存用户购物车信息的功能,以提升用户的购物体验。
此外,我们还可以学习和使用其他的Java Web框架,如Spring MVC和Struts等,来更加高效地开发和管理购物车功能。
1.1网上商城购物车模块实现案例(第2部分)1.1.1CartSessionBean+用户类+无状态Bean1、在该项目中再增加一个无状态的会话Bean(1)右击设计面板(2)该SessionBean的名称为CalculateSessionEJBBean,类型为stateless,由容器进行事务管理,interface类型设置为local/remote。
注意:EJB 2.0:“本地”接口和“远程”接口EJB 1.1规范给EJB客户端提供了一个remote interface和一个remote home interface与EJB 实例交互,得到位置的透明度。
以类似的形式,EJB 2.0规范现在给EJB客户端提供了一个local interface和一个local home interface来与共享同一个JVM的EJB实例交互。
EJB remote interface(javax.ejb.EJBObject)和remote home interface(javax.ejb.EJBHome)在本质上是Java RMI接口。
远程客户端运用接口和与Java RMI-IIOP兼容的参数与EJBs通讯。
参数和方法的结果值在同一个容器中传递,或者跨网络传递到远程容器。
这种编程模式给EJB客户端提供了一种访问EJB组件的方法,就好像这些组件是本地的一样。
然后,容器就可以透明地处理网络通讯和执行其它功能。
这种方法很适合粗粒度的(coarse-grained)方法调用,其中客户端和EJBs之间的客户端通讯保持到最小限度。
相反,EJB local interface(javax.ejb.EJBLocalObject)和local home interface (javax.ejb.EJBLocalHome)不是Java RMI接口,它们是EJB 2.0的新功能。
本地客户端——如其它EJBs,运用相同JVM中传递的参数直接与EJBs通讯。
·····学院Java Web应用开发课程设计用Servlet实现购物车班级:·······姓名:##########指导教师:#时间:2012/12/24至2012/12/28目录1、课程设计概述---------------------------31.1课程设计的主要思想-----------------------31.2课程设计的主要目的-----------------------32、课程需求分析---------------------------32.1性能需求分析-----------------------------32.2功能需求分析-----------------------------43、课程详细说明、调试---------------------43.1课程设计流程图---------------------------43.2课程设计功能模块图-----------------------53.3课程源代码调试示-------------------------53.4课程需要注意的问题-----------------------114、个人总结-----------------------------------121、课程设计概述1.1课程设计的主要思想本次设计主要用的思想是MVC设计模式,Jsp充当View 的角色,servlet充当Conteoller,JavaBen(Book)充当Model,实现界面与逻辑的分离,通过传递参数进行调用,Jsp页面通过发送一个操作类型变量,从而使得servlet获知应当进行的操作,并通过调用javabean进行实际的执行,这样页面与逻辑就得到了分离,互不干涉和影响实现了购物的一些简单操作,本程序没有用到数据库的知识。
eclipse的web项⽬实现Javaweb购物车的⽅法本⽂将带领⼤家实现第⼀个⽤eclipse写的第⼀个Javaweb项⽬–简单购物车。
⽂章会在问题分析、具体实现和常见问题这三块为⼤家详细解说。
问题分析:⾸先我们要了解我们要完成的是什么----购物车。
然后那实现购物车的什么呢?是不是往购物车添加⼼仪商品呢。
那是不是还要实现价格的计算呢?既然我们了解问题本质了,那我们接下来就要进⾏具体实现了。
具体实现:⾸先我们要看⼀下项⽬整体的结构下⾯我们要先创建实体类,就是我们的商品、预购商品和购物车这三个实体类。
BeansCart类(这个类是购物车实体类,包含了购物车中添加的商品和总计两个属性。
)package Beans;import java.util.HashMap;public class Cart {private HashMap<String,CartItem> cartItems=new HashMap<String,CartItem>();//购物车中添加的商品private double total;//总计public HashMap<String, CartItem> getCartItems() {return cartItems;}public void setCartItems(HashMap<String, CartItem> cartItems) {this.cartItems = cartItems;}public double getTotal() {return total;}public void setTotal(double total) {this.total = total;}}CartItem类(这个是购物车中添加的商品类,包含有商品、商品个数和⼩计)package Beans;public class CartItem {private Product product;//商品private int buyNum;//个数private double subTotal;//⼩计public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}public int getBuyNum() {return buyNum;}public void setBuyNum(int buyNum) {this.buyNum = buyNum;}public double getSubTotal() {return subTotal;}public void setSubTotal(double subTotal) {this.subTotal = subTotal;}}Product类(这⾥是具体的商品类,包含有商品编号、商品名和商品价格三个属性)package Beans;public class Product {private String pid;//商品编号private String name;//商品名private double price;//商品价格public String getPid() {return pid;}public void setPid(String pid) {this.pid = pid;}public String getName() {return name;}public void setName(String name) { = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Product(String pid,String name,double price) {// TODO Auto-generated constructor stubthis.pid = pid; = name;this.price = price;}}Service这个包下⾯只有⼀个类,主要的作⽤是存⼊商品,并能根据商品编号找到商品。
Jsp+Servlet 实现购物车功能本⽂实例为⼤家分享了Servlet 实现购物车功能的具体代码,供⼤家参考,具体内容如下(1)⽤servlet 实现简单的购物车系统,项⽬结构例如以下:(新建web Project 项⽬ 仅仅须要AddItemServlet ,ListItemServlet 。
exam403.jsp三个⽂件就可以。
其它的不⽤管)(2)exam403.jsp 代码例如以下:12345678910111213141516171819202122232425<html xmlns="/1999/xhtml "><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>⽆标题⽂档</title></head><body><form id="form1" name="form1" method="post" action="/servletProject/addItem"><label></label> 商品: <select name="itemID" id="itemID"> <option value="洗⾐粉">洗⾐粉</option> <option value="⾹皂">⾹皂</option> <option value="⾷⽤油">⾷⽤油</option> </select> <p>数量:<label><input name="quantity" type="text" id="quantity" value="1" /></label> <label> <input type="submit" name="Submit" value="提交" /> </label> <a href="/servletProject/listItem">查看购物车</a></p></form></body></html>(3)AddItemServlet 代码例如以下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051package com.lc.shoppingCar;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class AddItemServlet extends HttpServlet{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.io.IOException{ServletContext application=getServletContext() ; ServletConfig config=getServletConfig() ; response.setContentType("text/html;charset=gb2312");PrintWriter out=response.getWriter();HttpSession session =request.getSession();request.setCharacterEncoding("gb2312"); //读取表单传⼊的商品ID 及数量 String id=request.getParameter("itemID");String num=request.getParameter("quantity");if(id!=null && num.length()!=0){ //从Sessionn 中读取购物车HashMap shoppingCar=(HashMap)session.getAttribute("shoppingCar"); if(shoppingCar==null) shoppingCar=new HashMap(); //将商品加⼊到购物车中 String onum=(String)shoppingCar.get(id);if(onum==null)shoppingCar.put(id,num); else { int n1=Integer.parseInt(num); int n2=Integer.parseInt(onum); String result=String.valueOf(n1+n2);shoppingCar.put(id,result);}//将购物车写回session 中保存 session.setAttribute("shoppingCar",shoppingCar); }else //假设传⼊的商品ID 号为空或数量为空。