下面我来为您详细讲解“SSM实现mysql数据库账号密码密文登录功能”的完整攻略。
1. 配置数据库
首先,我们需要在程序中配置 mysql 数据库。在 Spring 中,可以使用 MyBatis
框架来操作数据库,因此我们需要引入 MyBatis
相关依赖。
示例一:
<!-- 在 pom.xml 中引入 MyBatis 相关依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
示例二:在 application.yml
配置文件中配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
2. 创建数据库表
为了验证登录功能,我们需要在数据库中创建一个表来保存用户信息,包括用户名和密码。创建表的 SQL 语句如下:
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
3. 创建实体类
在 Java 程序中,我们需要创建一个实体类来表示用户数据。实体类通常包含数据库表对应的字段,例如 id
、username
以及password
属性,对应于上面 user
表中的列。
在实体类中使用注解来指定数据库表的名称、列名以及数据类型。示例代码如下:
@Data
public class User {
@TableId(type = IdType.AUTO)
private int id;
@TableField("username")
private String username;
@TableField("password")
private String password;
}
4. 创建 Mapper 接口
在 MyBatis 框架中,我们需要创建一个 Mapper 接口来映射用户数据到 Java 对象。在接口中定义 SQL 语句,并通过 MyBatis 的动态 SQL 功能来执行查询,并将结果映射到实体类中。
示例代码如下:
@Mapper
public interface UserMapper {
@Select("SELECT id, username, password FROM user WHERE username=#{username}")
User getUserByUsername(String username);
}
5. 创建 Service 层
在 Service 层中,我们需要定义一个接口来封装具体的业务逻辑,例如用户注册、登录等。在接口中定义一个方法,用于实现用户登录功能。
示例代码如下:
public interface UserService {
User login(String username, String password);
}
接着,在实现类中实现该方法,并通过调用 Mapper 接口来查询用户数据。
示例代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User login(String username, String password) {
User user = userMapper.getUserByUsername(username);
String salt = "MySalt"; // 随机生成一个 salt
String md5Password = Md5Util.md5(password + salt); // 对用户输入的密码进行 md5 加密
if (user == null || !user.getPassword().equals(md5Password)) {
return null;
}
return user;
}
}
在上面的代码中,我们首先通过 Mapper 接口查询到用户信息。接着,我们使用随机生成的 salt 对用户输入的密码进行 md5 加密,并比较加密后的密码与数据库中的密码是否一致。如果一致,则返回用户信息;否则返回 null。
6. 创建 Controller 层
在 Controller 层中,我们需要定义一个接口来响应登录请求。在接口中定义一个 POST 方法,用于接收用户传递的账号和密码,并通过调用 Service 层来实现具体的登录逻辑。
示例代码如下:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public Object login(String username, String password) {
User user = userService.login(username, password);
if (user != null) {
return "登录成功";
} else {
return "登录失败";
}
}
}
在上面的代码中,我们首先通过 @Autowired 注解注入 UserService 实例。接着,我们定义了一个 POST 方法,用于接收用户传递的账号和密码。在方法中,我们通过调用 UserService 的 login 方法来实现具体的登录逻辑,如果登录成功则返回登录成功消息,否则返回登录失败消息。
以上就是实现 mysql 数据库账号密码密文登录功能的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SSM实现mysql数据库账号密码密文登录功能 - Python技术站