JavaWeb编程语言—登录功能实现

发布时间:2023年12月19日

简介:这篇文章会详细介绍基于Java-Web编程实现一个登录功能,即接收前端发来的用户名和密码,在服务器端进行验证。若验证通过则登陆成功,否则返回账号或密码错误,登录失败。

1、Controller层(接受请求,作出响应)

package com.itheima.tliaswebmanagement.controller;

import com.itheima.tliaswebmanagement.pojo.Emp;
import com.itheima.tliaswebmanagement.pojo.Result;
import com.itheima.tliaswebmanagement.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@Slf4j // 输出日志注解
@RestController //接受请求,作出响应
public class LoginController {
    @Autowired
    private EmpService empService;
    @PostMapping("/login")
    public Result login(@RequestBody Emp emp){
        Emp e = empService.login(emp);
        return e != null ? Result.success():Result.error("用户名或密码错误");
    }
}

在上面的代码中,LoginController类接收来自前端传递的登录信息,调用Service层的逻辑代码进行判定并且返回判定结果。

2、Service层(逻辑层,进行逻辑业务)

图 2.1 Service层接口

package com.itheima.tliaswebmanagement.service;

import com.itheima.tliaswebmanagement.pojo.Emp;
import com.itheima.tliaswebmanagement.pojo.PageBean;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.util.List;

/**
 * 员工管理
 */
public interface EmpService {

    /**
     * 分页查询
     * @param page
     * @param pageSize
     * @return
     */
    PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);

    /**
     * 根据id删除用户
     */
    void deleteById(List<Integer> ids);

    /**
     * 员工管理-新增员工信息
     * @param emp
     */
    void save(Emp emp);

    /**
     * 员工管理-查询员工信息
     * @param id
     */
    Emp getById(Integer id);

    /**
     * 员工管理-修改员工信息
     * @param emp
     * @return
     */
    void updateById(Emp emp);

    /**
     * 员工管理-员工登录
     * @param emp
     * @return emp
     */
    Emp login(Emp emp);
}

在图?2.1 Service层接口中,配置了 login(Emp emp)接口,这个接口就是进行逻辑判断的部分。

图 2.2?Service 层接口实现类

package com.itheima.tliaswebmanagement.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.tliaswebmanagement.mapper.EmpMapper;
import com.itheima.tliaswebmanagement.pojo.Emp;
import com.itheima.tliaswebmanagement.pojo.PageBean;
import com.itheima.tliaswebmanagement.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;

    // 方法二: 采用PageHelper插件进行分页
    @Override
    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
        // 1.为分页插件设置参数
        PageHelper.startPage(page, pageSize);
        // 2.执行查询语句
        List<Emp> empList = empMapper.list(name, gender, begin, end);
        // 3.强转为Page类型
        Page<Emp> empPage = (Page<Emp>)empList;

        return new PageBean(empPage.getTotal(), empPage.getResult());
    }

    @Override
    public void deleteById(List<Integer> ids) {
        empMapper.deleteById(ids);
    }

    @Override
    public void save(Emp emp) {
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    }

    @Override
    public Emp getById(Integer id) {
        Emp emp = empMapper.getById(id);
        return emp;
    }

    @Override
    public void updateById(Emp emp) {
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.updateById(emp);
    }

    @Override
    public Emp login(Emp emp) {
        Emp e = empMapper.getByUsernameAndPassword(emp);
        return e;
    }

/*    @Override
    public PageBean page(Integer page, Integer pageSize) {
        // 1.获取总记录数
        Long count = empMapper.count();
        // 2.获取分页查询结果数据
        List<Emp> empList = empMapper.page((page - 1) * pageSize, pageSize);
        // 3.将查询的结果封装到PageBean中
        return new PageBean(count, empList);
    }*/



}

在图 2.2?Service 层接口实现类中,实现了Emp login(Emp emp)这个方法。

3、Dao层(持久层,直接访问数据库)

图 3.1?Dao?层

package com.itheima.tliaswebmanagement.mapper;

import com.itheima.tliaswebmanagement.pojo.Emp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

/**
 * 员工管理
 */

@Mapper
public interface EmpMapper {

  
    /**
     * 员工管理-员工登录
     * @param emp
     * @return emp
     */
    @Select("select * from emp where username = #{username} and password = #{password}")
    Emp getByUsernameAndPassword(Emp emp);

}

Dao层,访问数据库获取与前端输入信息相对应的用户信息。

文章来源:https://blog.csdn.net/Wang_ning__/article/details/134962219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。