3、商品详情页面展示,动态展示jsp+redis
第十天:
1、使用freemarker实现网页静态化
2、ActiveMq同步生成静态网页
3、Sso系统工程搭建
第十一天:
1、sso注册功能实现
3、通过token获得用户信息
4、Ajax跨域请求(jsonp)
第十二天:
1、使用cookie实现购物车
2、将购物车数据保存到服务端
第十三天:
1、订单确认页面
3、订单系统完成
4、mycat的使用
第十四天
1、系统部署
2、项目总结
3、Git的使用
4、实战说明
第十五天~十七天:
项目实战
中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%;2012年,电子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。
009-2015年中国电子商务市场交易规模(万亿元)
结论:
2、电商行业技术要求很高、高可用、海量数据的存储。
宜立方网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。
管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
客服可以在后台管理系统中处理用户的询问以及投诉。
电商模式:
B2B:商家到商家。阿里巴巴,慧聪网、铭万网。
B2C:商家到用户。京东。
C2C:用户到用户。淘宝。
B2B2C:商家到商家到用户。天猫。
O2O:线上到线下。百度外卖、美团、饿了么。
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加后下降。
所以集群中节点数量不能太多,一般也就5个左右。
需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑。叫做分布式。
分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要进行通信。
集群:同一个工程部署到多台服务器上。
分布式架构:
把系统按照模块拆分成多个子系统。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。
缺点:
1、系统之间交互需要使用远程通信,接口开发增加工作量。
2、各个模块有一些通用的业务逻辑无法共用。
SOA:ServiceOrientedArchitecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
使用maven管理工程。
Jar包的管理
工程之间的依赖管理
自动打包
Maven的常见打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。
e3-parent:父工程,打包方式pom,管理jar包的版本号。
|项目中所有工程都应该继承父工程。
|--e3-common:通用的工具类通用的pojo。打包方式jar
|--e3-manager:服务层工程。聚合工程。Pom工程
|--e3-manager-dao:打包方式jar
|--e3-manager-pojo:打包方式jar
|--e3-manager-interface:打包方式jar
|--e3-manager-service:打包方式:jar
|--e3-manager-web:表现层工程。打包方式war
Pom工程。
开发环境:eclipsemars2
Maven:3.3.9
本地仓库:默认位置在~/.m2/repository
Eclipse不需要配置,只需要把本地仓库放到当前用户目录下的.m2下。
通用的工具类、通用的pojo。打包方式jar。需要继承父工程。
5.3.3.e3-manager
聚合工程。打包方式pom。
5.3.4.e3-manager-pojo
是一个maven模块,打包方式jar。
5.3.5.e3-manager-dao
Maven模块,打包方式jar。
5.3.6.e3-manager-interface
5.3.7.e3-manager-service
打包方式jar包。
Web.xml
Index.jsp:
5.4.启动工程
启动e3-manager工程。
需要在e3-manager的pom工程中,配置tomcat插件。启动的端口号,和工程名称。
在e3-manager的pom文件中添加如下配置:
cleantomcat7:run启动tomcat插件:
先把e3-parent、e3-common安装到本地仓库。然后再启动。
数据库使用mysql数据库,要求5.5以上版本。
1、在mysql数据库中创建数据库e3mall
2、将创建数据库的脚本导入到e3mall中。
使用mybatis官方提供的mybatis-generator生成pojo、mapper接口及映射文件。
并且将pojo放到e3-manager-pojo工程中。
将mapper接口及映射文件放到e3-manager-dao工程中。
1、Dao层:
Mybatis的配置文件:SqlMapConfig.xml
不需要配置任何内容,需要有文件头。文件必须存在。
applicationContext-dao.xml:
mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactory、mapper代理对象。需要mybatis和spring的整合包。
2、Service层:
applicationContext-service.xml:
所有的service实现类都放到spring容器中管理。并由spring管理事务。
3、表现层:
Springmvc框架,由springmvc管理controller。
Springmvc的三大组件。
6.4.2.Spring整合mybatis
创建applicationContext-dao.xml
db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/e3mallcharacterEncoding=utf-8jdbc.username=rootjdbc.password=root
备注:
Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBossDataSource。
Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模部署的严苛考验。
创建applicationContext-trans.xml
6.6.表现层整合
6.6.2.Web.xml
6.7.整合测试
根据商品id查询商品信息,返回json数据。
由于是单表查询可以使用逆向工程生成的代码。
参数:商品id
返回值:TbItem
业务逻辑:根据商品id查询商品信息。
/***商品管理Service*
Title:ItemServiceImpl
*Description:
*Company:www.itcast.cn
*@version1.0*/@ServicepublicclassItemServiceImplimplementsItemService{@AutowiredprivateTbItemMapperitemMapper;@OverridepublicTbItemgetItemById(longid){TbItemitem=itemMapper.selectByPrimaryKey(id);returnitem;}}/***商品管理Controller*
Title:ItemController
*Description:
*Company:www.itcast.cn
*@version1.0*/@ControllerpublicclassItemController{@AutowiredprivateItemServiceitemService;@RequestMapping("/item/{itemId}")@ResponseBodyprivateTbItemgetItemById(@PathVariableLongitemId){TbItemtbItem=itemService.getItemById(itemId);returntbItem;}}此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的。由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的。
在e3-manager-dao工程的pom文件中添加如下内容:
服务端使用VisualSVN,一般一个项目组只有一个svn,并不是每个开发者都需要安装服务端。
客户端使用Eclipse的svn插件,在提供的Eclipse中已经安装好,直接使用即可。