springboot服务端
汇总:本系列的汇总
下面我们来分别讲一下这些端的配置。
Mysql准备
不需要在mysql中建表,springboot可以自己创建。我们有一个数据库连接,并且记住下面的参数就行了。
Springboot 配置
-
新建Springboot工程,使用maven构建项目(也可以改用gradle构建,但是我看一般非android项目好像都是用maven)。
-
选择如下配置,等待项目构建完成。其中后几个都是和数据库相关的。使用Jdbc和MySQL Driver可以帮助我们访问MySQL数据库,JPA使得我们可以使用Java持久层API(可以帮助我们自动建表、查询等,基本上不用自己写查询语句)。
-
构建完成后如图所示,其中springboot自动生成的HttptestApplication为程序入口。
注意
:请不要动这个包的位置,否则springboot可能找不到程序入口。
-
设置打包成jar。(常规操作,每个教程都是这样的…
-
配置Mysql。
找到resources->application.properties:
加入下面内容:spring.datasource.url= jdbc:mysql://localhost:3306/httptest?serverTimezone=UTC spring.datasource.username= root spring.datasource.password= ******(你的密码) spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver spring.datasource.tomcat.max-idle= 10 spring.datasource.tomcat.max-wait= 1000 spring.datasource.hikari.minimum-idle= 5 spring.datasource.tomcat.initial-size= 5
注意:
其中的用户名、密码、端口等要与最开头Mysql连接的设置一致。这样Springboot就能够连接到该数据库了。
Springboot 代码编写
-
在项目结构中加入下面四个包。其中Controller、Service、Repository对应Javaweb三层架构(Controller调用Service,Service调用Repository);Entity对应数据库中的表格。
-
在配置文件中加入下述语句,方便spring根据@Entity注解在数据库中创建表格。
spring.jpa.generate-ddl=true
-
在Entity中加入User类,并对其使用
@Entity
注解,以便自动生成表格。使用@Table
注解,可以指定生成的表格名称。
下面是我写的User的代码。其中的get和set方法最好用IDEA中系统生成的,否则可能出错。Tips
:写完成员之后,选中所有成员,Alt+insert,在出现的小浮窗中选择Setter and Getter,ctrl+A ,可以一键生成所有成员的get和set函数噢。
光标停留在哪里,创建的get和set函数就会从哪里插入。@Entity @Table(name = "user") public class User { @Id String userId; String userName; String password; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
注意用@Id标识主键:
-
在Repository中新加入UserRepository接口,使其继承JpaRepository,注意泛型。Jpa会帮我们自动实现一些诸如findAll()这样的简单方法,所以我们不需要在UserRepository中加入这类方法,但是按照用户id和密码查找这样的方法需要我们自己实现。不过不用担心,因为IDEA中会有很贴心的代码提示:
最后UserRepository中的代码:public interface UserRepository extends JpaRepository<User,String> { User findByUserIdAndPassword(String userId,String password); }
注意
:记得在泛型中指定User(需操作的类),和其主键的类型!!!不然会错的错的错的… -
在Service中加入UserService。
@Service标明其为Service层组件,@Transational保证其事务性。由于UserService会用到UserRepository,故添加userRepository成员,并使用@Autowired注解对其自动注入。@Service @Transactional public class UserService { @Autowired UserRepository userRepository; }
在其中加入register方法,处理注册。userId重复则注册失败,否则存储用户信息,并返回注册成功。
public boolean register(String userId, String password){ List<User> users = userRepository.findAll(); for (User user : users) { //注意不要用 ==, 用equals if(user.getUserId().equals(userId)) //如果userId重复,则返回注册失败 return false; } //不重复则对其进行注册 User user = new User(); user.setUserId(userId); user.setPassword(password); userRepository.save(user); return true; }
加入loginCheck方法,返回值为User对象。这里主要是为了后面演示对象在网络中的传输才把返回值设置为对象。
public User loginCheck(String userId,String password){ return userRepository.findByUserIdAndPassword(userId,password); }
Service层的代码就编写完毕了。
-
在Controller中加入UserController。UserController主要调用UserService、接收客户端的网络请求即可。其中比较重要的部分解释:
@Controller: 标明这是一个Controller层组件
@ResponseBody:不会返回网页,返回的是java对象对应的JSON串。
@Autowired:自动注入
@RequestMapping:标注客户端向服务器发起请求时需要的url,这里以register为例,当客户端需要服务端处理注册事件的时候,需要设置访问的url为http://IP地址:端口号/regist。
@RequestParam:客户端请求时需要的参数名。@Controller @ResponseBody public class UserController { @Autowired UserService userService; @RequestMapping(value = "/register",method = RequestMethod.POST) public boolean register(@RequestParam("userId") String userId, @RequestParam("password")String password) { return userService.register(userId,password); } @PostMapping(value = "/login") public User loginCheck(@RequestParam("userId") String userId, @RequestParam("password")String password) { return userService.loginCheck(userId, password); } }
Tips
:- @PostMapping = @RequrstMapping + method = RequestMethod.POST
- 可以在整个类上添加@RequestMapping注解,假如在UserController上面添加了一个@RequestMapping("/test"),那么注册时需要访问的地址就是http://ip地址:端口号/test/register。
- @Controller + @ResponseBody = @RestController。
运行没有错误,服务器就准备完成了。
参考博客:
1. 配置Mysql可能会出现的错误,为什么我中间使用的驱动不是com.mysql.jdbc.Driver的原因
2. 小西芹的spring-boot简单demo系列
(mysql的依赖可以不在建立项目时加入。后续自己加入的版本及配置文件可以看这里~)