spring4.x学习之用户登录与注册

在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。

首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。

打开数据库管理工具Navicat,链接上数据库【数据库链接名随意填写,我填写的是localhost】,右击数据库链接名【下图中localhost处】-》新建数据库

spring学习之新建数据库
spring学习之新建数据库

创建好数据库之后,接下来就是新建数据表,数据表名及字段参考下图

spring学习之新建数据表
spring学习之新建数据表

数据表名请修改为t_user

到此,数据库已经创建完成。

使用STS打开之前创建好的后端项目工程,右击demoSpring包,新建用户实体类,参数参考下图

spring学习之新建用户实体类
spring学习之新建用户实体类

建好用户登录与注册实体类之后,复制粘贴以下代码

package demoSpring.entity;

public class UserEntity {

	// 用户ID
	private int id;
	// 用户登录名
	private String name;
	// 用户登录密码
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

用户实体类建好之后,接下来就要建与数据库对应的xml文件了。【mapper类xml文件编写的都是数据库语句】

在src/main/resources目录下新建mappers目录,并在该目录下新建userMapper.xml文件,复制粘贴以下代码。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="demoSpring.dao.UserDao">
    <resultMap id="UserResultMap" type="demoSpring.entity.UserEntity">
        <id property="id" column="id" javaType="int" jdbcType="INTEGER"/>
        <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
        <result property="password" column="password" javaType="String" jdbcType="VARCHAR"/>
    </resultMap>
 
    <insert id="userReg" parameterType="demoSpring.entity.UserEntity">
        insert into t_user (id,name,password) values(#{id},#{name},#{password})
    </insert>
    
    <select id="getPasswordByName"  resultType="String">
        select password from t_user where name=#{name}
    </select>
    
</mapper>

数据库查询语句写好之后,再创建与之对应的DAO层类文件。右击demoSpring包名,创建UserDao.java文件,参数如下图所示

spring学习之创建DAO层文件
spring学习之创建DAO层文件

复制粘贴以下代码

package demoSpring.dao;

import org.apache.ibatis.annotations.Mapper;

import demoSpring.entity.UserEntity;

@Mapper
public interface UserDao {

	/**
	 * 用户注册方法
	 * @param userEntity
	 */
	int userReg(UserEntity userEntity);
	
	/**
	 * 通过用户名称查找密码
	 * @param name
	 * @return
	 */
	String getPasswordByName(String name);
}

DAO层建好之后,接下来建Service层,右击demoSpring包名,新建接口文件,参数如下图

spring学习之新建service
spring学习之新建service

复制粘贴以下代码

package demoSpring.service;

import demoSpring.entity.UserEntity;

public interface UserService {

	/**
	 * 用户注册
	 * @param userEntity
	 */
	int userReg(UserEntity userEntity);
	
	/**
	 * 根据用户名和密码判断是否登录
	 * @param userEntity
	 * @return 1代表通过验证,2代表无该用户,3代表存在该用户但密码不对
	 */
	int userLogin(UserEntity userEntity);
	
}

Service层建好之后,接下来就是建Service层的实现层类文件,右击demoSpring包名,参数如下图所示

spring学习之新建实现类文件
spring学习之新建实现类文件

复制并粘贴以下代码

package demoSpring.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import demoSpring.dao.UserDao;
import demoSpring.entity.UserEntity;
import demoSpring.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService {

	@Resource
	private UserDao userDao;
	
	/**
	 * 用户注册实现方法
	 */
	@Override
	public int userReg(UserEntity userEntity) {
		// TODO Auto-generated method stub
		int result = userDao.userReg(userEntity);
		return result;
	}

	/**
	 * 用户登录实现方法
	 */
	@Override
	public int userLogin(UserEntity userEntity) {
		// TODO Auto-generated method stub
		String password = userDao.getPasswordByName(userEntity.getName());
		if (password == null || password == "") {
			//未找到密码,数据库无用户信息
			return 2;
		} else if (password.equals(userEntity.getPassword())){
			//用户密码匹配,验证通过
			return 1;
		} else if (!password.equals(userEntity.getPassword())){
			//用户密码匹配,验证通过
			return 3;
		}
		
		return 0;
	}

}

实现类建好之后,最后就是新建Controller层了,右击demoSpring包名,参数如下图所示

spring学习之新建Controller
spring学习之新建Controller

复制并粘贴以下代码

package demoSpring.controller;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.coyote.Response;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import demoSpring.entity.UserEntity;
import demoSpring.service.UserService;

@RestController
@RequestMapping("/user")
public class UserController {

	@Resource
	private UserService userService;

	/**
	 * 用户登录
	 * @param userEntity
	 * @param request
	 * @return
	 */
	@PostMapping("/login")
	public Map<String, Object> login(@RequestBody UserEntity userEntity, HttpServletRequest request) {

		Map<String, Object> map= new HashMap<>();
		int result = userService.userLogin(userEntity);
		if (result == 1) {
			map.put("message", "登陆成功");
			map.put("status", 200);
			HttpSession session = request.getSession();
			session.setAttribute("currentUser", userEntity);
		}
		if (result == 2) {
			map.put("message", "该用户不存在");
			map.put("status", 400);
		}
		if (result == 3) {
			map.put("message", "密码不正确");
			map.put("status", 400);
		}
		return map;
	}
	
	/**
	 * 用户注册
	 * @param userEntity
	 * @param request
	 * @return
	 */
	@PostMapping("/reg")
	public Map<String, Object> reg(@RequestBody UserEntity userEntity, HttpServletRequest request) {
		
		Map<String, Object> map = new HashMap<>();
		int result = userService.userReg(userEntity);
		if (result > 0) {
			map.put("message", "注册成功");
			map.put("status", 200);
		} else {
			map.put("message", "注册失败");
			map.put("status", 400);
		}
		return map;
		
	}
}

到此,后端工程项目已经编写完毕。可右击项目启动类文件,选择Run as -》Spring Boot App,启动项目

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/spring-learn-user-login.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2019年3月19日
下一篇 2019年3月25日

相关推荐

发表回复

登录后才能评论