javaEE商城第五天笔记_第1页
javaEE商城第五天笔记_第2页
javaEE商城第五天笔记_第3页
javaEE商城第五天笔记_第4页
javaEE商城第五天笔记_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、魔力商城第五天1内容回顾1、前台系统的搭建。门户系统。首页。a)使用maven搭建b)数据的获得都是通过调用service来实现c)首页内容如何动态展示2、Cms系统的实现a)内容管理系统b)内容分类,分类应该是一个树形结构。内容分类下有内容列表。c)内容服务系统的搭建。d)内容的分类管理,EasyUI的异步tree的使用。e)内容列表的实现。EasyUIDataGrid、图片上传、富文本编辑器、分页插件。2课程计划1、首页大广告位的动态展示。a)内容服务系统发布服务b)门户系统调用服务,获得内容数据。c)动态展示大广告位2、业务逻辑中添加缓存a)搭建redis服务、集群b)Redis服务的使

2、用Jedis客户端。i. 单机版的使用方法ii. 集群版的使用方法c)添加缓存3、缓存同步3首页大广告位的动态展示3.1功能分析1/轮播图是用户请求商城首页/index的时候需要拿到图片信息思路:我们在返回index.jsp的时候,通过 Model将图片数据塞入jsp页面2/要展示轮播图需要一个json数据,数据格式:【|血讥”話u旷:-http:打;1x1*0. i:BE1 Lmauw?1 巧皿3/03贮0120303043603腔Lt曲弓.iuF. ”hu#t: 2*0_.3*:6TO,*srcv:性11口:/打1匕 IwtMx “亚 i皿庆s吃015/03/03/20L503D3043E

3、Q302W阳垢.kJ, idtU: 5S0,百血亡了:hliLE:/id也t如F&tlFMJFMkOhTt35CR. blniL?Ei白扯狂 IDLSUE1-heiithtB- 40气 511:口 打曲住 law口 wfig肌詔R/.抚叭ght:现ar:5砒:ETOjJT:tuZo.血5刖显2015;3和:3血|15030:3435:3:1凹50850(. 2;:ladthB: 550,kr応; dl切:打辽.d 口则胚亡订刖如皿皿皿九上如1?叩哉乍】HL5UE:JitLchtB: 24J0*srcBA: mDVFwNe:.仏讹亘6 “”讯真訂2015闭3/03找DrSO303D4345Tei

4、l 10862. iw:AteishC: 240.Mr:p其中可以从数据库得到的数据是:pic/pic2/url/title pic对应src Pic2 对应 srcB Url 对应 hrefTitle 对应 alt其他属性:height/width等完全由配置文件决定3.2实现1/先为页面所需要的json数据创建一个pojo 可以放到 moli-common工程中。publicclass Ad1Node implements Serializable privateintheight ;privateintwidht ;privateintheightB ;privateintwidthB

5、;privateStringsrc ; /图片1privateStringsrcB ; /图片2privateStringhref ; /广告的链接privateStringalt ;/图片提示信息3.3 Dao 层从tb_content表中取数据,根据内容分类id查询内容列表。可以使用逆向工程生成的代码。3.4 Service 层参数:内容分类 id long categoryld返回值:List业务逻辑:根据内容分类id查询内容列表,需要把内容列表转换成Ad1Node列表。返回。根据容类d查内容嘿vpTitle: getContentListvpDescription:param cate

6、goryIdreturnseecom.moli.content.service.ContentService#getContentList(long)*/Overridepublic List getContentList(long categoryId ) /查询容表TbContentExample example = new TbContentExample();/设置查询件Criteria criteria = example .createCriteria();criteria .andCategoryldEqualTo( categoryId );/执行查询List list = c

7、ontentMapper .selectByExample( example );/转换Ad1Node歹表List resultList = new ArrayList();for 仃bContenttbContent : list ) Ad1Node node = new Ad1Node();node .setAlt(node .setSrc(node .setSrcB(node .setHref(tbContenttbContenttbContenttbContent.getSubTitle(); getPic();getPic2();getUrlO);resultList .add( n

8、ode);return resultList3.4.1发布服务t!_声明需要暴蕃的眼劳接口3.5 Controller 层3.5.1引用服务property name= prefix*1 value=,/kS -TAfF/j sp/- f property nane= suffix 01谨=+/!- ftifidubba 1-引用内容腹努3.5.2代码实现从属性文件中取内容的分类id,根据分类id调用服务,查询内容列表。设置内容中图片的宽、高。需要把 pojo列表转换成json数据。使用 Mode或者ModelAndView 把json数据传 递给jsp。配置属性文件: indes. jsp

9、3 Q ContentServi.7 CsntenlStrvic.I 2AD1_CATEGORY_ID-893 AD12wiDTH=6704AD12wiDTH_B=5505AD12hEIGHT=2406AD1ZHEIGHT_B=240Controllerpublicclass IndexController Value( $AD1_CATEGORY_ID) private Long AD1_CATEGORYD Value($AD1_WIDTH)private IntegerAD1_WIDTHValue($AD1_WIDTH_B)private IntegerAD1_WIDTH_BValue(

10、$AD1_HEIGHT)private IntegerAD1_HEIGHTValue($AD1_HEIGHT_B)private IntegerAD1_HEIGHT_BAutowiredprivateConten tServiceconten tServiceRequestMapping (/index)public String showlndex(Modelmodel) /调用Service 查询内列表List list = contentService.getContentList(AD1_CATEGORYDfor (Ad1Node ad1Node :list ) ad1Node.set

11、Height(AD1_HEIGHT);ad1Node .setHeightB(AD1_HEIGHT_B;ad1Node.setWidth(AD1_WIDTH;ad1Node .setWidthB(AD1_WIDTH_B;/ 转换json 数据String json = JsonUtils.objectToJson ( list );/传递给spmodel .addAttribute( ad1 , json );retur n in dex;4添加缓存可以使用redis实现缓存。1、Redis 是一个 nosql ( mongodb, hbas 的 kv 数据库;2、Redis是一个内存数据库3

12、、Redis提供多种数据结构来存储用户的数据比如:string, list,hash, set,sortedset等结构Key:zha ngsa nValue: name:zha ngsa n,age:16,sex:female,pho neey:zha ngsa nValue:n amezhangsanage16SexfemalePhone138383834.1 Redis的安装及部署4.1.1 Redis 的安装需要安装gcc环境安装步骤:第一步:把redis的源码包上传到linux系统。宕称严|慚改日期|塞型|大小.ruby和片話让接口2D15/1S/7 1加文

13、件夹redi e-3.0. 0. tar.纹2015/5/14 11:56 gz Archive1.327 KBredis-desktcpTiaiiagei0.T. 9.809. exe 2015/G/1C 22:44 应用程序1电344 KB第二步:解压缩源码包。rootlocalhost # tar -zxf redis-3.0.0.tar.gz第三步:make第四步:安装redsi。make in stall PREFIX=/usr/local/redis第五步:启动redis1、前端启动模式:a) 进入至U /usr/local/redis/bin 目录下b) 执行./redis-se

14、rver2、后端启动:a) 需要把源码包下的redis.conf文件复制到bin目录下。b) 修改redis.conf文件#茅當#护# By default Redis does no# Note that Redis will wri daemoirizE yesc)启动redis服务,指定配置文件rootlocalhost bin # ./redis-server redis.c onfRedis所有的数据都存放到内存中。Redis的持久化:两种持久化方案:1、Rdb:快照形式(redis默认持久化方案)2、Aof :把对数据库修改的命令保存文件中。4.1.2 redis的基本使用启动服务

15、器:bin/redis-server redis.c onf用命令行客户端连接服务器:bi n/redis-cliString数据结构的基本操作:1、插入一条数据set zhangsanzhangsandedata2、删除一条数据del zha ngsa n3、修改一条数据set zhangsanzhangsandedata24、查询一条数据get zhangsan4.1.3 Jedis连接单机版添加jedis的jar包。dependency vgroupld redis.clients jedis 使用方法:第一步:创建一个 Jedis对象。需要指定单机版redis服务的ip及

16、端口号。第二步:调用jedis对象的方法操作redis数据库。第三步:打印结果第四步:关闭连接。Testpublicvoid testJedis() throws Exception /第步仓建个Jedis对I需要指定机版edis服务巾及端号Jedis jedis = new Jedis( 53, 6379);/第二步调edis 对的方操作edis数库jedis .set( mytest , 100);String result = jedis .get( mytest);/艇步扌印果System. out .println( result );/第步关连。jedis

17、.close();使用连接池连接 Redis步骤:第一步:创建JedisPool对象,需要指定ip及端口号。 第二步:从JedisPool对象获得连接Jedis对象。第三步:使用jedis对象的方法操作redis 第四步:打印结果第五步:关闭Jedis对象。第六步:程序关闭时关闭JedisPool对象。Testpublicvoid testJedisPool() throws Exception / 第步:仓建JedisPool X象需要指p及端号JedisPool jedisPool = new JedisPool( 53, 6379);/ 第二步从ed

18、isPool 对获连接edis对。Jedis jedis = jedisPool .getResource();/第三步使Jedis对象方法作edisjedis .set( test2 , hello jedis );String result = jedis .get( test2);/ 第步:扌印果System. out .println( result );/ 第步关闭ledis对象jedis .close();/ 第步程序闭J时闭edisPool对。jedisPool .close();连接redis集群需要使用JedisCluster对象创建连接,对象自带连接池。实现步

19、骤: 1 创建一个 JedisCluster对象,构造方法,需要指定一个 Set对象,set中包含 HostAndPort 对象。每个 HostAndPort就是一个节点的地址。2、直接使用 JedisCluster操作redis数据库。3、打印结果4、 程序结束时关闭JedisClusterTestpublicvoid testJedisCluster()throws Exception /节点地列表Set nodes =new HashSet();nodes .add(new HostAndPort(53,7001);nodes .add(new HostAndPo

20、rt(53,7002);nodes .add(new HostAndPort(53,7003);nodes .add(new HostAndPort(53,7004);nodes .add(new HostAndPort(53,7005);nodes .add(new HostAndPort(53,7006);/ 1 、创建个JedisCluster对象构造法需指定一SetX象set 中含HostAndPort 对。每HostAndPort 就是个点的地。JedisClust

21、er jedisCluster = new JedisCluster(nodes);/ 2 、直接用ledisCluster操作edis数库jedisCluster .set( jedisCluster-test, 123456);String result = jedisCluster .get( jedisCluster-test);/ 3、打印果System. out .println( result );/ 4 、程序束关闭edisClusterjedisCluster .close();4.1.4 Jedis集成 spring先创建一个redis操作接口,接口中定义一些常用方法。 分

22、别对应redis的单机版和集群创建 不同的实现类。在spring的配置文件中分别配置单机版和集群版的实现类,根据实现需求来调整。接口定义publicinterfaceJedisClient String set(Stringkey, Stringvalue );String get(Stringkey);String hset(Stringkey, Stringitem , Stringvalue );String hget(Stringkey, Stringitem );Long incr(Stringkey);Long decr(Stringkey);Long expire(

23、String key, int second );Long ttl(Stringkey);4.142单机版实现类publicclassPoolJedisClientimplements JedisClientAutowiredprivate JedisPool jedisPoolOverridepublic String set(Stringkey, Stringvalue ) Jedis jedis = jedisPool .getResource();String string =jedis .set( key, value );jedis .close(); return stringO

24、verridepublic String get(Stringkey) Jedis jedis = jedisPool .getResource();String string =jedis .get( key);jedis .close(); return stringOverridepublic Long hset(Stringkey , Stringitem , Stringvalue ) Jedis jedis = jedisPool .getResource();Long result = jedis .hset( key , item , value );jedis .close(

25、);return result ;Overridepublic String hget(Stringkey , Stringitem ) Jedis jedis = jedisPool .getResource();String result = jedis .hget( key, item );jedis .close();return resultOverridepublic Long incr(Stringkey) Jedis jedis = jedisPool .getResource();Long result = jedis .incr( key);jedis .close();r

26、eturn result ;Overridepublic Long decr(String key) Jedis jedis = jedisPool .getResource();Long result = jedis .decr( key);jedis .close();return result ;Overridepublic Long expire(Stringkey , int second ) Jedis jedis = jedisPool .getResource();Long result = jedis .expire( key, second ); jedis .close(

27、);return result ;Overridepublic Long ttl(Stri ngkey) Jedisjedis =jedisPool .getResource();Longresult =jedis .ttl( key);jedis.close();returnresult ;4.143 在 spring 容器中配置 JedisPool4.2业务逻辑中添加缓存指导方针:添加缓存不能影响正常的业务逻辑。1在查询数据库之前,先查询缓存,如果缓存中有数据直接返回。2、如果缓存中没有需要查询数据库,在返回数据之前把数据放到缓存中3、返回结果可以把内容数据放到hash类型中存储。Hash

28、的key需要自己定义,可以放到属性文件中。/*Hash中每个子项目的key就是cid (内容分类id)根据内容类d查内容嘿vpTitle: getContentListvpDescription:param categoryIdreturnseecom.moli.content.service.ContentService#getContentList(long)*/Overridepublic List getContentList(long categoryId ) /添查缓的务逻茸try String json = jedisClient .hget( REDIS_CONTENT_HAS

29、H_KEYcategoryld + );/判断返结是空if (StringUtils. isNotBlank (json ) /把son转换List对象List list = JsonUtils. jsonToList (json , AdINode. class );return list ; catch (Exception e) e .printStackTrace();/缓中有查询据I/查询容表TbContentExample example = new TbContentExample();/设置查询件Criteria criteria = example .createCriteria();criteria .andCategoryldEqualTo( categoryId );/执行查询List l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论