还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
〃依照parentld查询分类列表TbltemCatExample example=new TbItemCatExample;〃设置查询条件Criteria criteria=example.createCriteria;criteria.andParentldEqualToparentld;〃执行查询ListTbItemCat list=itemCatMapper.selectByExampleexample;ListEasyUITreeNode resultList=newArrayList;〃转换成EasylllTreeNode列表for TbltemCattbltemCat:list{〃创建EasylllTreeNode对象EasylllTreeNode node=new EasyUITreeNode;node,setIdtbItemCat.getld.intValue;node.setTexttbItemCat.getName;〃当节点下有子节点“closed,假如没有“open”node.setstatetbltemCat.getlsParentclosed:open;//添加到列表resultList.addnode;return resultList;}公布服务L2L3!--配置包扫描器,扫描带@06「丫^X6注解的类--.4context:component-scan base-package=nco/n.taotao.service/L5!--发布服务L6!--提供方应用信息,用于计算依赖关系.7dubbo:application subLun-manager-service/S!-使用现西恁建广播注册中心暴露服务地址一》L9!--dubbo:registry address=Mmurticast://
224.
5.
6.7:12347--0dubbo:registry protocol=zookeeper address=
192.
168.
25.167:2181,71!--用dubbo协议在2088端口暴露服务--2dubbo:protocol nan\e=dubbo,port=20880/3!一声明需要暴露的服务接口—4dubbo:service interface=Mco/w.taotao.service.ItemService ref=itemServiceImpL/5]dubbo:service interface=co/n,加CatSeri/ice rQf=itemCatServiceLnpl”/678/beans层
4.4Controller引用月艮务
4.
4.1乙XIIIW•ICOV/MIVCOJLVJC1LJL5I—/VVJU一山V,/LOO/IIIQppXI/COO/1,21mvc:resourceslocation=/MEB-INF/js/mapping=M/js/**,722!--配置艮务--aubbgfi23dubbo:application narf\e=taotao-manager-webn/24!--dubbo:registry address=multicast://
224.
5.
6.7:1234/--dubbo:registry protocol=zookeeper address=
192.
168.
25.167:2181n/2526〈dubbo:reference interface=c勿・taotao.surt/ice.Ite加Serutce id=tte勿Service”/|27dubbo:reference interface=Mco/n.taotao.service.ItemCatServiceid=itemCatServicen/28/beans分析
4.
4.2请求url/item/cat/list参数(实际是)long parentldid业务逻辑接收请求参数调用查询商品分类列表,返回数据需要使用Service json注解@ResponseBody返回数据ListEasyUITreeNode代码实现
4.
4.3@Controller@RequestMapping/item/cat publicclass ItemCatController{@Autowiredprivate ItemCatServiceitemCatService;@RequestMapping/list@ResponseBodypublic ListEasyUITreeNodegetItemCatList0RequestParamvalue=iddefaultValue=0Long parentld{ListEasyUITreeNode list=itemCatService.getltemCatListparentId;return list;图片上传5图片上传分析
5.1传统方法
5.
1.1tomcat图片上传webappZL一—彷冏因叶问题分析、磁盘容量有限,当磁盘保留满之后没就没有方法了1能够经过运维伎俩处理分布式环境下
5.
1.2Tomcat1webapp、上传图1反向代理服务器Nginx上传图、查看图片
2、上传到图2图片服务器图片上传功效6功效分析
6.15859」init:functiondata{60//初始化图片上传组件61this,initPicUploaddata;62//初始化选择类目组件63this.initltemCatdata;64365//初始化图片上传组件66-initPicUpload:functiondata{5//初始化图片卜传绢件6initPicUpload functiondata{凸$.picFileUpload.eachfunctione7van_ele=$e;8_ele,siblingsdiv.pics・remove;_ele.after1\90div class=pics\1ulx/ul\2/div;3//回显图片4ifdatadata.pics{5var imes=data.Dics.SDlitf:6一,J\__________________-________________•/£-XT〃给“上传图片按钮哪定click事件$e.clickfunction{var form=」this,parentsUirtilform,parentform;//打开图片上传窗口KindEditor.editorTT.kingEditorParams.loadPluginmultiimage function{var editor=this;editor.plugin.multiImageDialog{clickFn:functionurlList{var imgArray=[]KindEditor.eachCurlList,functioni,data{imgArray.pushdata.url;form.find.pics ul.appendlixa href=+data.url+target=_blank ximgsrc};form.find[name=image].valimgArray.join;editor.hideDialog;};};〃给“上传图片按钮哪定click事件$e.clickfunction{van form=$this.parentsllntilformn.parentform;//打开图片上传窗口KindEditor.editorTT.kingEditorParams.loadPluginmultiimage,function{van editor=thts3图片上传的参数:上传的叽参数的名称editor plugin.multiImageDialog clickFn:functionurlList{van imgArray=[];KindEditor.eachurlListfunctioni,data{imgArray.pushdata,url;form.find*.pics ul.appendlixa href=*+data.url+1target=*_l};form.find[name=image].valimgArray.join editor.hideDialog;};・文档KindEditor
4.x2^var TT=TAOTAO={3//编辑器参数相当于file控件的name属性2kingEditorParams:{―5//指定上传文件参定啰:一5|filePostNam」|:^uploadFile,\7//指定上传文件请求的四工3uploadJson:1/pic/upload1,图片上隹KJu「9//上传类型,分别为image、flash、media、file3dir:image111卜-----------------------------文件的类型2//格式化时间formatDateTime:functionval,row{请求url/pic/upload参数MultiPartFile uploadFile响应内容响应数据json参考文档:返回格式JSON//成功时error:0,“uiT:http:〃www.example.com/path/to/file.ext”//失败时error“1,错误信息”message*1:应该创建一作为响应数据格式pojo应该包含三个属性Pojoint errorString urlString message应该放到工程中moli-comm指定工程名称ii.指定注册中心位置iii.指定要引用服务iv.把服务注入到中就能够使用v.Controller、商品列表查询2控件a easyUiDataGrid分页插件b Mybatis添加插件包到工程i.jar在配置文件中配置插件ii.mybatis在查询之前设置分页信息iii.从查询结果中取分页信息使用对象取分页信息iv.Pageinfo课程计划
2、父子容器关系1spring springmvc、后台功效商品添加实现2商品类目选择功效a图片上传bpublic classPictureResult{private interror;private String url;private Stringmessage;public intgetError{return error;public voidsetErrorint error{this.error=error;}public StringgetUrl{return url;public voidsetUrlString url{this.url=url;public StringgetMessage{return message;public voidsetMessageString message{this.message=message;把包添加到工程中1comms-io fileUploadjarL!J JALL*3y,IDII—▲oxjLJdvd/LA.ijEl“»,Maven Dependencies曲jstl-l.
2.jar-C\Users\Administrator\.»研servlet-api_
2.
5.jar-C\Users\Adininist:『jsp-api_
2.
0.jar-C\Users\Administrato:commons-fileupload_
1.
3.
1.jar-ar-扇C:\Users\Administr扇spring-context_
4.
1.
3.RELEASE,jar-C\U『spring-aop-
4.
1.
3.RELEASE,j ar-CWsers在中添加:springmvc.xml!--定义文件上传解析器一〉bean id=muLtipartResoLvercla ss=org.springframe^or^.tveb.muLtipart.commons.CommonsMuLtipartResoLver!--设定默认编码・・property name=defauLtEncodingvalue=nUTF-8n/property.s-.S-.S-.S-.S-.S-•@IIIH!--设定文件上传最大值5MB,5*1024*1024--property name=maxUpLoadsizevalue=n5242880,,x/property/bean代码实现
6.2请求url/pic/upload请求参数MultiPartFile uploadFile响应内容PictureResult json^t®^ffl@ResponseBody类1Controllerpackage com.dohit.manager.controller;Controllerpublic classPicturecontroller{@Autowiredprivate FilellploadWriterfileUploadWriter;@RequestMapping/pic/upload@ResponseBodypublic PictureResultuploadFileMultipartFile uploadFile{String oldName=uploadFile.getOriginalFilename;String extName=oldName.substringoldName.lastlndexOf,+1;PictureResult pictureResult=new PictureResult;try{Stringurl=filellploadWriter.writeToStoreD:/appdev/workspaceweb/dohit-parent/dohit-manager-web/src/main/webapp/WEB-INF/img/\extName,uploadFile.getBytes;System.out.printInurl;pictureResult.setError0;pictureResult.setUrlurl;return pictureResult;}catch Exceptione{System.out.print In一场”;pictureResult.setErrorl;pictureResult.setMessage服务器忙”;return pictureResult;、图片上传工具类2package com.dohit.manager.util;import java.io.ByteArraylnputStream;import java.io.File;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;import org.apache.commons.io.IOUtils;import org.springframework.stereotype.Component;@Componentpublic classLocalFileUploadWriter implementsFileUploadWriter{@Overridepublic StringwriteToStoreString dest,String extName,byte[]data throwsException{Date date=new DateSystem.currentTimeMillis;SimpleDateFormat sf=new SimpleDateFormatnyyyy-MM-ddH;String dateDir=sf.formatdate;”「String newName=UUID.randomUUID++extName;String path=dest+dateDir;Stringurl=http://localhost:8080/img/,+dateDir+7,+newName;File dirFile=new Filepath;if!dirFile.exists{dirFile.mkdir;FileOutputStream fo=new FileOutputStreampath+n/n+newName;ByteArraylnputStream ba=new ByteArraylnputStreamdata;IOUtils.copyba,fo;lOUtils.closeQuietlyba;TOUtils.closeQuietlyfo;return url;、在中配置文件上传解析器3springmvc.xml—~!--定义文件上传解析器-bean id=HmultipartResolverHclass=nn!-设定默认编码-property name=HdefaultEncoding value=HUTF-8nx/property!-设定文件上传最大值5MB,5*1024*1024-property name=HmaxUploadSizen value=n5242880n/property/bean处理火狐上传不成功问题
6.3原因是因为图片上传插件对浏览器兼容性不好返回数据最好是KindEditor content-type text/html使用@ResponseBody响应json数据content-typeapplication/json处理方法、修改返回结果数据类型,改成类型1String、需要包对象转换成格式字符串2java json使用工具类转换对象JsonUtils java工-ok…日;息com.taotao.臼.•y^i taotao-common[trunk/taotao-common]\由…玛.common Poj日居src/main/java白…用utilsJsonUtils.j ava••…严•src/main/resources••…阴src/test/j ava••…浮•一src/test/resources国JRE SystemLibrary[JavaSE-l.7]王]••屈Maven Dependencies田bin图片服务器搭建i.FastDFS学习ii.Nginx父子容器3spring springmvc容器(父容器)Spring代理对象Mapper对象Service容器(子容器)Springmvc对象Controller容器是父容器Spring(前端控制器)子容器Springmvc子容器能够访问父容器对象,父容器不能够访问子容器对象后台管理系统选择商品类目功效4分析
4.1需要使用控件实现easyUltree异步控件:tree第一次只加载顶层节点,假如此节点有子节点,节点状态应该是“closed,假如没有子节点节点状态是“open”当展开节点时,此时再次发送请求,请求此节点下子节点列表,展示出来treeODA/UJLV266-script type=ntext/javascriptn67van itemAddEditor;68//页面初始化完毕后执行此方法69$function{70//创建富文本编辑器71itemAddEditor=TAOTAO.createEditor#itemAddForm[name=desc];72//初始化类目选搽和图片上传器73TAOTAO.in it{fun:functionnode{74//根据商品的分类id取商品的规格模板,生成规格信息第四天内容75//TAOTAO.changeItemParamnode nitemAddForm;76}};77};78//提交表单79function submitForm{80//有效性蛉证5859init:functiondata{60//初始化图片上传组件61this•initPicUploaddata;62//初始化选择类目组件63this.initItemCatdata;64/-----------------------------------------65//初始化图片上传组件105//初始化选怪类目组件106-initltemCat:functiondata{107$.selectltemCat.eachfunctioni Je{van_ele=$e;108ifdatadata.cid{109_ele.after〈span style=margin-left:10px;+data.cid+,/span;110}else{111ele.afternspan style=margin-left:10px;/span;112}113_ele.unbindclick.clickfunction{114$div.css{padding:5px}.htmlul
115.window{116width:1500,117height:450,118modalitrue,119初始化树形控件url/item/cat/list请求参数id由叠—TG点,’1a「ger多制表不出由eJLKJM灯冢---------------------------------------------------------展开一个节点jtarget,参数表示节点的DOM对象在节点关闭或没有子节点的时候,节点ID的值名为,id的参数科务会发送给服务器请求子节点的数据---------------------------------------------------------折盘所有节点返回第一级节点列表格式数据Json数据格式Json[“id”1,“textNode ln,“state”“closed”},{“id”:2,“textNode2;“state”“closed”},{nidn:3,“text”“Node3”,“state“closed”}应该创建一个描述控件节点,包含三个属性:pojo EasyUITree、Id textstate应该放到工程中moli-commpublic classEasyU工TceeNodeimplements Serializable{private intid;private Stringtext;private Stringstate;public intgetld{return id;public voidsetldint id{this.id=id;public StringgetText{return text;}public voidsetTextString text{this.text=text;public StringgetState{return state;public voidsetStateString state{this.state=state;关联表:tb_item_cat对象1口开始事务图备注▼一筛选-排序口导入通导出id|parent_id namestatus sort_order|is_parent createdupdated10图书音像、电子书刊1112014-10-1518:31552014-10-1518:31:5521电子书刊1112014-10-1518:31552014-10-1518:31:5532电子书1102014-10-1518:31552014-10-1518:31:55►42网络原创1202014-10-1518:31552014-10-1518:31:5552数字杂志1302014-10-1518:31552014-10-1518:31:5562多媒体图书1402014-10-1518:31552014-10-1518:31:5571音像1212014-10-1518:31552014-10-1518:31:55一87音乐1102014-10-1518:31552014-10-1518:31:5597翱视1202014-10-1518:31552014-10-1518:31:5510教育音像1302014-10-1518:31552014-10-1518:31:557—111英文原版1312014-10-1518:31552014-10-1518:31:5512____________IL少儿1102014-10-1518:31552014-10-1518:31:5513商务投资1202014-10-1518:31552014-10-1518:31:5514n英语学习与考试1302014-10-1518:31552014-10-1518:31:5515u小说1402014-10-1518:31552014-10-1518:31:5516ii传记1502014-10-1518:31552014-10-1518:31:5517ii励志1602014-10-1518:31552014-10-1518:31:5518i文艺1412014-10-1518:31552014-10-1518:31:551918小说1102014-10-1518:31552014-10-1518:31:552018文学102014-10-1518:31552014-10-1518:31:5522118青春文学1302014-10-1518:31552014-10-1518:31:55—2218传记1402014-10-1518:31552014-10-1518:31:552318艺术1502014-10-1518:31552014-10-1518:31:55241少儿1512014-10-1518:31552014-10-1518:31:55少儿25241102014-10-1518:31552014-10-1518:31:55层
4.2Dao查询表单表查询,能够使用逆向工程tb_item_cat层
4.3Service业务逻辑依照查询商品分类列表转换成树形控件节点列表,返回parentld参数long parentld返回值树形控件节点列表ListEasyUITreeNode@Servicepublic classItemCatServicelmpl implementsItemCatService{@Autowiredprivate TbltemCatMapperitemCatMapper;/***依照商品分类parent工d查询列表*pTitle:getItemCatList/p*pDescription:/p*@param parentld*@return*@see com.moli.service.ItemCatService#getItemCatListlong*/0Overridepublic ListEasyUITreeNodegetltemCatListlong parentld{。