版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、魔力商城第二天1 内容回顾1、 聊聊电商行业2、 魔力商城功能介绍3、 魔力商城系统架构a) 传统的系统架构b) 分布式系统架构4、 工程搭建a) 使用maven管理工程b) 搭建一个聚合工程i. Pojoii. Mapperiii. Serviceiv. Web(war)5、 Ssm框架整合a) Mybatis的逆向工程b) Mybatis整合spring+springmvc2 课程计划1、 把工程改造成基于soa系统架构a) 使用dubbo2、 商品列表查询功能实现a) Easyui的DataGrid控件b) Mybatis的分页插件3 改造工程3.1 魔力商城的系统架构dao层服务层表现
2、层例如:后台管理工程需要根据商品id查询商品信息。前台系统也需要根据商品id查询商品信息。两个相同的业务逻辑可以可使用相同的服务。1、 系统之间调用可以使用Webservice2、 可以使用dubbo管理服务。后台管理系统商品服务3.2 Dubbo3.2.1 Dubbo介绍官方网站:http:/dubbo.io/Home-zh.htmDubbo就是资源调度和治理中心的管理工具。3.2.2 Dubbo的架构节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调
3、和调用时间的监控中心。 Container: 服务运行容器。3.2.3 Dubbo的使用方法远程服务:在本地服务的基础上,只需做简单配置,即可完成远程化:将上面的local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。并在提供方增加暴露服务配置,在消费方增加引用服务配置。发布服务:调用服务:3.3 工程的改造方案把工程拆分成两个独立运行的工程:1、后台服务端工程moli-manager:包含:moli-manager-daomoli-manager-pojomoli-manager
4、-service模块,打成一个war包(目的是方便部署)。包含一个spring容器发布服务。2、 web展现工程:moli-manager-web包含:web程序的页面一个spring容器,用于处理http请求moli-manager-controller3、把接口文件单独打成一jar包,服务端工程依赖、表现层工程也依赖。3.4 后端服务工程改造步骤第1步:从moli-manager-web工程中把spring、properties、mybatis配置文件拷贝到moli-manager-service工程中,并且删除springmvc.xml第2步:在moli-manager下新建一个模块mo
5、li-manager-interface再从moli-manager-service工程中将接口包整体移动到moli-manager-interface第3步:moli-manager-service工程的pom中添加对moli-manager-interface和dubbo的依赖添加dubbo依赖的jar包com.alibabadubboorg.apache.zookeeperzookeepercom.github.sgroschupfzkclient第4步:在applicationContext-service.xml配置文件中发布服务引入dubbo的schema,配置服务 第5步:在mo
6、li-manager-service工程中建个package写一个service后台服务工程的启动类:package com.moli.manager.service.bootstrap;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ManagerSerivceBootStrap public static void main(String args) throws Exception ClassPathXmlApplicationContext context =
7、new ClassPathXmlApplicationContext(classpath:spring/applicationContext-*.xml);context.start();while(true)Thread.sleep(Long.MAX_VALUE);3.5 前端web展现工程改造步骤改造moli-manager-web工程。第1步:删除mybatis、和spring的配置文件。只保留springmvc.xml第2步:将moli-manager-web工程从moli-manager工程中移出到moli-parent下第3步:在moli-manager-web工程的pom文件中添
8、加dubbo的依赖,删除moli-manager-service的依赖1、 添加dubbo的依赖com.alibabadubboorg.apache.zookeeperzookeepercom.github.sgroschupfzkclient第4步:在moli-manager-web工程中引用dubbo配置。1、 在springmvc.xml中添加dubbo的schema。!- -!- -第五步:所以的逆向工程生成的pojo需要实现序列化接口。3.6 dubbo注册中心3.6.1 Zookeeper介绍官方推荐使用zookeeper注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,
9、服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用Zookeeper:1、 可以作为集群的管理工具使用。2、 可以集中管理配置文件。3.6.2 Zookeeper的安装安装环境:Linux:cengos6.4Jdk:1.7以上版本Zookeeper是java开发的可以运行在windows、linux环境。需要先安装jdk。安装步骤:第
10、一步:安装jdk第二步:把zookeeper的压缩包上传到linux系统。第三步:解压缩压缩包tar -zxvf zookeeper-3.4.6.tar.gz第四步:进入zookeeper-3.4.6目录,创建data文件夹。第五步:把zoo_sample.cfg改名为zoo.cfgrootlocalhost conf# mv zoo_sample.cfg zoo.cfg第六步:修改data属性:dataDir=/root/zookeeper-3.4.6/data第七步:启动zookeeperrootlocalhost bin# ./zkServer.sh start关闭:rootlocalh
11、ost bin# ./zkServer.sh stop查看状态:rootlocalhost bin# ./zkServer.sh status注意:需要关闭防火墙。3.6.3 注册中心的用法服务发布时需要连接注解中心。引用服务时需要连接注册中心:3.6.4 Dubbo的Monitor配置monitor的方法:第一步:把dubbo-admin.war上传到linux服务器第二步:安装tomcat,把war包部署到tomcat中。第三步:修改/dubbo-admin/WEB-INF/perties属性文件。dubbo.registry.address=zookeeper:/127
12、.0.0.1:2181为注册中的实际地址。第四步:启动tomcat,访问67:8080/dubbo-admin/用户名:root密码:root4 后台管理系统:商品列表查询功能4.0项目开发流程1、 前期调研立项,组件团队2、 项目工程整体架构设计3、 项目工程骨架搭建4、 需求沟通,功能分析5、 页面原型设计,美工UI设计6、 页面代码开发(HTML CSS JS)7、后台功能代码开发添加静态页面:添加到moli-manager-web工程中。src/main/webapp/WEB-INF/.4.1 访问后台首页通过访问controller跳转到首页。请求
13、的url:”/”由于springmvc.xml配置拦截请求的url是“/”,所以css、js同样被拦截。需要配置一个资源映射pageController:Controllerpublic class PageController RequestMapping(/)private String showIndex() return index;RequestMapping(/page)public String showPage(PathVariable String page) return page;4.2 商品列表实现4.2.1 需求分析请求的url:/item/list请求的参数:pag
14、e、rows响应一个json数据,数据格式。Easyui中datagrid控件要求的数据格式为:total:2,rows:id:1,name:张三,id:2,name:李四需要对应此数据结构创建一个pojo类此类包含两个属性:1、 total2、 rows(每页的数据) List中的每个元素是TbItem对象。应该把此pojo放到moli-common中。public class EasyUIDataGridResult implements Serializableprivate long total;private List rows;public long getTotal() retu
15、rn total;public void setTotal(long total) this.total = total;public List getRows() return rows;public void setRows(List rows) this.rows = rows;分页处理:可以使用mybatis的分页插件PageHelper。4.2.2 PageHelperSqlMapConfig.xml,Mapper.xml 分页插件的原理1、 实现Interceptor接口2、 把实现类配置到SqlMapConfig.xml中3、 从拦截器中取出要执行的sql语句,添加
16、分页语句(limit)4、 把修改后的sql语句重新设置回去。5、 执行查询SqlSessionFactory工厂对象,生成SqlSessionSqlSession。提供很多用户方法。Executor对象,执行sql语句Sql语句封装成MappedStatement数据库 使用方法第一步:把分页插件的jar包添加到工程中(哪个工程?)。第二步:在SqlMapConfig.xml中配置插件(什么位置?)。 第三步:在执行查询之前设置分页。PageHelper.startPage(1, 10);两个参数:第一个:page 第二个是rows第四步:从返回结果中得到分页信息创建一个Pag
17、eInfo对象,需要返回的结果集作为参数。就可以从PageInfo对象取分页信息。/PageInfo包含了非常全面的分页属性assertEquals(1, page.getPageNum();assertEquals(10, page.getPageSize();assertEquals(1, page.getStartRow();assertEquals(10, page.getEndRow();assertEquals(183, page.getTotal();assertEquals(19, page.getPages();assertEquals(1, page.getFirstPag
18、e();assertEquals(8, page.getLastPage();assertEquals(true, page.isFirstPage();assertEquals(false, page.isLastPage();assertEquals(false, page.isHasPreviousPage();assertEquals(true, page.isHasNextPage(); 测试分页插件public class PageHelperTest Testpublic void testPageHelper() throws Exception /初始化spri
19、ng容器ApplicationContext applicationContext = new ClassPathXmlApplicationContext(classpath:spring/applicationContext-*.xml);/从容器中获得mapper的代理对象TbItemMapper itemMapper = applicationContext.getBean(TbItemMapper.class);/分页设置PageHelper.startPage(1, 30);/执行查询TbItemExample example = new TbItemExample();List
20、list = itemMapper.selectByExample(example);/取分页信息PageInfo pageInfo = new PageInfo(list);System.out.println(总记录数: + pageInfo.getTotal();System.out.println(总页数: + pageInfo.getPages();System.out.println(list.size();4.2.3 Dao层可以使用逆向工程生成的代码4.2.4 Service层业务逻辑:接收page、rows两个参数,设置分页信息,执行查询得到查询结果。从查询结果中取total、商品列表,创建EasyUIDataGridResult对象,返回。参数:page、rows返回值:EasyUIDataGridResult/* * 查询商品列表 * Title: getItemList * Description: * param page * param rows * return * see com.moli.service.ItemService#getItemList(int, int) */Overridepublic EasyUIDataGridResult getItemList(int page, int rows) /分页处理Pag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业义捐活动策划方案(3篇)
- 六一活动策划方案-教研(3篇)
- 冶金运营施工方案(3篇)
- 医院医院营销方案(3篇)
- 参赛阅读活动策划方案(3篇)
- 员工亲友营销方案(3篇)
- 围堰填筑施工方案(3篇)
- 地面塌陷施工方案(3篇)
- 外场舞蹈活动方案策划(3篇)
- 夯土室外施工方案(3篇)
- 皮肤科常见疾病康复
- GB/T 4925-2008渔网合成纤维网片强力与断裂伸长率试验方法
- GB/T 39363-2020金银花空气源热泵干燥通用技术要求
- 复工复产安全检查表
- 第三章表面活性剂的功能与应用
- 心理学主要理论流派课件讲义
- 延1024井马五层酸化压裂设计
- 采矿学I第四章-矿石的损失和贫化课件
- 部编版六年级下册道德与法治全册优秀课件
- 中国经典广告案例评析之公益广告课件
- EPC合同条件(银皮书)-1999
评论
0/150
提交评论