SSM到Spring Boot从零开发校园商铺平台---7、商品模块
in with 0 comment

SSM到Spring Boot从零开发校园商铺平台---7、商品模块

in with 0 comment

系列文章: 1、环境搭建及测试- - -附免费视频教程
专栏14篇,参看:http://tyronblog.com/tags/school-o2o
GitHub地址:https://github.com/tyronczt/imooc-o2o
线上演示地址:http://o2o.tyronblog.com:8090/o2o/front/index
商品模块主要分三个小模块:

  1. 商品添加
  2. 商品修改
  3. 商品列表展示

开发的思路还是实体类(Entity层)-->数据访问层(Dao层)-->SQL实现(xml文件)-->Dao层测试 -->业务层(Service层)--> Service层测试 --> 控制层(Controller层)--> 前端页面(HTML)--> 页面逻辑(js)--> 功能测试

1.商品添加

效果展示: 商品新增 该功能主要的实现方法是:ProductManagementController.java 中的addProduct()方法,具体实现逻辑在方法注释中写的比较详细,就不赘述了。 之前在店铺注册的时候已经实现过照片上传功能,这里又实现了一次,为了下次能更快梳理思路,加深印象,故在此将照片上传的过程记录如下: 〇上传采用google开源工具Thumbnailator实现 ①html页面:

<input type="file" id="product-img">
表单中需加上:
enctype="multipart/form-data"

②js获取传入图片信息:

var productImg = $('#product-img')[0].files[0];

③配置文件上传解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<property name="defaultEncoding" value="utf-8"></property>
	<property name="maxUploadSize" value="20971520"></property><!-- 最大上传文件大小 -->
	<property name="maxInMemorySize" value="20971520"></property>
</bean>

④获取图片文件流

MultipartHttpServletRequest multipartRequest = null;
MultipartFile productImg = null;
MultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
	multipartRequest = (MultipartHttpServletRequest) request;
	productImg = (MultipartFile) multipartRequest.getFile("productImg");
}
if (productImg == null) {
	modelMap.put("success", false);
	modelMap.put("errMsg", "上传图片不能为空");
	return modelMap;
}

⑤上传图片

Thumbnails.of(thumbnail.getInputStream()).size(200, 200)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "watermark.jpg")), 0.5f)
.outputQuality(0.8f).toFile(dest);

〇依赖

<dependency>
	<groupId>net.coobird</groupId>
	<artifactId>thumbnailator</artifactId>
	<version>0.4.8</version>
</dependency>
<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.3.2</version>
</dependency>

2.商品修改

效果展示:

商品修改 修改操作逻辑:①获取商品信息:ProductManagementController.java的 getProductById() 方法; ②传入新图,删除原图,实现方法主要在更新商品的方法中实现; ③更新商品信息:ProductManagementController.java的 modifyProduct() 方法。

开发小技巧

ProductManagementController.java类中的新增商品和修改商品中都有对图片进行操作,所以可以将图片操作的方法提取出来作为共有方法,eclipse的快捷键可以帮我们迅速实现:选中代码块 --> 右键 --> Refactor --> Extract Method 在这里插入图片描述

3.商品列表展示

效果展示: 商品管理

列表分页展示的功能主要由ProductManagementController.java的 getProductListByShop() 方法实现。

下篇带上“前端页面”模块开发