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

系列文章:
1、环境搭建及测试- - -附免费视频教程
专栏14篇,参看:https://www.jianshu.com/nb/38421432
GitHub地址:https://github.com/tyronczt/imooc-o2o
线上演示地址:http://o2o.tyronblog.com:8088/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
SSM到Spring Boot从零开发校园商铺平台---7、商品模块_第1张图片

3.商品列表展示

效果展示:

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

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

你可能感兴趣的:(Java笔记,SSM到Spring,Boot从零开发校园商铺平台)