DEMO:【SpringBoot】实战①——注册功能实现
SpringBoot学习视频
最近看的小匠SpringBoot的教学视频,看了20多章的网课,跟着老师跑,感觉比较迷,希望知识变现
小匠视频链接: https://www.bilibili.com/video/av65117012.
实现过程
- 项目结构
- 创建新的maven项目,注入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--整合mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--json @responseBody/@requestBody-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 创建入口,控制器,HTML页面;
- 入口
@SpringBootApplication
public class HomeworkApplication {
public static void main(String[] args) {
SpringApplication.run(HomeworkApplication.class, args);
}
}
- 控制器
@Controller
public class RegiestController {
//实现自动装配
@Autowired
private UserMapper userMapper;
//进入注册界面
@GetMapping("/")
public String regiset(){
return "regiest";
}
//点击注册按钮后,获取input中的两个name,作为参数回传到regiest_show(),进行检测
@PostMapping("/regiest")
public String regiest_show(
@RequestParam("username") String username,
@RequestParam("password") String password,
Model model
){
//把前端的username和password写入user对象,方便后续操作
User user = new User();
user.setUsername(username);
user.setPassword(password);
//使用findByUsername()方法,判断userCheck是否为空(在数据库中是否存在)
User userCheck = userMapper.findByUsername(username);
if(userCheck == null){
//不存在,执行插入操作,注册成功,返回ok_regiest页面
userMapper.add(user);
model.addAttribute("username",username);
model.addAttribute("password",password);
return "ok_regiest";
}else{
//存在,返回check_regiest页面
model.addAttribute("username",username);
return "check_regiest";
}
}
//check_regiest页面中实现<a>的跳转
@GetMapping("/regiest")
public String CheckRegiest(){
return "regiest";
}
}
- HTML页面
- 注册页面:regiest
<form action="/regiest" method="post"> 用户名:<input name="username" id="username" type="text"/><br> 密 码:<input name="password" id="" type="password"> <br> <input type="submit" value="注册"> </form>
- 注册成功页面
你注册的用户名为:<span th:text="${username}"></span><br> 你注册的密码为:<span th:text="${password}"></span>
- 注册失败页面
<p>你注册的ID:<span th:text="${username}"></span>已经被注册过了,请重新注册</p> <a href="/regiest">回注册界面吧</a>
- Mapper层,用于封装数据库语句
@Mapper
public interface UserMapper {
//注册成功,插入一条数据
@Insert("insert into user(username,password) values (#{username},#{password})")
void add(User user);
//检验注册的username是否已经存在数据库中,传进username进行与数据库比较
@Select("select * from user where username = #{username}")
User findByUsername(@Param("username") String username);
}
- Model层,作为数据库数据的映射;
public class User {
private Long id;
private String username;
private String Password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
- application.properties 文件
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/user_spring?serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=1234
7.数据库的实现
- 使用mysql
CREATE TABLE `user` (
`id` bigint(32) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
8.完事!
效果展示
- 注册功能
2. 注册成功
- 注册失败