day70_淘淘商城项目_03_商品类目选择 + 图片上传 + 图片服务器FastDFS + 富文本编辑器KindEditor + 新增商品_匠心笔记

本文主要是介绍day70_淘淘商城项目_03_商品类目选择 + 图片上传 + 图片服务器FastDFS + 富文本编辑器KindEditor + 新增商品_匠心笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

淘淘商城项目_03

    • 1、商品类目选择
      • 1.1、功能分析
        • 1.1.1、数据库表结构设计
        • 1.1.2、前端页面分析
      • 1.2、服务层工程开发
        • 1.2.1、Dao层
        • 1.2.2、Service层
        • 1.2.3、发布服务
      • 1.3、表现层功能开发
        • 1.3.1、引用服务
        • 1.3.2、Controller
    • 2、新增商品数据库分析
      • 2.1、商品表分析
      • 2.2、商品描述表分析
    • 3、图片上传分析
    • 4、图片服务器
      • 4.1、什么是FastDFS
      • 4.2、FastDFS架构
      • 4.3、文件上传的流程
      • 4.4、文件下载
      • 4.5、最简单的FastDFS架构
    • 5、图片服务器安装方法
    • 6、图片服务器使用
      • 6.1、FastDFS的Java客户端
      • 6.2、使用DastDFS的Java客户端上传图片
        • 6.2.1、上传步骤
        • 6.2.2、测试代码
      • 6.3、使用工具类上传图片
    • 7、实现图片上传功能
      • 7.1、功能分析
        • 7.1.1、前端页面实现
        • 7.1.2、请求分析
        • 7.1.3、加入文件上传的jar包
        • 7.1.4、配置(多媒体)文件上传解析器
      • 7.2、Controller开发
      • 7.3、解决火狐浏览器兼容性的问题
    • 8、富文本编辑器的使用方法
      • 8.1、富文本编辑器介绍
      • 8.2、使用方法
    • 9、新增商品功能实现
      • 9.1、功能分析
      • 9.2、服务层功能开发
        • 9.2.1、Dao层
        • 9.2.2、Service层
        • 9.2.3、发布服务
      • 9.3、表现层功能开发
        • 9.3.1、引用服务
        • 9.3.2、Controller
      • 9.4、作业

  • 课程计划
    • 第三天:
  • 1、商品类目选择
  • 2、图片上传
    • a) 图片服务器FastDFS
    • b) 图片上传功能实现
  • 3、富文本编辑器的使用KindEditor
  • 4、商品添加功能完成

1、商品类目选择

1.1、功能分析

1.1.1、数据库表结构设计


parent_id 表示节点的父节点。
上表的设计可以展示为树形结构展开类目。

1.1.2、前端页面分析

在taotao-manager-web项目中的jsp下的item-add.jsp中:

我们在该文件中使用 【Ctrl + F】 进行搜索,没有找到事件绑定的样式class(selectItemCat),那我们在Eclipse使用【文件搜索】功能,步骤:Search --> File…,如下:

我们找到了class绑定事件元素处理的js文件common.js,如下:

我们发现:在item-add.jsp中我们并没有引用common.js,但由于在首页index.jsp中我们已经引入了,所以item-add.jsp作为首页index.jsp一个片段,所以在item-add.jsp中我们同样可以使用common.js。
展示商品分类列表,使用EasyUI的tree控件展示。如下:

详解如下:

初始化tree请求的url:/item/cat/list
参数:id  父节点的id值。
初始化tree时只需要把第一级节点展示,子节点异步加载展示。返回值:json格式数据[{    "id": 1,    "text": "Node 1",    "state": "closed"
},{    "id": 2,    "text": "Node 2",    "state": "closed"   
}] 
state:如果节点下有子节点则state的值为"closed",如果节点下没有子节点则state的值为"open"。

所以我们需要创建一个pojo来描述tree的节点信息,包含三个属性id、text、state。
放到taotao-common工程中。由于是服务端响应回来的pojo数据,所以需要实现序列化接口。
EasyUITreeNode.java

package com.taotao.common.pojo;import java.io.Serializable;/*** 类目查询时的返回的数据类* @author	chenmingjun* @date	2018年11月12日下午5:01:23* @version 1.0*/
public class EasyUITreeNode implements Serializable {private static final long serialVersionUID = 1L;private Long id;private String text;private String state;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getText() {return text;}public void setText(String text) {this.text = text;}public String getState() {return state;}public void setState(String state) {this.state = state;}@Overridepublic String toString() {return "EasyUITreeNode [id=" + id + ", text=" + text + ", state=" + state + "]";}
}

查询的表:
  tb_item_cat
查询的列:
  id、name、is_parent
查询条件:
  parentId

1.2、服务层工程开发

1.2.1、Dao层

  Dao层只需要查询商品分类表tb_item_cat即可,属于单表查询,单表查询我们没有必要自己写Mapper了,使用Mybatis逆向工程生成的Mapper即可。

1.2.2、Service层

参数:
  Long parentId
业务逻辑:
  1、根据parentId查询节点列表。
  2、转换成EasyUITreeNode列表。
  3、返回。
返回值:
  List<EasyUITreeNode>

先写接口,在taotao-manager-interface工程中:

package com.taotao.service;import java.util.List;import com.taotao.common.pojo.EasyUITreeNode;/*** 商品类目管理接口* @author	chenmingjun* @date	2018年11月12日下午8:15:24* @version 1.0*/
public interface ItemCatService {/*** 根据商品类目的父节点id,查询该节点的子类目列表* @param parentId* @return*/List<EasyUITreeNode> getItemCatList(Long parentId);
}

再写实现类,在taotao-manager-service工程中:

/*** 商品类目管理Service* @author	chenmingjun* @date	2018年11月12日下午8:15:58* @version 1.0*/
@Service
public class ItemCatServiceImpl implements ItemCatService {@Autowiredprivate TbItemCatMapper itemCatMapper;@Overridepublic List<EasyUITreeNode> getItemCatList(Long parentId) {TbItemCatExample example = new TbItemCatExample();// 设置查询条件Criteria criteria = example.createCriteria();criteria.andParentIdEqualTo(parentId);List<TbItemCat> list = itemCatMapper.selectByExample(example);// 将list转换成EasyUITreeNode列表List<EasyUITreeNode> resultList = new ArrayList<>();for (TbItemCat tbItemCat : list) {EasyUITreeNode node = new EasyUITreeNode();node.setId(tbItemCat.getId());node.setText(tbItemCat.getName());// 如果节点下有子节点则state的值为"closed",如果节点下没有子节点则state的值为"open"node.setState(tbItemCat.getIsParent() ? "closed" : "open");// 将节点添加到list集合(列表)resultList.add(node);}return resultList;}
}
1.2.3、发布服务

在taotao-manager-service中的applicationContext-service.xml中发布服务:

1.3、表现层功能开发

1.3.1、引用服务

在taotao-manager-web中的springmvc.xml中引用服务:

这篇关于day70_淘淘商城项目_03_商品类目选择 + 图片上传 + 图片服务器FastDFS + 富文本编辑器KindEditor + 新增商品_匠心笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100830

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识