新巴巴运动网 项目第四天
-
今天内容
-
介绍FastDFS 分布式文件系统 原理
-
为什么要使用FastDFS 保存到Tomcat 缺点 保存到FastDFS 优点
-
FastDFS搭建(由运维工程师) 网管
-
FastDFS的Java接口(保存图片到FastDFS上去)
-
修改页面 提交
-
全选
-
删除(批量)
-
商品表四张
-
逆向工程(Dao接口、Mapper、POJO) 增强版
-
测试工程(逆向工程使用)
-
商品管理—列表查询(带条件+分页)
-
-
介绍FastDFS 原理
FastDFS分布式文件系统
原理图
-
优点:
FastDFS相比于Tomcat :不存在单点故障问题、支持容灾。
FastDFS相比于Tomcat:集群 (安全) 保存图片过多时 扩容 分配合理 。
FastDFS相比于Tomcat: 具有备份功能、不怕磁盘损坏。
-
FastDFS安装
公司有运维工程师安装 (中型公司及以上)
自行安装(小公司)如果没有运维、以下是安装文档。
192.168.200.128
-
FastDFS位置
-
配置Nat
启动
用户名/密码
root/123456
-
测试是否启动成功
http://192.168.200.128/group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
-
FastDFS的Java接口
FastDFSUtils 工具类
上传图片到分布式文件系统
-
分布式文件系统的配置文件如下
fdfs_client.conf
# connect timeout in seconds # default value is 30s connect_timeout=30 # network timeout in seconds # default value is 30s network_timeout=60 # the base path to store log files base_path=/home/fastdfs # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address tracker_server=192.168.200.128:22122 #tracker_server=192.168.101.4:22122 #standard log level as syslog, case insensitive, value list: ### emerg for emergency ### alert ### crit for critical ### error ### warn for warning ### notice ### info ### debug log_level=info # if use connection pool # default value is false # since V4.05 use_connection_pool = false # connections whose the idle time exceeds this time will be closed # unit: second # default value is 3600 # since V4.05 connection_pool_max_idle_time = 3600 # if load FastDFS parameters from tracker server # since V4.05 # default value is false load_fdfs_parameters_from_tracker=false # if use storage ID instead of IP address # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # default value is false # since V4.05 use_storage_id = false # specify storage ids filename, can use relative or absolute path # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # since V4.05 storage_ids_filename = storage_ids.conf #HTTP settings http.tracker_server_port=80 #use "#include" directive to include HTTP other settiongs ##include http.conf |
-
上传图片到FastDFS的Java接口
/** * 上传图片到FastDFS * @author lx * */ public class FastDFSUtils {
//上传 public static String uploadPic(byte[] pic,String name,long size) throws Exception{ //全局设置Tracker的IP ClassPathResource resource = new ClassPathResource("fdfs_client.conf"); ClientGlobal.init(resource.getClassLoader().getResource("fdfs_client.conf").getPath()); //连接Tracker TrackerClient trackerClient = new TrackerClient(); //获取Stoage的地址 TrackerServer trackerServer = trackerClient.getConnection(); //连接Stoage的服务器 StorageServer storageServer = null; StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer); //上传图片到Stoage String ext = FilenameUtils.getExtension(name); NameValuePair[] meta_list = new NameValuePair[3]; meta_list[0] = new NameValuePair("filename",name); meta_list[1] = new NameValuePair("fileext",ext); meta_list[2] = new NameValuePair("filesize",String.valueOf(size)); // group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg String path = storageClient1.upload_file1(pic, ext, meta_list); //接收返回值(图片的路径) return path;
} } |
-
保存图片到FastDFS分布式文件系统
-
创建UploadServiceImpl
-
Dubbo配置
服务提供方
服务消费方
-
创建UploadController
-
修改页面(提交表单)
-
对字段
由于<img src属性不能在提交表单时、将数据提交到Controller层、所以添加一行隐藏域
来保存图片的路径、目地是提交表单时把此路径也提交到Controller中品牌对象中
第一步:
第二步:
-
Dao
-
Mapper
-
Service
修改品牌
入参:Brand对象
-
BrandController
入参:Brand对象
跳转视图:重定向
-
全选
-
删除(批量)
-
Function
-
Dao
-
Mapper
-
Service
-
Controller
接收的 Long【】 ids
跳转视图:重定向
-
删除带条件
页面按钮
Function
Controller
-
导入七张表及数据
商品表四张 商品表 品牌表 颜色表 SKu表(库存表)
用户表一张
订单表二张
广告表二张
-
商品表
四张
-
逆向工程
OOM
Out of memery
物理级分页
-
测试逆向工程
-
通过ID查询
-
-
通过条件复杂查询
-
商品管理之列表查询
-
点击商品管理进入商品列表页面 默认条件为下架状态
-
点击查询按钮刷新商品列表页面 条件为商品名称、品牌、上下架状态
-
点击分页页号进入商品列表页面 条件为商品名称、品牌、上下架状态、页号
-
商品管理按钮的路径设置
在frame/product_left.jsp中
/product/list.do
-
页面条件
-
页面结果集
-
页面分页
-
ProductService 查询分页对象
入参: 商品名称 、品牌ID 、是否上下架 当前页
返回值:分页对象
-
Dubbo配置
略
-
ProductController 查询分页对象
入参: 商品名称 、品牌、是否上下架 当前页
返回值:分页对象
跳转视图 product/list