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

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2019年3月19日
Next 2019年3月25日

相关推荐

  • 曾被问及的一些关于VUE的面试题

    由于没有系统的专研过VUE,关于VUE的一些理论知识点,没有去挖心思记忆及理解,只是在实际工作中知道怎么去使用。所以曾在面试的过程中被人嫌弃过,这一直是小编的痛点,/(ㄒoㄒ)/~…

    2022年4月2日
    765
  • Webpack入门,模块打包之CommonJS与ES6 Module的区别

    前面几篇文章分别介绍了CommonJS和ES6 Module两种形式的模块定义,这篇将介绍下两者各自的特性。 动态与静态 CommonJS与ES6 Module最本质的区别在于前者…

    2022年11月12日
    706
  • JavaScript中call、apply及bind的深度解析

    函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础…

    2019年8月5日
    1.5K
  • 5分钟带你入门vuex(vue状态管理)

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,那…

    2019年11月5日
    2.0K
  • px、em和rem实战经验

    在自适应布局或者移动端网页开发时,我们经常会用到em和rem两个长度单位。接下来我们讨论一下这两个单位和px之间的区别,以及他们的使用场景等。 px px,像素(计算机屏幕上的一个…

    2018年9月11日
    2.0K
  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.3K
  • JAVA基础知识整理

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

    2020年1月11日
    1.6K
  • Webpack入门,预处理器

    一个Web工程通常会包含HTML、JS、CSS、图片、字体等多种类型的静态资源,且这些资源之间都存在着某种联系。对于Webpack来说,所有这些静态资源都是模块,开发者可以像加载一…

    2022年11月21日
    569
  • MySQL数据库基础之视图及触发器相关知识点整理

    视图的操作 视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。行和列数据来自自定义视图的查询所引用基本…

    2020年7月13日
    1.3K
  • MyBatis配置之properties属性详解

    之前写了一篇《如何搭建MyBatis开发环境》,通过一个简单的实例讲解了关于搭建MyBatis的开发环境,这篇将详细讲解MyBatis的配置。 MyBatis配置文件的层次结构 这…

    2022年4月18日
    690

发表回复

Please Login to Comment