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日

相关推荐

  • JavaScript 事件委托详解

    基本概念 事件委托,通俗地来讲,就是把一个元素响应事件(click、keydown……)的函数委托到另一个元素; 一般来讲,会把一个或者一组元素的事件委托到…

    2021年3月8日
    1.1K
  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

    2021年1月13日
    1.6K
  • Java自学之内部类

    内部类是一种常见的嵌套结构,利用这样的结构使得内部类可以与外部类共存,并且方便地进行私有操作的访问。 内部类基本概念 内部类(内部定义普通类、抽象类、接口的统称)是指一种嵌套的结构…

    2020年12月14日
    1.4K
  • Angular环境搭建(Windows 10)

    目前前端开发正处于快速发展阶段,接触angular时,Angular 2刚刚发布,现在第五版也已经发布。由于刚开始没有系统的学习,导致工作中,经常捉襟见肘。现在把自己在工作中踩过的…

    2018年9月5日
    4.0K
  • 深入理解JS原型和继承

    在学习JS中的原型,原型链,继承这些知识之前,必须先了解并掌握基础知识:函数和对象的关系。 我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来。但是函数…

    2019年6月29日
    2.2K
  • 如何判断一个对象为数组

    使用 instanceof 操作符 原理 instanceof 的内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。 使用 instanceof 判断一个对象…

    2020年7月3日
    1.1K
  • MySQL数据库入门知识点整理

    数据库基本操作 1、创建数据库语句 数据库名称有以下几点要求 不能与已存在的数据库名称相同; 由字母、数字、下划线、@、$和#符号组成; 不能以数字及$符号开头; 标识符不能使用M…

    2020年7月7日
    1.5K
  • 日常开发 26 个常见的 JavaScript 代码优化方案

    1、NULL、Undefined、”【空】检查 我们在创建新变量赋予一个存在的变量值的时候,并不希望赋予null或undefined,我们可以采用以下简洁的赋值方式。 …

    2021年2月22日
    1.2K
  • 初识Spring Boot

    什么是Spring Boot Spring Boot是由Pivotal Software公司于2013年研发的全新Java开发框架。其设计目的是用来简化新Spring应用的初始搭建…

    2024年6月16日
    407
  • 回调函数散记

    今天被将要入职的公司的开发人员询问了一个项目中遇到的问题,关于函数内访问外部函数的情况。大致现象如下:js文件中有两个同级函数FnA和FnB,想在函数FnA中调用FnB。 一看就是…

    2019年8月16日
    1.5K

发表回复

登录后才能评论