**
个人博客:[http://wj2y.cn/]
**
1. 编写实体类
用户登录注册这里做的比较简单,只做了用户名和密码,所以实体类User.java中只需要username、password两个变量。该类中只需要快速生成有参和无参、get和set方法、最后加一个toString方法。
public class User {
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
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;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
2. 编写UserMapper接口
在mapper下创建一个 UserMapper 接口,该接口主要写查询、增加方法。
import com.wangjun.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@Mapper
@Component
public interface UserMapper {
//通过账号密码来查询信息
List<User> queryUserByUp(@RequestParam("username") String username, @RequestParam("password") String password);
//查询所有用户
List<User> queryUserList();
//增加用户
int addUser(@RequestParam("user") User user);
//通过用户名来进行查询
List<User> queryUserByUserName(@RequestParam("username") String username);
}
3. 编写 UserMapper .xml
在resources下创建mybatis文件夹再创建一个mapper文件夹,在mapper文件夹下创建UserMapper .xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wangjun.mapper.UserMapper">
<select id="queryUserByUp" resultType="User">
select * from user where username = #{username} AND password = #{password}
</select>
<select id="queryUserList" resultType="User">
select * from user
</select>
<select id="queryUserByUserName" resultType="User">
select * from user where username = #{username}
</select>
<insert id="addUser" parameterType="User">
insert into user (username,password) values (#{username},#{password})
</insert>
</mapper>
PS: namespace必须是UserMapper的完整路径。
、标签中的id必须和接口中方法名保持一致。
4. 编写Controller类
4.1 编写登录控制类(LoginController)
逻辑:利用从前端获取过来的用户名和密码进行查询,如果查询到数据,就成功登录。 反之,登录失败给出提示信息。
PS:没有把包复制在下面代码中,要用的自己直接导入就可以了~
@Controller
public class LoginController {
@Autowired
UserMapper userMapper;
@RequestMapping("/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model, HttpSession session){
//用从前端获取的username、password进行查询
List<User> user1 = userMapper.queryUserByUp(username,password);
if (!user1.isEmpty()){
session.setAttribute("loginUser",username);
return "redirect:/main.html";
}
else {
model.addAttribute("msg","用户名或者密码错误");
return "index";
}
}
}
4.2 编写注册控制类(RegisController)
逻辑:通过前端输入的用户名查询数据库中是否存在,存在则给出提示信息,反之,保存用户名和密码并且直接成功登录到后台。
PS:没有把包复制在下面代码中,要用的自己直接导入就可以了~
@Controller
public class RegisController {
@Autowired
UserMapper userMapper;
@RequestMapping("/regis")
public String regis(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model,HttpSession session){
User user = new User();
List<User> user1 = userMapper.queryUserByUserName(username);
if (!user1.isEmpty()){
model.addAttribute("msg","用户名存在");
return "regis";
} else {
//保存输入的用户名和密码
user.setUsername(username);
user.setPassword(password);
userMapper.addUser(user);
session.setAttribute("loginUser",username);
return "redirect:/main.html";
}
}
}
5. 前端页面
前端页面很简单,只需要确保用户名和密码输入框中的name和变量名一致,这里就不贴代码了~
6. application.properties
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC&useUnicode=true$characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#整合mybatis
mybatis.type-aliases-package=com.wangjun.pojo
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
7. 导入的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
8. 总结
这个顺序不是写代码的顺序哈,只是我在写博客时没有注意到顺序的问题,写项目那肯定是先导入依赖的哈,结果我却放在了最后,不过依赖应该都是小问题!
其实登录注册功能不难,代码也比较简单,好好看看理解一下秒懂的~