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日

相关推荐

  • css如何利用transparent属性设置透明度?transparent属性绘制各种三角形

    想到用css设置元素透明度,大家的第一反应会是:用Opacity属性来设置透明度,其实在css中还有其他设置透明度的方法。本章给大家介绍用transparent属性设置透明度,以及…

    2021年2月25日
    1.4K
  • Webpack入门,预处理器

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

    2022年11月21日
    804
  • 如何使用IDEA2020.2新建servlet工程

    最近自学java时,发现IDEA更新到2020.2版本时,在新建工程时,有了明显的改动。由于小编刚学到servlet,IDEA这一突然间的改动,导致小编不会新建servlet工程了…

    2020年8月17日
    6.1K
  • MySQL数据库入门之单表数据记录查询

    简单数据查询 语法形式如下: 在上述语句中,参数fieldn表示所要查询的字段名字,参数table_name表示所要查询数据记录的表名。 当需要查询表中所有字段时,可使用&#822…

    2020年7月15日
    1.6K
  • Java自学之I/O编程

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

    2020年12月21日
    1.4K
  • 创建vue3 + typescript项目说明

    创建项目 选择Manually select features【手动配置】 如上图选择配置项,并在下一步,选择3.x 接下来,按照推荐设置,进行选择【推荐设置都已英文字母大写的形式…

    2023年11月23日
    764
  • MyBatis配置之枚举类型typeHandler讲解(上)

    之前发布了一篇《MyBatis配置之typeHandler类型处理器》的文章,讲解了在使用MyBatis时如何自定义typeHandler。但是在MyBatis中枚举类型的type…

    2022年4月21日
    994
  • 如何封装VUE组件库?

    之前一直在使用Angular开发项目,也封装过Angular组件。由于种种原因,现需要转战VUE。好在本人有扎实的实战经验,结合各位网络大神整理的经验,现总结一篇关于封装VUE组件…

    2019年7月31日
    2.5K
  • 前端遍历树形数据,返回满足条件的树形数据

    在一次做手机端小程序项目中,有一个机构表单项,需要在页面展示是树形层级结构,但是后端开发人员返回的数据却是一维数组,而且还要在前端做过滤筛选功能。但是在使用的手机端组件库中,却没有…

    2022年11月8日
    564
  • Vue项目中实现用户登录及token验证

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

    2019年8月8日
    5.2K

发表回复

登录后才能评论