千家信息网

Java后端登录功能怎么实现

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Java后端登录功能怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 登录
千家信息网最后更新 2026年11月01日Java后端登录功能怎么实现

本篇内容介绍了"Java后端登录功能怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一. 登录需求分析

页面原型

1. 登录页面展示:项目路径(\resources\backend\page\login\login.html)

员工点击登录按钮进行后管平台的登录操作,登录正确以外方式不可登录。

登录处理逻辑

  • 将页面提交的密码进行MD5加密

  • 根据用户名查数据库(查不到返回结果)

  • 比对密码(密码错误返回结果)

  • 查询员工状态,员工状态禁用下不可登录

  • 登录成功,写入session中,返回结果。

二. 配置返回通用结果类

package com.itheima.reggie.common;import lombok.Data;import java.util.HashMap;import java.util.Map;/** * 返回通用类 * @author jekong * @date 2022/4/22 */@Datapublic class R {    /** 编码:1成功,0和其它数字为失败*/    private Integer code;    /** 信息返回*/    private String msg;    /** 信息返回数据*/    private T data;    /** 动态数据*/    private Map map = new HashMap();    public static  R success(T object) {        R r = new R();        r.data = object;        r.code = 1;        return r;    }    public static  R error(String msg) {        R r = new R();        r.msg = msg;        r.code = 0;        return r;    }    public R add(String key, Object value) {        this.map.put(key, value);        return this;    }}

三. 登录请求API

说明值
请求URL/employee/login
请求数据{
"username": "admin",
"password": "123456"
}
返回数据{
"code": 0,
"msg": "登录成功",
"data": null,
"map": {}
}

四. 创建实体类并实现登录逻辑

entity: 创建实体类

创建Employee.java(员工对象)

package com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.TableField;import lombok.Data;import java.io.Serializable;import java.time.LocalDateTime;/** * 员工实体类 * @author jektong * @date 2022/4/21 */@Datapublic class Employee implements Serializable {    /** 序列号*/    private static final long serialVersionUID = 1L;    /**唯一主键*/    private Long id;    /**用户名*/    private String username;    /**姓名*/    private String name;    /**密码*/    private String password;    /**电话*/    private String phone;    /**性别*/    private String sex;    /**身份证号码*/    private String idNumber;    /**状态*/    private Integer status;    /**创建时间*/    private LocalDateTime createTime;    /**更新时间*/    private LocalDateTime updateTime;    /**添加用户时使用*/    @TableField(fill = FieldFill.INSERT)    private Long createUser;    /**更新用户时使用*/    @TableField(fill = FieldFill.INSERT_UPDATE)    private Long updateUser;}

mapper数据库交互层

package com.itheima.reggie.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.itheima.reggie.entity.Employee;import org.apache.ibatis.annotations.Mapper;/** * EmployeeMapper * @author jektong * @date 2022/4/21 */@Mapperpublic interface EmployeeMapper extends BaseMapper {}

service业务层接口

package com.itheima.reggie.service;import com.baomidou.mybatisplus.extension.service.IService;import com.itheima.reggie.entity.Employee;import org.springframework.stereotype.Service;/** * @author jektong * @date 2022/4/21 */public interface EmployeeService extends IService {}

业务层实现类

package com.itheima.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.itheima.reggie.entity.Employee;import com.itheima.reggie.mapper.EmployeeMapper;import com.itheima.reggie.service.EmployeeService;import org.springframework.stereotype.Service;/** * @author jektong * @date 2022/4/21 */@Servicepublic class EmployeeServiceImpl extends ServiceImpl implements EmployeeService {}

controller控制层

package com.itheima.reggie.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.itheima.reggie.common.CommonsConst;import com.itheima.reggie.common.R;import com.itheima.reggie.entity.Employee;import com.itheima.reggie.service.EmployeeService;import lombok.extern.slf4j.Slf4j;import org.springframework.util.DigestUtils;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 javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;/** * 员工控制类 * * @author tongbing * @date 2022/4/21 */@Slf4j@RestController@RequestMapping("/employee")public class EmployeeController {    @Resource    private EmployeeService employeeService = null;    /**     * 登录请求处理     * TODO 后续改进将业务处理的代码放入业务层,这里只做数据请求与返回     * @param request     * @param employee     * @return     */    @PostMapping("/login")    public R login(HttpServletRequest request,                             @RequestBody Employee employee) {        // 将页面提交的密码进行MD5加密        String password = employee.getPassword();        password = DigestUtils.md5DigestAsHex(password.getBytes());        // 根据用户名查数据库        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        queryWrapper.eq(Employee::getUsername, employee.getUsername());        Employee emp = employeeService.getOne(queryWrapper);        // 查不到返回登录失败结果        if(emp == null){            return R.error(CommonsConst.LOGIN_FAIL);        }        // 比对密码        if(!emp.getPassword().equals(password)){            return R.error(CommonsConst.LOGIN_FAIL);        }        // 查看员工状态        if(emp.getStatus() == CommonsConst.EMPLOYEE_STATUS_NO){            return R.error(CommonsConst.LOGIN_ACCOUNT_STOP);        }        // 登录成功将员工的ID放入session中        request.getSession().setAttribute("employeeId",emp.getId());        return R.success(emp);    }}

五. 功能测试

Debug测试时主要测试以下几点:

  1. 用户名与密码的校验

  2. 用户状态禁用情况下

  3. 数据是否正确返回

附录

常量类:

package com.itheima.reggie.common;/** * 常量定义 * @author jektong * @date 2022/4/23 */public class CommonsConst {    // 登录失败    public static final String LOGIN_FAIL = "登录失败";    // 账号禁用    public static final String LOGIN_ACCOUNT_STOP = "账号禁止使用";    // 员工账号禁用状态 0:禁用    public static final Integer EMPLOYEE_STATUS_NO = 0;    // 员工账号正常状态 1:正常使用    public static final Integer EMPLOYEE_STATUS_YES = 1;}

"Java后端登录功能怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

登录 员工 数据 密码 状态 用户 结果 成功 业务 用户名 账号 页面 功能 实体 数据库 处理 测试 信息 内容 常量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州百单互联网科技有限公司 科技和互联网公司 金融科技与互联网金融 汇久创客互联网科技 科技互联网公司logo 奔汉互联网科技 老年人脱离互联网科技的作文 温州喔噻互联网科技有限公司 科技与互联网哪个更好 互联网新科技动漫ppt素材 华夏恒生互联网科技013171 广州新华互联网科技学校电竞方面 广州富喜互联网络科技 杭州披云加互联网科技有限公司 新氧科技和美国互联网有关系吗 互联网科技新闻 互联网时代高科技布局 长沙易易互联网科技有限公司 广东猫王互联网科技有限公司电话 互联网科技快速发展优美句子 丰台科技园 互联网 互联网科技大会 玖二柒互联网科技公司待遇 农村开互联网科技讲堂 互联网金融中的现代科技 玉溪新华互联网科技好不好 21世纪互联网科技成就 广西泛欧互联网科技有限公司 互联网科技品牌 互联网科技大佬云集
0