分布式商城项目-后台开发3-商品管理功能实现(二)

富文本与文件服务器整合

在上一节中,我们已经完成了对商品的基础信息管理,但是在实际的使用中,通常需要对产品进行详细的描述,这种描述一般是比较详细的,相当于一篇文章的样子,这个时候我们就不能只是使用简单的文本框对描述信息进行管理了,这个项目中呢,我们采用富文本编辑器的方式来完成商品描述的管理,本次我们将会使用到的是——ckeditor
官网可以下载得到,也可以在下面下载并解压:

在这里插入图片描述
将上面的 ckeditor 文件夹中的所有内容复制到项目中
在这里插入图片描述
在增加商品页面中应用 ckeditor

//引用 ckeditor.js 文件
<script type="text/javascript" src="${pageContext.request.contextPath}/ckeditor/ckeditor.js">/script>
//html 代码
<div class="mws-form-row">
	<label>商品描述</label>
	<div class="mws-form-item large">
		<textarea rows="8" cols="40" class="ckeditor" name="pdes"
			id="pdes"></textarea>
	</div>
</div>
//在 jsp 页面的最后添加以下 js 代码。 注意参数与 textarea 控件的 name 属性要一致
<script type="text/javascript">
	CKEDITOR.replace('pdes');
</script>

这样就能在页面中使用 ckeditor 了。 效果如下:
在这里插入图片描述
但是这时候还不能进行文件上传。

与文件服务器的集成使用

上面能够使用 ckeditor 的基本功能了, 但是不能进行文件上传。 由于项目中使用了
FastDFS 分布式文件系统。 所以在使用 ckeditor 上传文件的时候也需要将文件上传到 FastDFS文件系统中。
新版本的ckeditor上传文件需要使用json字符串格式的返回,所以这里首先在pom文件中加入fastjson的依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.47</version>
</dependency>

这一为了方便管理,我们把文件服务器地址定义在Config类中

package cn.yuechenc.common;

public class Config {
	private static String fileserver="http://47.100.224.4/";

	public static String getFileserver() {
		return fileserver;
	}

	public static void setFileserver(String fileserver) {
		Config.fileserver = fileserver;
	}
}

1、 编写在 ckeditor 中上传文件 controller

package cn.yuechenc.ycshop.manager.controller;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSON;

import cn.yuechenc.common.Config;
import cn.yuechenc.fastdfs.client.FastDFSClient;

@Controller
@RequestMapping("/ckeditor/upload")
public class UploadImgController {
	
	@RequestMapping("/img")
	public void uploadimg(@RequestParam("upload") MultipartFile file, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		// 上传文件
		FastDFSClient dfs = new FastDFSClient();
		String filename = file.getOriginalFilename();
		String extName = filename.substring(filename.lastIndexOf(".") + 1);
		String url = dfs.uploadFile(file.getBytes(), extName);
		// 构建文件的完整路径。 包含: 文件服务器地址+文件位置
		url = Config.getFileserver() + url;
		System.out.println(url);
		Map<String, Object> map=new HashMap<>();
		map.put("fileName", url);
		map.put("uploaded", 1);
		map.put("url", url);
		String msg = JSON.toJSONString(map);
		System.out.println(msg);
		// 需要向客户端响应如下消息
		PrintWriter out = response.getWriter();
		out.println(msg);
		out.flush();
		out.close();
	}
}

在 ckeditor 的 config.js 文件中增加代码
config.filebrowserImageUploadUrl ='/ckeditor/upload/img' ;

设置上传文件的资源路径。 指向上面所编写的 controller
这样就可以在 ckeditor 中上传图片到 FastDFS 分布式文件系统中了。

效果展示

在这里插入图片描述
在这里插入图片描述
此时可以看到,图片已经上传到了我们的文件服务器:地址:
http://47.100.224.4/group1/M00/00/00/rBOr_1zuQdKAZqDlAAMttdONFsI173.png

下面就只需要修改富文本编辑器所在的

<div class="mws-form-row">
	<label>商品描述</label>
	<div class="mws-form-item large">
			<textarea rows="12" cols="40" class="ckeditor" name="detail"
				id="pdes">${product.detail}</textarea>
	</div>
</div>

name为实体类属性名,内容为product.detail,此时。无论添加还是修改,都可以使用富文本了。

淘淘商城是一个综合性的B2C平台,类似与京东、天猫商城,其打造的是商业模式为“社区+电子商务”, 用户不只是在社区中有自己的圈子,还可以将电商加入到社区中,整个电商网站实现功能非常之多,采用分布式的系统架构设计,包括后台管理、前台系统、购物车系统、订单系统、单点登录系统、搜索系统、会员系统等。 1、 该项目采用了分布式系统的架构,目前,在大型网站中使用非常广泛。 2、 各个系统之间采用接口调用的方式进行交互,即:面向服务的开发,每个团队、系统,分工明确,各司其职。 3、 后台系统使用了目前主流的框架技术,Spring、SpringMVC、Mybatis实现开发更有效率,网站性能更高。 4、 后台系统中的前端UI采用了Jquery EasyUI完成,界面更加的美观。 5、 系统后台使用多级菜单布局,并使用KindEditor框架作为富文本编辑器。 6、 前台系统中采用CSS+DIV技术开发界面,使用Jquery完成和动态效果和后台服务的数据交互。 7、 项目引入了内容关系系统的概念,实现了对网站大部分内容的管理维护,使开发更加的高效。 8、 使用单点登录系统(SSO)来实现集群状态下的用户数据的维护。 9、 使用高性能的KV数据库Redis完成数据的存储以及缓存,提高数网站整体的性能。 10、 使用企业级开源系统Solr完成商品以及订单数据的搜索。 11、 在数据库存储方面使用MySQL的主从复制架构,使用Spring的AOP实现数据的读写分离,以保证在“读多写少”的场景下的高性能。 12、 使用高性能的企业级消息系统RabbitMQ,完了系统间的通信,使得系统间的耦合度大大降低。 13、 部署方面使用LVS + keepalived + Nginx实现了双机主备、双主热备,实现了一个高可用的系统架构。 14、 项目开发采用团队式的开发,统一使用Maven私服构建项目,使用统一的SVN服务进行代码的管理。 【课程内容】 项目功能实现分析 RESTful Web Service、SVN 项目讲解、环境搭建 后台系统功能实现 前台系统搭建、实现、内容管理系统实现 Redis入门 单点登录系统 订单系统、Quartz入门 Solr入门以及搜索系统实现 MQ学习、改造搜索、商品详情缓存逻辑 实现购物车、读写分离 dubbo入门、优化单点登录系统 分布式部署架构讲解以及实施 分组实战 + 项目总结以及就业指导 拔高--Redis集群、Tomcat优化、MySQL优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值