Spring 模拟用户登录流程
配置环境pom.xml
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxxx</groupId>
<artifactId>spring04</artifactId>
<version>1.0-SNAPSHOT</version>
<name>spring04</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--引入spring环境-->
<!-- 添加Spring框架的核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
</dependencies>
<build>
</build>
</project>
Dao层(查询用户记录)
1.定义 User.java
package com.xxxx.po;
/**
* 用户实体类
*/
public class User {
private Integer userId;
private String userName;
private String userPwd;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
2.编写Dao层 UserDao.java
package com.xxxx.dao;
import com.xxxx.po.User;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
private final String USERNAME = "admin";
private final String USERPWD = "123456";
public User queryUserByName(String userName){
//判断用户名是否存在
if(!USERNAME.equals(userName)){
return null;
}
//如果相等
User user = new User();
user.setUserName(userName);
user.setUserId(1);
user.setUserPwd(USERPWD);
return user;
}
}
Service层 (业务逻辑处理)
1.定义业务处理返回消息模型 MessageModel.java
package com.xxxx.po.vo;
/**
* 封装响应对象
*/
public class MessageModel {
private Integer code;//状态码:1=成功 2=失败
private String msg;//提示信息
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Override
public String toString() {
return "MessageModel{" +
"code=" + code +
", msg='" + msg + '\'' +
'}';
}
}
2.编写Service层 UserService.java
package com.xxxx.service;
import com.xxxx.dao.UserDao;
import com.xxxx.po.User;
import com.xxxx.po.vo.MessageModel;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserService {
//注入
@Resource
private UserDao userDao;
public MessageModel userLogin(String userName,String userPwd){
MessageModel messageModel = new MessageModel();
//参数的非空校验
if(userName == null || "".equals(userName.trim())){
messageModel.setCode(0);
messageModel.setMsg("用户名不能为空!");
return messageModel;
}
if(userPwd == null || "".equals(userPwd.trim())){
messageModel.setCode(0);
messageModel.setMsg("用户密码不能为空!");
return messageModel;
}
//调用dao层的查询方法,判断用户对象是否存在
User user = userDao.queryUserByName(userName);
//判断用户对象是否为空
if(user == null){
messageModel.setCode(0);
messageModel.setMsg("用户对象不存在!");
return messageModel;
}
//判断密码是否正确
if(!user.getUserPwd().equals(userPwd)){
messageModel.setCode(0);
messageModel.setMsg("用户密码不正确!");
return messageModel;
}
messageModel.setCode(1);
messageModel.setMsg("登录成功!");
return messageModel;
}
}
Controller层 (接收请求)
编写 Controller层 UserController.java
package com.xxxx.controller;
import com.xxxx.po.vo.MessageModel;
import com.xxxx.service.UserService;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
@Controller
public class UserController {
//注入
@Resource
private UserService userService;
public MessageModel userLogin(String userName,String userPwd){
//调用service层的方法
MessageModel messageModel = userService.userLogin(userName,userPwd);
return messageModel;
}
}
设置配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启自动扫描并设置⾃动化扫描的范围 -->
<context:component-scan base-package="com.xxxx"/>
</beans>
通过 JUnit 进行测试
package com.xxxx;
import static org.junit.Assert.assertTrue;
import com.xxxx.controller.UserController;
import com.xxxx.po.vo.MessageModel;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Unit test for simple App.
*/
public class AppTest {
@Test
public void testUserLogin(){
//得到spring的上下文环境
BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml");
//得到bean对象
UserController userController = (UserController) factory.getBean("userController");
MessageModel messageModel = userController.userLogin("admin","123456");
System.out.println(messageModel);
}
}
测试结果
MessageModel{
code=1, msg='登录成功!'}