# 快递代取系统
## 版权
用的是一个大佬放在github上的前端代码,但是我现在找不到是哪个了
如果侵权的话,请联系我:)
## 介绍
- 前后端分离
- 前端用jquery的ajax发送请求
- 后端使用springboot
提供json的api给前端
## 软件架构
软件架构说明
## 安装教程
1. 先在mysql中跑一下table.sql文件,创建表
2. 改一下src/main/resources/mybatis-config.xml(改一下db,还有密码)
3. 用idea打开直接运行Application即可
## 使用说明
1. 随便点就行
2. xxxx
3. xxxx
## 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
# 开发日志
## 自定义Message码
### 错误码
-1 登录:用户名不存在
-2 登录:密码错误
-3 注册:用户名已存在
-4 检查session:用户还未登录
### 正确码
1 登录成功
2 注册成功
3 用户已经登录
## 自定义订单状态
0:未接单 unpick
1:已接单 pick
2:已送达 arrived
3:已完成 completed
4:已取消 canceled
5:已中止 terminated
## 后端接收ajax数据
2021/01/08
今天遇到了一个很坑爹的问题
jquery的ajax传给后端的数据springboot居然接收不到
### servlet接收ajax
因为springboot本质上是基于servlet的,所以看一下servlet接收ajax是什么样子的
用ajax的前端代码如下:
正常用表单提交的方法如下:
![image-20210108232120541](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108232120541.png)
后端代码如下:
![image-20210108231944550](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108231944550.png)
用ajax发数据,结果如下:(好像第二行最前面少了一个问号?不知道表单提交的有没有)
![image-20210108232255322](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108232255322.png)
正常表单提交,结果如下:
![image-20210108232403810](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108232403810.png)
第二行为null是因为流只能读取一次
修改以下后端代码,看看用表单提交的话InputStream是什么样的
![image-20210108232529868](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108232529868.png)
输出!
![image-20210108232612889](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210108232612889.png)
fuck!我一开始还以为是最前面少了个问号的关系,结果正常用表单提交最前面也是没有问号的
这个问题我没找到解决方法(似乎只能自己解析InputStream了?)
ajax那边不管data的数据有没有加上JSON.stringify()都不行
**山穷水尽疑无路 ,柳暗花明又一村**
我又回头搜了一下springboot和ajax,有了重大发现
### springboot接收ajax
![image-20210109000921900](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210109000921900.png)
==注意画红框的这个类,这个类是需要可序列化的!!!==
![image-20210109001010687](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210109001010687.png)
==前端传json时,需要加上JSON.Stringify==
## ajax获取后端返回的数据
又碰到一个坑。。。
按理说ajax这么写就行了,我还特意加了async:false来取消异步
![image-20210109102502329](C:\Users\wyz\Desktop\云计算\期末大作业\DeliveryTakingSystem\image-20210109102502329.png)
结果前端执行的是error函数。。。
后来发现:
**前端设置了希望后端发来的类型(dataType:"application/json")**
**但是后端没有设置返回类型**
把dataType删了就行
## mybatis一级缓存的禁用
因为mybatis有一级缓存,作同一个查询时,会复用上次的结果
自己通过cmd操作mysql(修改表中的数据),不会使缓存失效
只有通过mybatis修改数据,才会使一级缓存失效
所以怎么禁用一级缓存呢?
==配置文件==
```yaml
mybatis:
configuration:
cache-enabled: false #禁用二级缓存
local-cache-scope: session #一级缓存指定为session级别
local-cache-scope: statement #一级缓存指定为statement级别, 相当于禁用一级缓存
```
==手动清除==
```java
session.clearCache();
```