一、简介
可以说站在Spring Boot的肩膀上,相对于我之前用最古老的servlet,完成一个简单的后台服务实在变得太容易太容易。但是对于一个完全不了解的人可以参考目录中的学习方法。对于实现远程浇花的功能,只需要处理APP 和 CC3200 发送过来的 get 、post 请求即可。
二、说明
①.Spring Boot 只是一个框架,通过联网帮助我们完成了各种配置,简化开发。
②.具体详细的步骤可以在学习SpringBoot的过程中不断实践。
注意:IDEA一定要用专业版,社区版的是不能构建SpringBoot项目的,如下图社区版根本没有红色圈中的那项:
三、数据库
当然后台要负责与数据库进行交互,花卉的信息也全都存放在数据库上。后台的代码就是要对数据库进行增、删、改、查等操作。我用的是MySQL。直接装,或者用Docker。
四、后台服务代码
- Cotroller部分:这里即包含了APP的后台服务,也包含了CC3200的后台服务,后面不再赘述。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
public class FlowerManagerController {
JdbcTemplate jdbcTemplate;
/*-------------------处理 APP 与后台的交互-----------------*/
/**
* 处理 APP 发送过来的 GET 请求 -> 查询花卉的所有信息返回给 APP
*
* @param flower_name
* @return
*/
//用于将数据写出去
"/appQuery") //这个方法用来处理query请求 (
public List<Map<String, Object>> appGetResponse( String flower_name) {
//字符串拼接的方法来实现sql语句中嵌套变量
String querySql = "select * From flowers where name =" + "'" + flower_name + "'";
List<Map<String, Object>> list = jdbcTemplate.queryForList(querySql);
System.out.println(list);
return list;
}
/**
* 处理 APP POST 给服务器的数据 ->更新数据库中的浇水量 bulk
*/
//用于接收APP post 过来的数据
"/appPost") //这个方法用来处理App的post请求 (
public void appPostResponse(@RequestBody String flower_info) throws JSONException {
/*--更改花卉的浇水量--*/
String flower_name;
int bulk;
//1.解析post过来的数据
JSONObject jsonObject = new JSONObject(flower_info);
mFlower_name = jsonObject.getString("name");
mBulk = jsonObject.getInt("bulk");
//2.根据花卉名称和浇水量更新DB的数据
String updateSql = "update flowers set bulk =" + "'" + bulk + "'" + " WHERE name =" + "'" + flower_name + "'";
jdbcTemplate.update(updateSql);
}
/*-----------------------处理 CC3200 与后台的交互-------------------*/
/**
* 处理CC3200 发送过来的 GET 请求 ->查询花卉的浇水量返回给CC3200
*/
//用于将数据写出去
"/cc3200Query") //这个方法用来处理query请求 (
public Map<String, Object> cc3200GetResponse(@RequestParam int monitor_id) {
//字符串拼接的方法来实现sql语句中嵌套变量
String querySql = "select * From flowers where monitor_id =" + "'" + monitor_id + "'";
//这样返回的是一个map 而不是 list 的形式更方便CC3200那边去解析
Map<String, Object> map =jdbcTemplate.queryForMap(querySql);
System.out.println(map);
return map;
}
/**
* 处理CC3200 POST 给服务器的数据 ->更新花卉的状态信息
*/
//用于接收CC3200 post 过来的数据
"/cc3200Post") //这个方法用来处理CC3200Post请求 (
public void CC3200PostResponse(@RequestBody String flower_info) throws JSONException {
/*--更新花卉的状态信息--*/
int monitorID;
float co2;
float temperature;
float humidity;
//1.解析post过来的数据
JSONObject jsonObject = new JSONObject(flower_info);
monitorID = jsonObject.getInt("monitorID");
co2 = (float) jsonObject.getDouble("co2");
temperature = (float) jsonObject.getDouble("temperature");
humidity = (float) jsonObject.getDouble("humidity");
//2.根据花卉监测系统ID更新数据库的数据
String updateSql =
"update flowers set co2 =" + "'" + co2 + "'" +","+
"temperature ="+"'" + temperature + "'" +","+
"humidity ="+"'" + humidity + "'" +
" WHERE monitor_id ="+ "'" + monitorID + "'";
jdbcTemplate.update(updateSql);
}
} - application.yaml 部分:这里根据实际的情况配置即可
1
2
3
4
5
6spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://公网IP或域名:3306/数据库名
driver-class-name: com.mysql.cj.jdbc.Driver
五、学习路线(仅供参考)
1. pringBoot 我是通过学习观看 尚硅谷 的Springboot视频学习的,下载地址可以搜哦,有人上传到网盘了,或者哔哩哔哩上也有,而IDEA的使用关注他的微信公众号就可以免费下载,个人感觉还是不错的。反正免费嘛。
2. 在Ubuntu 上使用 Docker 可以参考下面的链接(安装MySQL也是很方便的)。
https://cloud.tencent.com/developer/article/1350956
...
...
00:00
00:00
本文为作者原创文章,未经作者允许不得转载。