SpringBoot简易员工管理系统

本文介绍了如何使用SpringBoot构建一个简易的员工管理系统,包括员工的增删改查、登录、拦截器设置、国际化以及首页、登录页面的实现。详细讲解了每个功能的实现步骤,如pojo层和Dao层的准备,首页模板的使用,登录页面的国际化,以及登录验证和权限拦截。
摘要由CSDN通过智能技术生成

SpringBoot简易员工管理系统

这里是一个简单的员工管理系统,实现了员工的增删改查,项目的完整讲解视频

请跳转至狂神老师的课程查看https://www.bilibili.com/video/av75233634?p=20

一、准备工作——pojo层

首先我们先编辑pojo实体类层,这里面包含部门和员工两个类.

package com.proj.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
   
    private Integer id;
    private String name;
}

部门拥有部门ID,名字两个属性.

package com.proj.pojo;

import com.proj.pojo.Department;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
public class Employee {
   
    private Integer id;
    private String lastname;
    private Integer gender;
    private String email;
    private Department department;
    private Date date;

    public Employee(Integer id, String lastname, Integer gender, String email, Department department) {
   
        this.id = id;
        this.lastname = lastname;
        this.gender = gender;
        this.email = email;
        this.department = department;
        this.date = new Date();
    }
}

员工类中包含 id,名字,性别,邮件,部门,日期几个属性

其中的性别使用1代表男性,0代表女性。

这里我们使用lombok框架的@AllArgsConstructor,@NoArgsConstructor自动生成有参和无参的构造方法,在上面添加@Data注解自动生成getter setter toString的方法.员工的日期属性我们在调用有参构造时使用当前日期。

二、准备工作——Dao层

这里Dao层我们来写一些关于员工增删改查的逻辑方法.

这里我们还是有两个类,一个是DepartmentDao,另一个是EmployeeDao,分别处理部门和员工。

package com.proj.dao;

import com.proj.pojo.Department;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

//@Repository
@Repository
public class DepartmentDao {
   
    private static Map<Integer, Department> departmentMap = null;

    static {
   
        departmentMap = new HashMap<Integer, Department>();
        departmentMap.put(101,new Department(101,"教学部"));
        departmentMap.put(102,new Department(102,"市场部"));
        departmentMap.put(103,new Department(103,"后勤部"));
        departmentMap.put(104,new Department(104,"技术部"));
        departmentMap.put(105,new Department(105,"小卖部"));

    }
    public Collection<Department> getDepartment(){
   
        return departmentMap.values();
    }
    public Department getDepartmentById(Integer id){
   
        return departmentMap.get(id);
    }
}

这里使用@Repository注解标注其为Dao层,定义一个map注入部门的编号以及名称,getDepartment方法返回所有department的集合,getDepartmentById方法使用id(键)查询相应的部门。

package com.proj.dao;

import com.proj.pojo.Department;
import com.proj.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@Repository
public class EmployeeDao {
   
    private static Map<Integer, Employee> employeeMap = null;
    @Autowired
    private  DepartmentDao departmentDao;


    static {
   
        employeeMap = new HashMap<Integer, Employee>();
        employeeMap.put(1001,new Employee(1001,"AA",1,"aa@a.com",new Department(101,"教学部")));
        employeeMap.put(1002,new Employee(1002,"BB",0,"ab@a.com",new Department(102,"市场部")));
        employeeMap.put(1003,new Employee(1003,"CC",1,"ac@a.com",new Department(103,"后勤部")));
        employeeMap.put(1004,new Employee(1004,"DD",0,"ad@a.com",new Department(104,"技术部")));
        employeeMap.put(1005,new Employee(1005,"EE",1,"ae@a.com",new Department(105,"小卖部")));

    }
    private static Integer Init = 1006;//定义新的初始编号
    public void AddEmployee(Employee employee){
   
        if(employee.getId()==null){
   
            employee.setId(Init++);
        }
        employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));
    }

    public Collection<Employee> getAll(){
   
        return employeeMap.values();
    }
    public Employee searchEmployees(Integer id){
   
        return employeeMap.get(id);
    }
    public void Del(Integer id){
   
        employeeMap.remove(id);
    }
}

在employeeDao层我们一样也是通过map管理数据,定义并给map赋值,又定义了一个DepartmentDao对象,通过@Autowired注解进行自动装配赋值,把我们之前DepartmentDao类写的对象装配到其中。

之后分别写增删改查的方法,在增方法中,我们通过Init属性自增进行id进行赋值,部门的赋值通过employee传来的部门id对相关部门进行查找然后赋值.

三、首页的实现

这里我们使用网上现成的模板进行编写,模板的下载地址:https://www.lanzous.com/i9a364h.

我们先把下好的模板放到resource资源目录下的templates资源目录下,将css js等样式文件放到static目录下。

在这里插入图片描述
这里各位先不要管commons等目录,这是我们之后要用到的。

我们首先编写controller,首先创建一个indexController类

package com.proj.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {
   
    @RequestMapping({
   "/","/index.html"})
    public String string(){
   
        return "index";
    }
}

写一个requestMapping,如果我们得到用户的/或者/index请求页面就返回到index页面。我们这里index是一个登录页面.

这里我们还需要扩展一下我们MVC中的内容。

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
   
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
   
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index").setViewName("index");
        registry.addViewController("/main.html").setViewName("dashboard");

    }
    }

通过设置addViewController让/和/index自动跳转到index主页中,让main.html跳转到dashiboard页面。

并且我们要使用模板引擎进行资源的引入.在HTML标签中导入模板引擎xmlns:th=“http://www.thymeleaf.org”,将各个页面的href属性改为th:href="@{}"的格式.

<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">

这样我们的首页就可以实现啦!

在这里插入图片描述

四、国际化

在网站的编写中,我们经常要切换中英文,这样我们就要实现页面的国际化.

首先我们要统一编码。

img

在idea中统一设置为utf8编码。

之后我们在resource目录下同时创建login.properties,login_en_US.properties,login_zh_CN.properties,系统会自动识别我们的properties文件

在这里插入图片描述

我们把创建一个文件夹i18n,将其放到i18n中。

之后我们统一编写login.properties和login_zh_CN.properties文件的配置

login.btn=登录
login.password=密码
login.remember=记住我
login.tip=请登录
login.username=用户名

login_en_US.properties使用英语

login.btn=Sign in
login.password=Password
login.remember=Remember me
login.tip=Please sign in
login.username=Username

下面就是进行按钮点击逻辑的编写了。

在Spring中有一个国际化的Locale (区域信息对象);里面有一个叫做LocaleResolver (获取区域信息对象)的解析器,我们要定义一个自己的区域信息对象。3

首先我们先修改一下前端中英文切换按钮的链接

在后面定义一个在index后面添加一个l,用于我们的LocaleResolver 接收参数

<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>

我们编写一个MyLocaleResolver类,他需要实现LocaleResolver接口

package com.proj.config;

import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

public class MyLocaleResolver implements LocaleResolver
{
   
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
   
        String language = httpServletRequest.getParameter("l");//获取到l
        Locale locale = Locale.getDefault()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值