Spring 模拟用户登录流程

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='登录成功!'}

猜你喜欢

转载自blog.csdn.net/lln1540295459/article/details/121114181