看java电子商务网站系统如何玩转网络购物市场营销就业前景

互联网新机遇:移动社交电商将成为下一个风口?
做电商的圈子,这几年挂在嘴边的就是淘宝不行了、天猫难做了、京东眼看也快到顶了,流量成了传统电商最大的难题,不花钱就没有流量——财报、股价的表现也在支持这种观点。电商行业悲观情绪蔓延的厉害。
突然平地冒出一个拼多多,紧接着又是有赞、无忧猴商城等增长飞快的新社交电商平台,就让很多老人惊喜又惊讶。喜的是没想到电商市场还有发展的潜力,惊的是这种潜力深不见底,搞不好就要再演一场颠覆的好戏。
没错,电商行业即将迎来新的黄金十年,只是这一次的焦点不再是老牌的阿里、京东,而是全新的商业模式:移动社交电商。
此消彼长,电商产业的商业模式变革是无可否认的趋势。
传统电商模式的没落
移动社交电商平台的兴起
近年来,传统电商的流量增长放缓,市场潜力越发减小。反之移动社交电商平台速度之快出乎很多人意料。
此消彼长,电商产业的商业模式变革是无可否认的趋势。
传统电商平台出了什么问题?
传统电商平台,更像是广告公司。
商家给平台付高昂的流量费用来做宣传,以此尽可能拉动销量,靠薄利多销赚钱——这套玩法做得久了,大家挤成一团,流量成本越攀越高,净利润一路下滑。平台赚得盆满钵满,只是苦了苦苦挣扎在盈亏线上的无数商家。
随着移动互联网的覆盖和智能手机的普及,社交电商迅猛发展,并越来越多受到消费者的青睐。“传统电商中人与人之间的关系黏性不高。社交电商有真实的口碑体验,基于信任的社群交流,可以为消费者提供更好的购物体验,同时消费升级,消费者升级为消费商,消费者也可以参与商品的利润分配”无忧集团董事长黄成佳(AK)说。
移动互联网时代,传统的电商模式遭遇流量瓶颈,社交成为主要的流量入口,以微博、微信、直播等为载体的社交电商将引领电子商务新时代。据悉,无忧猴商城从诞生开始,就集移动电商、社交电商于一体,借势移动社交网络,沉淀信任关系,并且在人性化的平台架构与业务设计基础上,动态优化规则,形成集合价值。基于“互联网+”的分享经济,依托原有产业背景优势,无忧集团通过建设社交电商平台,实现实时交易,在帮助他人完成创业梦想的同时,构筑其在社交电商领域的影响力。
“互联网+”对传统零售渠道的冲击,正逐渐成为一种新常态,在这种情况下,作为移动社交电商平台无忧猴商城,要做一个全品类品牌化线上购物商城。在这里人人都可免费注册成为无忧会员,轻松享受商城全场会员价。无忧猴商城每周推荐各种精品、优品、良品,接地气的价格,高档次的品质。团购、秒杀、特卖等促销活动,应有尽有。
商城有母婴用品、美妆个护、活动户外、医药保健、食品酒水、家居日用、钟表首饰、数码家电、礼品箱包、汽车用品、服饰鞋帽、宠物生活十二大类目,旨在为消费者营造最佳的购物体验,提供优质产品,凭借优秀的技术、运营、推广、营销团队。
无忧猴商城从供应商甄选、管理体系到监管体制、物流管理,每一道工序都由专人检查,只同最专业的生产厂家及物流公司合作,顶级的服务流程和实时的监察机制为消费者提供物流保障。
无忧集团集合了众多国内外一流的品牌供应商和技术资源,以创新B2B电子商务模式,为创业者提供平台授权系统、订单系统、促销系统,控价防伪系统,扫码系统,无忧商学院,无忧社区,官方内容营销、系统培训等全方位服务和大众联合创业的资源网络,为每一个创业者提供全方位创业支持,也为大众消费者提供先进的移动电商购物体验。
如何看待传统电商的发展?黄成佳(AK)认为,过去传统电商有几大痛点,一是低价竞争;二是恶意竞争,比如假拍、差评等;三是没有任何行业细分的专业化培训,经验者都是自己去摸索;四是传统的经销模式层层压货,货物的周转率比较低;五是资金压力;六是仓储物流短板。
基于上述痛点,黄成佳(AK)认为,无忧集团的定位就是一个移动社交电商的创业型平台,让购物更方便,让创业更简单,而且一定是基于社交的属性,因为传统电商的人与人之间的关系,就是人跟机器之间的关系比较浅,黏性不高。而今天的新零售背后是产业升级,而产业升级最重要的是服务的升级,这就要求不单单停留在产品的服务和技术的服务层面上,而是要升级到生活方式的改善、服务品质的提升上,创造更高的生活价值和内容。
“未来垂直的移动电商平台将会迅速崛起。”黄成佳(AK)认为,目前国外知名品牌垂直类电商平台占70%,而国内只占20%。现在垂直类平台越来越多,将迎来新的发展时期。随着我国经济的快速发展,百姓收入的不断增强,人们消费的观念不再是追求便宜,而是看重产品的品质。
“垂直细分,讲究品质的平台才有可能在未来的差异化市场竞争中崛起,未来需要更加精准而专业的服务。”黄成佳(AK)表示,无忧集团平台集合了众多国内外一流品牌资源,与蕾思黛特、熊出没、帮宝适、阿迪达斯,匡威等几千个品牌达成战略合作,把精挑细选的产品放入平台,力求为创业者、消费者提供更多优质产品和服务。
黄成佳(AK)透露,在今天的新零售背后是产业升级,而产业升级最重要的是服务升级,这就要求我们不单单停留在产品服务和技术服务层面上,而是要升级到生活方式的改善、服务品质的提升上,创造更高的生活价值和内容。
互联网新机遇: 移动社交电商将成为下一个风口?
卧槽,移动互联网时代这就结束了?下一个风口是啥?
从IT行业发展史看下一个风口在哪里?
小程序,会是下一个创业风口吗
区块链真的会是下一个互联网?
转:阿里曾鸣:下一个风口是产业互联网
雷军眼中的下一个风口,为什么是它?
艾媒报告丨2017年全球移动社交市场研究报告
2018的有哪些风口值得期待
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: '5865575',
container: s,
size: '300,250',
display: 'inlay-fix'基于JAVA的购物网站(毕业论文)
毕业设计(论文)
题目: 基于Java技术的网上交易系统的开发
xxx&&&&&&&&&&&&
xx&&&&&&&&&&&&&
xx&&&&&&&&&&&&&&&
2009年6月9日
关键词:j2EE& struts + spring + hibernate
Development of an Online Trading System Based on Java Technology
Key words:& E-commerce& j2EE& struts + spring + hibernate
要对系统进行需求分析并进行总体设计。需求分析阶段通过分析系统的功能模块的划分以及角色的划分,为系统的总体设计提供依据。总体设计阶段通过对数据库、过滤器、监听器、和实体类的设计,以及各个模块用例图的描述,形成了开发的整体思路。
系统应用的关键技术
2.1.1 JSP的概述
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,类似于其他技术标准,如ASP,PHP等,主要用于开发动态网页内容。
JSP是新一代的动态内容编程技术,它继承了Java技术的&一次编写,随处运行&的特性,允许Web开发人员开发和维护与平台无关,信息丰富动态的Web页面,包括HTML,DHTML,XHTML和XML,它能使Web开发人员轻易搭建网络平台,建立起功能强大的Web网站。JSP可以把用户界面从内容层次中分离出来,使得Web开发人员不必修改在底层的动态内容,就可以修改整体的页面布局。
2.1.2 JSP的运行机制
2.1.3 JSP的强势与劣势
2.1.4 JSP与ASP的比较
组件JavaBeans
2.2.1 什么是JavaBeans
2.2.2 JSP与JavaBeans的关系
J2EE(Java 2 Platform Enterprise Edition)
关于Struts
2.4.1 Struts简介
2.4.2 Struts的主要功能
2.4.3 Struts工作原理
关于Spring
2.5.1 Spring简介
2.5.2 为什么需要Spring
2.5.3 Spring带给我们什么
关于Hibernate
2.6.1为什么引入hibernate
在B/S项目的开发中,和数据库的交互式不可避免的,J2EE的规范中提供了JDBC的接口来操作数据库,对于JDBC,开发人员可以获取数据库连接,然后向数据库发送SQL语句,并返回数据库操作的结果集,然后封装成对象返回给上层的应用程序。这就造成开发人员不但要求能够编写程序,熟悉业务逻辑,还要求开发人员同时能够担任DBA,对开发人员的要求很高;同时,当引入新的项目时,很多地方必须废弃,因为我们的代码中不光是业务逻辑,其中也嵌入了许多和底层有关的一些SQL代码;
另外这些嵌入在代码中的SQL语句也影响了我们程序的可测试性,我们在对代码进行调试的时候,既要测试代码,同时我们还要测试SQL语句。为了解决这些问题,引入了hibernate。
2.6.2使用Hibernate的好处
(1)Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP(Bean-Managed & Persistence)里面的访问数据库的代码。
(2)Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和Application Server
没有任何关系,也不存在兼容性问题。
(3)Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC
的替代者出现的,而不是Entity Bean的替代者出现的。
(4)由于是对JDBC的轻易级封闭,内存消耗少,最快的运行效率。
(5)开发效率高,Eclipse、JBuilder等主流JAVA集成开发环境对Hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人。
(6)分布式,安全检查,集群,负载均衡的支持。
2.6.3 Hibernate的工作原理
Hibernate的工作就是为Object和Ralational之间提供一个映射,其工作流程如下面的图2-4所示。
图2-4 hibernate工作流程
(1)& 启动Hibernate,如果在系统中添加Hibernate的支持,此处加载由系统自动完成。
(2)& 读取hibernate.cfg.xml或者hibernate.properties文件的配置信息,并将其加载为实例。
(3)& 构建SessionFactory实例(包含二级缓存)。
(4)& 从SessionFactory中取得Session对象,从而可以调用其方法,对数据库进行操作,实现ORM的功能。
Hibernate可以通过一个XML的mapping文件把一个POJO(Plain old java object)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,我们可以配置好Object和数据库中标的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object实习自动的维护。Hibernate还提供查询语句(HQL)供应用程序使用,Hibernate对数据访问实现封装,还可以对查询语句的发送实现管理,达到优化的目的,能够有效减少数据库的访问频率。
数据库(Database)是一系列信息资源的集合。在一个数据库中,与一个项目有关的所有信息都可以叫做一条记录(Record)。每一条记录都是由一系列的字段(Field)组成的。一系列记录的集合就构成了数据表格(Table)。对于一个简单的&平面文件&的数据库来说,它仅包含了一个数据表格,而对一个&关系型&数据库来说,它却包含两个或两个以上的数据表格,表格的各字段之间存在这一种或多种关系(有时可以把这种关系叫做&链接&)。
2.7.1 mysql的特点
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
& & 由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2.7.2 mysql的安装和配置(部分截图)
图2-5 mysql安装图(开始)
安装时一般采用默认路径:
图2-6 mysql安装图(路径)
图2-7 mysql安装图(数据库类型)
为了支持中文,在下面的列表框中学者gb2312(切记)
图2-8 mysql安装图(语言)
2.8.1 Tomcat 服务器简介
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。& & Tomcat中采用了Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从其官方网站上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。
2.8.2 Tomcat的特点
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。
2.8.3 Tomcat的优势
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache.我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。
2.8.4 Tomcat服务器的安装和配置
在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。
(1)需设置的环境变量
变量名:CATALINA_HOME变量值:D:/Program Files/tomcat6.0变量名:CLASSPATH
变量值:.;%JAVA_HOME%/%CATALINA_HOME%/common/lib
(2)安装完成后,打开tomcat服务器,启动浏览器,在地址栏上输入:http://localhost:8080/&& 若出现以下界面说明安装成功。
图2-10 tomcat启动页面
本章全面介绍本系统所用到的关键技术和工具,其中jsp作为javaweb开发的基础,对它的运行机制要理解,同时还要明白它的优劣势;j2ee作为开发的标准也作了简单介绍。而SSH(struts+spring+hibernate)作为本系统的核心与亮点技术,更是作了详细介绍,要掌握他们的工作原理,主要功能。最后介绍了本系统使用的数据库mysql以及tomcat服务器的安装与配置。只有掌握了这些技术基础,才能使本系统的开发正常进行。
第三章 系统需求分析和总体设计
系统功能需求
系统角色及其功能分析
3.2.1 系统的3个角色:
3.2.2 系统角色的功能
总体设计思想概述
图3-2 系统架构
总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成,共同完成特定的功能。层与层之间存在自上而下的依赖关系,上层组件会依赖下层组件的API,而下层组件则不依赖于上层组件。例如:表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层。并且每个层对对上层公开API,但具体的实现细节对外透明。当某一层发生变化,只要API不变,不会影响其他层的实现。
在本系统中,使用开源的mysql数据库,持久层用到spring所集成的Hibernate技术,业务逻辑层用普通javabean实现,表述层运用基于struts的MVC设计模式(struts用来做C层,spring实现V层与C层的解耦以及C层与M层的解耦)。
数据库设计
3.4.1 E-R图
下面是该系统数据库表的E-R图,如图3-3:
3.4.2数据表的设计
orders表用来保存客户的订单信息,如表3-1:
totalprice
orderstate
Createtime
User_item_id
用户明细ID
表3-1 orders
2.orderline表用来保存客户订单中的订单项信息,如表3-2:
3.orderline
order_item_id
订单条目ID
商品对象ID
订单对象ID
表3-2 orderline
3.orderstatus表用来保存定单状态,如表3-3:
orderstatus
description
表3-3 orderstatus
4.users表用来保存用户个人信息,如表3-4:
表3-4 users
5.contactinfo表用来保存用户个人明细,如表3-5:
contactinfo
contact_id
officephone
办公室电话
表3-5 contactinfo
6.product表用来保存商品,如表3-6:
createtime
Categoryid
description
表3-6 product
7.category表用来保存商品类型,如表3-7:
categoryid
description
表3-7 category
8. payway表用来保存权限信息,如表3-8:
表3-8 payway
系统的类设计
3.5.1 DAO类设计
3.5.2 POJO类设计(部分)
3.5.3 过滤器类设计
3.5.4 监听器类设计
系统的用例图
3.6.1 总体用例分析
3.6.2 用户管理用例分析
如图3-10,用户管理模块主要包括:用户登陆、用户注册、用户信息修五个功能组成。
3.6.3 购物车管理用例分析
3.6.4 订单管理用例分析
3.6.5 产品展示用例分析
本章首先分析系统的功能需求,通过对系统功能模块的划分以及角色的划分,明确了系统需求,为总体设计提供依据。接下来阐述了系统的总体设计思想,说明了本系统是基于B/S架构下的多层结构应用系统。最后通过对数据库、过滤器、监听器、和实体类的设计分析,以及各个模块用例图的描述,形成了开发的整体思路,为下一步编程实现各个具体功能铺平了道路。
系统的详细设计
数据库与POJO映射的实现
前面第二章曾介绍过:Hibernate可以通过一个XML的mapping文件把一个POJO(Plain old java object)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,我们可以配置好Object和数据库中表的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object实习自动的维护。
由于Spring提供了对Hibernate的集成,所以我们可以不配置hibernate.cfg.xml文件,而通过在applicationContext.xml文件中进行相关配置来达到同样的目的。图例说明如下:
如图4-1,user.hbm.xml文件配置了user类的相关信息。
图4-2是applicationContext.xml文件中Session工厂的配置信息,可以看到,图中的mappingResources属性中囊括了所有我们需要的mapping文件。
主要模块的设计说明与界面
4.2.1用户管理模块
form1.username.focus();
if(form1.pasa.value==""){
form1.pasa.focus();
if(form1.password.value!=form1.pasa.value){
if(form1.email.value==""){
form1.email.focus();
ActionForward forward =
RegisterActionForm registerForm = (RegisterActionForm)
User user = registerForm.getUser();
ContactInfo contactInfo = registerForm.getContactInfo();
if (userBiz.getUserById(user.getUserid()) != null) {
user.setContactinfo(contactInfo);
req.setAttribute("user", user);
forward = mapping.findForward("refresh");
log.debug("begin save user info . . .");
userBiz.userRegister(user, contactInfo);
req.setAttribute("TIP_KEY", "
forward = mapping.findForward("success");
} catch (ECPortException be) {
forward = mapping.findForward("fail");
be.printStackTrace();
log.error("save user info error. . .", be);
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
&&&&& String name=(String)session.getAttribute("name");
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String username = request.getParameter("userid");
String password = request.getParameter("password");
if (userService.isLoginCorrect(username, password)) {
User user = userService.getUserByName(username);
HttpSession session = ((HttpServletRequest) request).getSession(true);
session.setAttribute("user", user);
return mapping.findForward("loginsuccess");
String message = "
request.setAttribute("message", message);
return mapping.findForward("loginfailed");
Session session =
session = HibernateSessionFactory.getSession();
User user = (User) session.createQuery(
"from User u where u.username = '" + name + "'")
.uniqueResult();
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
session.removeAttribute("user");
session.removeAttribute("cart");
return mapping.findForward("logout");
public ActionForward toModify(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
HttpSession cur_session = req.getSession(false);
User user = (User) cur_session.getAttribute("USER");
String userid = user.getUserid();
String reqUserid = req.getParameter("userid");
if (reqUserid == null) {
List userList = userBiz.findAllUsers();
cur_session.setAttribute("userList", userList);
&&&&&& if (userid.equals("admin")) {
return mapping.findForward("adminInfo");
User p_user = userBiz.getUserById(userid);
req.setAttribute("user", p_user);
if (reqUserid != null) {
User p_user = userBiz.getUserById(reqUserid);
req.setAttribute("user", p_user);
return mapping.findForward("modify");
4.2.2购物车管理模块
&&& 购物车管理模块主要功能有如下几个部分:
(1)创建购物车
&&&&&& 当客户登录后,系统会给客户创建一个购物车放入服务器的Session会话中。使客户在整个会话中都拥有一个相同的购物车。这里主要运用了Http协议中的会话机制,将购物车保存在客户的会话中,这样在整个客户游览不同页面商品的过程中,都会使用同一个购物车对象。
&&&&&& 具体执行步骤:
(1)从客户的请求对象中获取Session会话对象
(2)从会话对象中获取购物车对象
(3)判断是购物车对象是不是空的,如果是空是就创建一个
&&& &* 在监听到session被创建之后,就立即向session中添加一个购物车Car;
&&& public void sessionCreated(HttpSessionEvent arg0) {
&&&&&& HttpSession session = arg0.getSession();
&&&&&& Cart& cart=new Cart();
&&&&&& session.setAttribute("cart", cart);
&&&&&& &* 从session中获得购物车
&&&&&& &*/
&&&&&& Cart cart = (Cart) session.getAttribute("cart");
&&&&&& if (cart == null) {
&&&&&&&&&& cart = new Cart();
(2)向购物车中添加一个商品项
&&& 客户在查看网页上的一个商品时,当向服务器发送一个&添加到购物车&的请求时,会执行这个功能。
功能执行过程:
(1)从客户请求对象中获取商品的ID
(2)调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象
(3)从商品对象中获取商品名,商品价格,来构建一个商品项对象
(4)从Session会话中获取购物车对象
(5)调用业务层的方法来根据购物车对象和商品项对象来执行添加操作
(6)将些商品项对象放入到购物车中
部分实现代码:
&&&&&& &* 从数据库中把商品取到;
&&&&&& &*/
&&&&&& ProductService productService = (ProductService) ServiceFactory.getInstance().getService(Globals.PRODUCT_SERVICE);
&&&&&& Integer id = Integer.parseInt(request.getParameter("productid"));
&&&&&& Product product = productService.getProductById(id);
&&&&&& &* 在向购物车中添加商品的时候会判断商品是否已经存在,
&&&&&& &* 已存在的就不让在加入了;
&&&&&& &*/
&&&&&& if (cart.isExist(id)) {
&&&&&&&&&& message = "该商品已经存在!请&a onclick='javascript:history.go(-1)'&返回&/a&!";
&&&&&&&&&& request.setAttribute("message", message);
&&&&&&&&&& return mapping.findForward("error");
&&&&&& } else {
&&&&&&&&&& /*
&&&&&&&&&& &* 向购物车添加一个商品;
&&&&&&&&&& &*/
&&&&&&&&&& cart.addCart(product);
&&&&&&&&&& session.setAttribute("cart", cart);
&&&&&&&&&& return mapping.findForward("addcartsuccess");
(3)& 修改购物车中一个商品项
&&& 在客户查看购物车时,想修改自己的购买商品时,会执行这个功能。由于商品的名称和价格都是系统管理人员设置的,所以客户都不可以修改,客户只能修改他/她所购买商品的数量。修改所选购的商品数量时,相应的商品项的小计和购物车的总计都会保持实时的更新,如图4-7。
功能的执行步骤:
(1)将ActionForm转换为ItemForm对象
(2)从ItemForm对象中获取商品ID
(3)从Session会话中获取购物车对象
(4)根据商品ID去调用业务层的方法去修改商品项
(5)修改小计
(6)将些商品项对象放入到购物车中
部分实现代码:
&&& public ActionForward modifyNumber(ActionMapping mapping, ActionForm form,
&&&&&&&&&& HttpServletRequest req, HttpServletResponse res) throws Exception {
&&&&&& String tempid = req.getParameter("productId");
&&&&&& Long productId = Long.parseLong(tempid);
&&&&&& String tempNum = req.getParameter("num" + productId);// num是一与JSP页面一致的字符串
&&&&&& int num = new Integer(tempNum).intValue();
&&&&&& HttpSession session = req.getSession(false);
&&&&&& IShoppingCart cart = (IShoppingCart) session
&&&&&&&&&&&&& .getAttribute("SHOPPING_CART");
&&&&&& cart.modifyProductAmountById(productId, num);
&&&&&& return mapping.findForward("success");
(4)查看购物车
客户选取了所有的商品后,来向服务器发送&购物车&请求时,会执行此功能,系统根据会话中的购物车中的商品项,来获取客户所选选商品的一个集合,在JSP页面上对这个集合中的商品项进行显示,如图4-8。
功能的执行步骤:
(1)从客户的请求对象中获取购物车对象
(2)从购物车对象中获取所有的商品项
(3)将所有的商品项对象加载到请求对象中发送给客户端
部分实现代码:
ShoppingCart sc=(ShoppingCart)request.getSession().getAttribute("SHOPPING_CART");
int size=sc.getOrders().getOrderlines().size();
request.setAttribute("size",size);
(5)删除购物车中的一个商品项
客户在查看购物车时,当向服务器发送一个&删除商品项&的请求时,会执行这个功能。删除商品项时,系统会自动更新购物车的总计值,如图4-9:
功能执行过程:
1从客户请求对象中获取商品的ID
2调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象
3从Session会话中获取购物车对象
4调用业务层的方法根据商品ID去删除购物车对象中的商品项
5将购物车重新加入到Session会话中,来更新Session会话中的购物车对象
部分代码实现:
//删除购物车中一个商品项
public ActionForward deleteById(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
String tempid = req.getParameter("productId");
Long productId = Long.parseLong(tempid);
HttpSession session = req.getSession(false);
ShoppingCart cart = (ShoppingCart) session
.getAttribute("SHOPPING_CART");
cart.removeProductById(productId);
if (cart.isEmpty()) {
return mapping.findForward("index");
return mapping.findForward("success");
(6)清空购物车
客户在查看购物时不要想要所有所选的商品时,向服务器发送&清空购物车&请求时会执行此功能。如图4-10:
&&& 执行此功能的步骤:
(1)从请求对象中获取Session会话
(2)从Session会话中获取购物车对象
(3)将购物车对象传给业务层的方法去清空购物车中的所有商品项
&&& 部分实现代码:
&&& &* 也就是从session中把购物车清除掉;
public ActionForward clearShopCart(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
HttpSession session = req.getSession(false);
IShoppingCart cart = (IShoppingCart) session
.getAttribute("SHOPPING_CART");
cart.removeAllProducts();
return mapping.findForward("index");
4.2.3 定单模块
生成订单是网上购物商城的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号,还要保存用户订单中所购买的商品信息。当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。结帐的流程是:从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中。
1、创建一个订单
&&& 客户选好了所有的商品时,并确认要买时,会向服务器发送一个&生成定单&的请求,运行结果如图4-11:
此时用户可以添加收货人的地址,点击图中的用户信息&修改&,会弹出一个页面,在此修改收货人地址等信息,如图4-12:
*&& 将修改后的地址保存到数据库中,其中保存了用户的信息:id
&&& public void addUserItem(UserItem useritem) throws StoreException {
&&&&&& try {
&&&&&&&&&& session = HibernateSessionFactory.getSession();
&&&&&&&&&& tx = session.beginTransaction();
&&&&&&&&&& session.save(useritem);
&&&&&&&&&& tx.commit();
&&&&&& } ..
用户确认无误后点击图4-11的&提交订单&,会出现下图:
&&& 部分实现代码:
&&& &* 确定定单
ActionForward checkOut(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
ActionForward forward = null;
GregorianCalendar gc = new GregorianCalendar();
Long paywayid = Long.parseLong(req.getParameter("payway"));
PayWay pw = new PayWay(paywayid);
List orderStatus = (List) req.getSession().getServletContext()
.getAttribute("all_orderStatus");
OrderStatus os = (OrderStatus) orderStatus.get(1);
HttpSession session = req.getSession(false);
User user = (User) session.getAttribute("USER");
ShoppingCart cart = (ShoppingCart) session
.getAttribute("SHOPPING_CART");
// Map&Long, OrderLine& orderLineMap = cart.getOrderLineMap();
Orders order = cart.getOrders();
order.setUsers(user);
order.setCost(cart.getTotalPrice());
order.setName(user.getUserid() + "-" + gc.get(gc.YEAR) + ""
+ gc.get(gc.MONTH) + "" + gc.get(gc.DAY_OF_MONTH));
order.setPayway(pw);
order.setOrderstatus(os);
log.debug("=== begin to generator order =====");
orderBiz.checkOut(order);
log.debug("==== generator order success . . .");
forward = mapping.findForward("success");
} catch (ECPortException be) {
forward = mapping.findForward("fail");
log.error("==== save user order fail...", be);
be.printStackTrace();
cart.removeAllProducts(); //
public void save(Orders transientInstance) {
log.debug("saving Orders instance");
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
2.查看定单
&&& 客户确认了所有的订单选项后,可以向服务器& 发送&查看定单明细&的请求:当用户点击了图4-13上的&明细&按钮是,页面运行结果如下:
&&& 部分代码实现:
&&& &*&&&&& 根据指定的order对象来获得属于该order的所有orderline项;
ActionForward orderDetail(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
ActionForward forward = null;
String tempid = req.getParameter("orderid");
Long orderid = Long.parseLong(tempid);
Orders order = null;
order = orderBiz.getOrderById(orderid);
log.debug("=== get order successful.===");
req.setAttribute("ORDER", order);
forward = mapping.findForward("showinfo");
} catch (ECPortException be) {
log.error("==== get failed .====");
forward = mapping.findForward("fail");
系统的测试
&& 本章详细介绍了系统主要功能模块的具体实现,包括用户管理模块、购物车模块和定单模块,分析他们的设计思路,执行步骤,并给出了每个功能的主要实现代码,还有为每个功能的最终执行结果配上截图,让我们看到更直观的效果。最后对完成的系统进行了测试,介绍了两种主流的测试方法,给出了测试结果,达到了预期的要求。
通过本次亲自动手设计系统,我更加深刻的了解系统开发的全过程,从中我熟练掌握了B/S结构Web应用软件设计的思想及其开发的全过程。首先要进行系统的需求分析,分析系统要达到什么功能,系统要划分为几个模块来设计,系统的具体功能应当如何去实现;分析完之后,考虑其涉及到的计算机专业知识,把问题细化,把大的问题划分为小的问题,然后逐个进行解决。毕业设计开始阶段,由于我们没有软件架构的设计经验,所以在项目的业务流程和软件的开发规范上犯了很的错误,所以在后期的组装过程变的非常的困难。
设计收获:
1.掌握了网站开发的基本流程,设计整个网站的功能模块图;
2.掌握了如何搭建和配置一个Tomcat服务器;
3.掌握了使用JSP编程,实现对信息的显示、修改、删除和添加等;
后续工作展望
[1] 景玉建.电子商务的发展与前景[J].《职业时空》,2005年第13期,P10-11
[2] 张孝祥.深入Java Web开发内幕&&核心基础[M].北京:电子工业出版社.
[3]什么是JSP,http://www.wm23.com/resource/R01/Internet_1012.htm
[4] 百度百科JavaBeans,http://baike.baidu.com/view/1006495.htm
[5] 百度百科J2EE,http://baike.baidu.com/view/1507.htm
[6] struts简介,http://baike.baidu.com/view/25603.htm
[7] 张桂元,贾燕枫. Struts开发入门与项目实践:软件工程师Java技术[M].北京:人民邮电出版社.2005.08
[8] 百度百科spring, http://baike.baidu.com/view/23023.htm
[9] 林信良.Spring2.0技术手册[M]. 北京:电子工业出版社.2007.04
[10] 百度百科 hibernate, http://baike.baidu.com/view/7291.htm
[11] 百度百科 mysql, http://baike.baidu.com/view/24816.htm
[12] 黄杰湘制作,《mysql中文参考手册》,网络电子书,http://www.devoinfo.com
[13] Tomcat简介, http://blog.sina.com.cn/n/2yg
[14] Jason Brittain & Ian F.Darwin Tomcat:The Definitive Guide
O&Reilly Media,Inc. 2003,P11-39
[15] 百度百科 B/S,http://baike.baidu.com/view/1477348.html
[16] 百度百科 3-tier,http://baike.baidu.com/view/687468.html
[17] 张孝祥,张红梅编著.JavaScript 网页开发&&体验式学习教程. 北京:清华大学出版社.2004.11
[18] 百度百科 软件测试,http://baike.baidu.com/view/16563.htm
本次毕业设计的最终完成离不开很多人的大力协助。衷心的感谢上海达内科技有限公司在我实习期间交给我这个项目任务,使我有了设计课题,还感谢在实习期间给我帮助的项目经理以及公司同事。真诚的感谢本次毕业设计的指导老师-宋玲教授,给了我自由选题的机会,在我的论文审稿阶段指出了很多方面的不足,并一一给出修改意见,对我进行悉心指导,对我的毕业论文最终完成给予了极大的支持和帮助。
特别感谢曹杰师兄,在毕业设计中遇到难点的时候,热情和耐心地给予指导,对我毕业设计工作的顺利完成有着重要的意义。
最后,再一次感谢所有帮助过我的人们!
Java Web的一个简单购物网站
JAVA简单项目&购物系统&的整个开发过程详解(内含源码和注释)
基于Java的毕业设计管理系统
没有更多推荐了,

我要回帖

更多关于 市场营销专业 的文章

 

随机推荐