1. CORS: cross-original resource sharing. 跨域资源共享
(1) http://192.168.200.128:9011/brand
https://192.168.200.128:9011/brand(协议不同, 跨域)
https://192.168.200.129:9011/brand(IP不同, 跨域)
https://192.168.200.128:9012/brand(端口号不同, 跨域)
http://192.168.200.128:9011/goods(路径不同, 同域)
(2) 前后端跨域:
解决: CORS标准(浏览器和服务器同时支持)
头信息: Access-Control-Request-Headers: access-control-allow-origin
(3)controller开启跨域注解 @CrossOrigin2. 商品分类表结构和规格参数模板
(1) 基础接口dao
(2) 表:
规格:specification.
参数:parameter
模板:template
商品分类表: category
品牌: brand
(3) 表关系:
模板 一对多 参数
模板 一对多 规格
模板 一对多 分类
分类 多对多 品牌 (中间关联表 category_brand)3. 通用mapper的自定义方法 : 默认只对单表进行CRUD操作,自定义mapper进行多表操作
4. 需求: 通过 category表 查询 brand表
(1) SELECT * FROM tb_brand WHERE id IN (SELECT brand_id FROM tb_category_rabnd WHERE category_id IN(SELECT id FROM tb_category WHERE name='#{categoryName}'))
(2) 定义 brandMapper extends Mapper<Brand>: @Select(...)
(3) BrandService接口
(4) BrandServiceImpl实现类:
(5) BrandController:
(6) Postman请求携带中文参数会出现乱码 - 浏览器访问即可5. 需求: 根据商品分类category查询规格表spec:
(1) category查询 模板template_id
(2)template_id查询规格表spec
(3) SpecMapper extends Mapper<Spec>: @Select(....)
(4) SpecService接口
(5) SpecServiceImpl实现类: 遍历返回值map<name, options>, 取出值的","存入数组
(6) SpecController: @GetMapping("/category/{categoryName}")6. 分布式文件存储FastDFS(distributed field system)
(1) 海量文件: 图片/文档/报表 -> 分布式文件存储
(2) 文件存储/同步/访问/上传/下载/冗余备份/负载均衡/线性扩容
(3) 流程: storage(存储器)汇报信息 ->tracker(追踪器)获取信息 -> client请求-> tracker(追踪器) -> 返回 storageIP和端口 -> 客户端上传文件storage -> storage生成唯一文件id -> storage保存到磁盘 -> 返回文件路径和文件名给client -> 客户端保存
(4) storage文件ID: 组名/虚拟磁盘路径/二级目录00-ff/文件名
(5) 安装FastDFS到docker环境:
(6) changgou_service_file:
(7) resources/fdfs_client.conf配置:
(8) application.yml配置:
(9) 启动类: @SpringBootApplication @EnableEurekaClient
(10) file/util/FastDFSClient.java : 工具类
FastDFSFile.java : 简单文件实体类
(11) file/controller/FileController: @RestController @PostMapping("/file")
a. 判断文件是否存在: file != null
b. 获取文件完整名称: file.getOriginalFilename()
c. 获取文件扩展名称: filename.substring(filename.lastIndexOf(".")+1)
d. 获取文件内容: file.getBytes()
e. 上传的封装实体类: new FastDFSFile(文件名, 文件内容, 扩展名)
g. 工具类上传, 接收返回参数 : FastDFSClient.upload(fastDFSFile);
h. 封装返回结果: getTrackerUrl()+元素一组名[0]+"/"+元素二路径 [1]版权声明:本文为Oppuser原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。