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日

相关推荐

  • Vue项目中实现用户登录及token验证

    在前后端完全分离的情况下,Vue项目中实现token验证大致思路如下: 第一次登录的时候,前端调后端的登陆接口,发送用户名和密码 。 后端收到请求,验证用户名和密码,验证成功,就给…

    2019年8月8日
    5.1K
  • JAVA基础知识整理

    终于下定决心2020年转JAVA开发,自学之路坎坷曲折。俗话说的话,好记性不如烂笔头。如果有小伙伴们也像我一样在JAVA自学之路上徘徊,那就关注一下我的博客网站。我会不定期更新一下…

    2020年1月11日
    1.8K
  • windows下使用Docker Desktop安装nacos与mysql,实现互通访问

    1、命令行拉取MySQL镜像 打开命令提示符,运行以下命令安装mysql 2、运行mysql镜像,启动mysql实例 3、命令行拉取nacos镜像 4、运行nacos镜像,启动na…

    2022年10月27日
    467
  • JavaScript 的 this 原理

    有时候会使用一种东西,并不代表你了解它。就像你会写JavaScript代码,能看懂JavaScript代码,但不代表你懂它。 学懂 JavaScript 语言,一个标志就是理解下面…

    2019年8月1日
    1.8K
  • Java自学之I/O编程

    I/O(Input/Output,输入/输出)可以实现数据的读取与写入操作,Java针对I/O操作的实现提供了java.io工具包,此包的核心组成由File类、InputStrea…

    2020年12月21日
    1.3K
  • Webpack入门,CSS Modules

    CSS Modules是近年来比较流行的一种开发模式,其理念就是把CSS模块化,让CSS也拥有模块的特点,具体如下: 使用CSS Modules时不需要额外安装模块,只要开启css…

    2022年11月28日
    939
  • 封装JDBC工具类,连接MySQL数据库

    JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到orac…

    2022年3月31日
    888
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.9K
  • 如何搭建MyBatis开发环境

    进入一段时间的学习及温习,已经可以说是初步掌握了Javaweb入门开发,由于我的中心思想是抛弃JSP,做纯粹的前后端分离项目,所以接下来计划学习持久层开发,现在主流的持久层开发工具…

    2022年4月6日
    793
  • CSS让内容居中的方法总结

    内容水平居中  分行内元素与块级元素两种情况;其中块级元素又分定宽与不定宽两种情况; 行内元素 首先看它的父元素是不是块级元素,如果是,则直接给父元素设置 te…

    2019年6月28日
    3.3K

发表回复

登录后才能评论