博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
乐鲜生活后台管理系统--项目总结
阅读量:6878 次
发布时间:2019-06-26

本文共 5662 字,大约阅读时间需要 18 分钟。

1. 三级联动

  1. 使用JSON处理数据实现

    1. 前端–使用JQ类库中Ajax异步提交的方式,配合JSON实现
  
2.  对应controller中
/** 1. Ajax请求得到子类商品信息 post方式,返回类型为json 2. @return  @ResponseBody注解告诉SpringMVC该方法返回的不是一个视图 3. method = RequestMethod.POST 此方法只允许以POST形式访问 4. produces = "application/json;charset=UTF-8" 以JSON形式返回,字符型为UTF-8 不加会是乱码 */    @ResponseBody    @RequestMapping(value = "/findcitysbyparentid.do", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")    public List
findCitysByParentId(Citys citys) { //执行Service层的方法 List
cityslist = this.storeManageService.searchCitysByParentId(citys); return cityslist;// 在这里配置文件和jackson工具就自动转化了,直接返回对象即可 }
这里需要注意需要倒6个Json.jar包

2. 使用野路子–拆字符串的方式实现三级联动

  1. 通过拆分字符串的形式来实现三级联动数据–同样使用的JQ中Ajax的$.get
    
2. 对应controller多了合并字符串操作
@RequestMapping(value = "/secondInfo.do", produces = "text/plain;charset=UTF-8")@ResponseBody // 告诉springMVC返回的不是一个视图public String selectCommodityInfo(String info) {    int parentId = Integer.parseInt(info);    List
catList = this.commodityInfoService.selectOtherNameByParentId(parentId); String secondName = ""; for (Category category : catList) { secondName = secondName + "#" + category.getId() + ":" + category.getCategoryname(); } secondName = secondName.substring(1, secondName.length()); return secondName;}

总结:两种写法都可以实现,JSON高端了很多,这应该也是单位中三级联动的常用写法,拆分字符串体会下也好。

2. JSP界面显示上传图片

概述:在当前JSP界面显示上传图片,并不提交到后台而是在网页上显示上传的图片。

—使用javascript实现

//使用通过拼接ID名字来获取不同ID达到使用不同对象function setImagePreview(avalue) {        var docObj = document.getElementById("doc" + avalue);        //这里可以把docObj.files看成数组-->存在-->true        //这里可以把docObj.files[0]看成数组中第一个元素-->存在-->true        //两者都为真是--才执行        if (docObj.files && docObj.files[0]) {             if(avalue == 1){                var imgObjPreview = document.getElementById("preview" + avalue);                //火狐下,直接设img属性                imgObjPreview.style.display = 'block';                imgObjPreview.style.width = '230px';                imgObjPreview.style.height = '280px';                //imgObjPreview.src = docObj.files[0].getAsDataURL();                //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式                imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);            }else if (avalue == 2) {                for(var i=0;i

对应的file标签

商品主图:
//${commodity.pictureurl}为项目中的原图片

3. 使用JQ添加删除HTML元素

概述:使用JQ中的append添加属性,并且标签中带有删除此标签的button

1.JQ部分

注意:java长使用hidden来记录被删除掉的数据,来实现form表单提交与后台交互

2.页面部分

规格信息:规格组:
规格名:

${key.specGroup}:${key.specName}

4. SpringMVC中文件的上传下载

概述:做到多文件的上传下载,以及表单提交数据更新,只使用一次表单提交

1.JSP界面

商品配图:
<%int i = 10;%>
<%i++;%>

2.对应controller

/** *@RequestParam MultipartFile[] myfiles  *myfiles 为JSP界面中对应file标签的name ---> 是一个数组 *@RequestParam 根据name捕获 */@RequestMapping("/updateCommodityInfo.do")public String upload(@RequestParam MultipartFile[] myfiles, HttpServletRequest request) throws IOException {    /**     * 因为请求被enctype="multipart/form-data"变为二进制,需要使用springMVC中的     * MultipartHttpServletRequest 类对request进行强转,     * 这里使用multiRequest 获得的表单提交的数据都是multiRequest在请求头中以二进制进行转码获得的数据     */     MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;    //多张图片存在配图--在这里捕获配图名存到assiFile 这个集合中    List
assiFile = new ArrayList
(); //获取主图文件名 String pictureurl = multiRequest.getParameter("pictureurl"); //去掉fakepath获取主图文件名 pictureurl = pictureurl.substring(pictureurl.lastIndexOf("\\") + 1, pictureurl.length()); //获取服务器保存图片的路径 String urlPath = request.getSession().getServletContext().getRealPath("commodity") + File.separator; for (MultipartFile file : myfiles) { // 此处MultipartFile[]表明是多文件,如果是单文件MultipartFile就行了 if (file.isEmpty()) { System.out.println("文件未上传!"); } else { // 得到上传的文件名 String fileName = file.getOriginalFilename(); if (fileName.indexOf(pictureurl) == -1) { assiFile.add(fileName); } // 服务器路径+图片名 图片的保存地址和文件名 String path = urlPath + fileName; // 查看文件上传路径,方便查找,把文件上传至path的路径 File localFile = new File(path); //写入 file.transferTo(localFile); } }}

注意:在request中获得文件路径为伪路径,获取真实路径需要在JS中操作,在controller中获得的是C://fakepath/xxxxx.jpg

5. 关于form表单提交乱码问题

概述:在web.xml中配置拦截器filter过滤器,一次性解决,不需要使用String–byte[]单句转换

characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
单句转换方式
//先将字符转成最小字符格式iso-8859-1----再转成支持中文的utf-8info = new String(info.getBytes("iso-8859-1"), "utf-8");

注意:使用配置filter过滤器必须以POST形式提交,GET还需要手动转码,配置是注意将filter配置文件放在上面。

转载于:https://www.cnblogs.com/uzies/p/9649505.html

你可能感兴趣的文章
Surface、SurfaceView、SurfaceHolder和SurfaceHolder.Callback之间的联系
查看>>
什么是Data Store and Data Collector?
查看>>
我的友情链接
查看>>
php培训11.30
查看>>
Effective Java读后感
查看>>
windows下两个无线网卡 一个内网 一个外网
查看>>
tcp nat 负载均衡
查看>>
起点,游戏开发的梦想与技能点
查看>>
MPLS 流量工程的配置与各大属性调整详解
查看>>
107个常用Javascript语句
查看>>
我的友情链接
查看>>
Dataram_RAMDisk_v4_0_0安装和配置
查看>>
在window XP下使用vsphere client 5.5 访问vCenter 或者 ESXi5.5 连接错误
查看>>
35 个超棒的 Coming Soon 页面设计案例
查看>>
C语言第四天(位运算)
查看>>
硬RAID可以为NVMe SSD数据可靠性保驾护航吗?
查看>>
iPad 2 移植Siri 新手完全教程 适用所有越狱设备
查看>>
编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?
查看>>
Pro Android学习笔记(十一):了解Intent(中)
查看>>
小程序混合框架HERA1.1.0发布
查看>>