04 项目tips.txt
UP 返回
1. web项目有时候可能会出现访问.do为404的情况,一定要看看dubbo配置中扫描的包是否是对应的。本次出现的问题就是这个原因,导致总是无法add.do成功 2021.10.06
<dubbo:annotation package="com.pinyougou.manager.controller" />
2. 在做商家的登录时,需要调用sellerService中查询数据库。此时无法通过dubbo的reference直接注入,需要从配置文件中使用dubbo提供的获取远程接口的方式,参以下文件:
UserDetailsServiceImpl
spring-security.xml 位置:D:\ProjectCodes\eclipse_pyg\pinyougou-parent\pinyougou-shop-web\src\main\resources\spring\spring-security.xml
3. 项目涉及的知识点: 项目主地址:D:\ProjectCodes\eclipse_pyg\pinyougou-parent
maven的多模块管理
dubbo服务器的搭建和配置文件 生产者参文件D:\ProjectCodes\eclipse_pyg\pinyougou-parent\pinyougou-sellergoods-service\src\main\resources\spring\applicationContext-service.xml
消费者参文件D:\ProjectCodes\eclipse_pyg\pinyougou-parent\pinyougou-manager-web\src\main\resources\spring\springmvc.xml
dubbo服务提供者消费者的注解使用
。。。待补充
4. 富文本编辑器 对应视频地址 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\阶段一\5商品管理1\4商品录入-商品介绍
常用的富文本编辑器:
KindEditor http://kindeditor.net/
UEditor http://ueditor.baidu.com/website/
CKEditor http://ckeditor.com/
本项目使用的是第一个,地址 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\前端相关\kindeditor ,演示用例可以在examples/index.html中找到
应用的页面在/pinyougou-shop-web/src/main/webapp/admin/goods_edit.html 及对应的controller.js中
5. FastDFS 高性能的文件服务器集群提供文件上传、下载等服务
FastDFS分为
Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。
Storage:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。
客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载
文件上传流程:
Storage定时向tracker上传状态信息
客户端Client首先向tracker上传连接请求,tracker自查询可用的storage,返回对应的ip和端口给client。client向对应的storage上传文件,storage生成file_id,写入磁盘,返回file_id给client,client存储文件信息
文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。例如:
group1/M00/02/44/dssdfgsgsdgsgsdgfdhhgfh.sh
group1 组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。
M00 虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。
02/44 数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
文件下载流程:
client向tracker下载连接请求,tracker自查询可用的storage,返回给client。client发送file_id向对应storage,storage查找文件返回给client
安装:安装非常繁琐,直接使用镜像文件 F:\2019年4月黑马程序员教程\05-黑马JavaEE49期全套\17品优购电商系统开发\资源\Linux镜像\fastDFS 解压到 D:\EnvironmentDevs\品优购虚拟机服务器
双击Redis_02.vmx挂在到VM中,同时将虚拟机的网络适配器设置为仅主机
启动的时候选择 我已移动该虚拟机 登录用户密码:root itcast 地址为192.168.25.133
入门:创建maven工程,勾上create simple,打包方式为jar ,工程地址 D:\ProjectCodes\eclipse_pyg\fastDFSdemo
pom中加入依赖,对应的包可以在配套仓库中找到,手动复制到maven仓库下即可
<dependency>
<groupId>org.csource.fastdfs</groupId>
<artifactId>fastdfs</artifactId>
<version>1.2</version>
</dependency>
复制配置文件 fdfs_client.conf 到资源目录下,里面唯一需要关心的就是tracker_server的地址。创建测试类,代码:
public static void main(String[] args) throws Exception {
// 1、加载配置文件
ClientGlobal.init("D:\\ProjectCodes\\eclipse_pyg\\fastDFSdemo\\src\\main\\resources\\fdfs_client.conf");
// 2、创建一个 TrackerClient 管理者客户端
TrackerClient trackerClient = new TrackerClient();
// 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。
TrackerServer trackerServer = trackerClient.getConnection();
// 4、创建一个 StorageServer 的引用,值为 null
StorageServer storageServer = null;
// 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
// 6、使用 StorageClient 对象上传图片。
//参数意义:文件路径 扩展名 指定文件参数 。其中扩展名不带"."
String[] strings = storageClient.upload_file("H:\\资源整合\\套图\\【COS】【九曲Jean】\\碧蓝航线 泳装\\(1).jpg", "jpg",
null);
// 7、返回数组。包含组名和图片的路径。
for (String string : strings) {
System.out.println(string);
}
}
运行打印出两个值,一个是组,一个是文件路径。两个合在一起可以直接访问存的文件(服务器上已经运行了一个ngix服务器):http://192.168.25.133/group1/M00/00/00/wKgZhWGSYaCAUE1LAGBAdFwYVNI410.jpg
6. ng-options和ng-model需要同时给定,不然会出现下拉框无法展示显示的值
注意js中序列化对象的方法是JSON.stringify(object) 不要少写了字母i
目前发现angular的页面引入服务层和控制层时,controller只能引一个,其他的controller必须是其继承的。剩下的引入都是service,不然无法启动
7. 事务配置:/pinyougou-sellergoods-service/src/main/resources/spring/applicationContext-tx.xml
在需要的service类上直接加注解就可以了,参GoodsService
8. 异常信息 :java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page
mybatis的pagehelper在设置 PageHelper.startPage(pageNum, pageSize)后到使用 Page<TbItemCat> page= (Page<TbItemCat>)itemCatMapper.selectByExample(example);
这两段代码之前都不能都再进行任何查询,不然就会造成类型转化异常。参 https://blog.csdn.net/qq_38217237/article/details/84892619 ,代码见:
/pinyougou-sellergoods-service/src/main/java/com/pinyougou/sellergoods/service/impl/TypeTemplateServiceImpl.java 中的findPage调用saveToRedis
DOWN 返回