springboot项目员工管理系统
1.找一个免费的前端模板bootstarp
1.1导入静态资源
1.2首页配置
在已经声明的自己扩展的springmvc中,通过addViewControllers方法的添加
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/main.html").setViewName("dashboard");
}
}
1.3首先我们的静态资源无法生效,所有页面的静态资源需要使用thymeleaf接管@{}
首先需要添加
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link href = "xxx/xxx.xxx" rel="styleheet">
↓ ↓ ↓ ↓
<link th:href = "@{xxx/xxx.xxx}" rel="styleheet">
包括 src中 需要编程 th:src="@{xxx/xxx.xxx}"
同时注意 需要在properties或者yml中添加,关闭模板引擎的缓存
spring:
thymeleaf:
cache: false
2.伪造数据库
2.1创建一个pojo
首先我们不用lombok插件,简便但缺少了可读性
创建一个pojo
里面放入我们需要的对象
2.2通过map伪造数据,dao中获取
以EmployeeDao 为例
首先获取其他dao中的属性
声明一个数据集合,赋值,并且添加增删改查的操作,
增是map.put(k,v)
删是map的remove通过id
查询一个员工是 map.get(id)
查是通过values()所有map集合返回
@Repository
public class EmployeeDao {
//模拟数据库中员工表的数据
static private Map<Integer, Employee> employees;
@Autowired
private DepartmentDao departmentDao;
static {
employees = new HashMap<>();//创建一个员工表
employees.put(1, new Employee(1, "zsr", "1234@qq.com", 1, new Department(1, "技术部"), new Date()));
employees.put(2, new Employee(2, "lyr", "1345@qq.com", 1, new Department(2, "市场部"), new Date()));
employees.put(3, new Employee(3, "gcc", "5665@qq.com", 0, new Department(3, "调研部"), new Date()));
employees.put(4, new Employee(4, "zyx", "7688@qq.com", 1, new Department(4, "后勤部"), new Date()));
employees.put(5, new Employee(5, "zch", "8089@qq.com", 1, new Department(5, "运营部"), new Date()));
}
//主键自增
private static Integer initialID = 6;
//增加一个员工
public void addEmployee(Employee employee) {
if (employee.getId() == null)
employee.setId(initialID++);
employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));
employees.put(employee.getId(), employee);
}
//查询全部员工信息
public Collection<Employee> getAllEmployees() {
return employees.values();
}
//通过id查询员工
public Employee getEmployeeByID(Integer id) {
return employees.get(id);
}
//通过id删除员工
public void deleteEmployeeByID(int id) {
employees.remove(id);
}
}
3.页面国际化
3.1确保properties的编码为UTF-8
3.2i18n,写入properties文件中英文
3.yml中配置找到我们的配置文件真实位置
spring:
messages:
basename: i18n.login
4.页面中需要的格式 消息表达式#{}
使用的是#{}
变量需要使用${}
5.国际化解析器在config中,学着auto自动装配中的照猫画虎
public class MyLocaleResolver implements LocaleResolver {
//解析地区器
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取请求中的国际化参数
String language = request.getParameter("l");
//默认的地区
Locale locale = Locale.getDefault();
//如果请求的链接参数不为空,携带了国际化参数
if (!StringUtils.isEmpty(language)) {
String[] split = language.split("_");//zh_CN(语言_地区)
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
6.将自己的组件配置到spring容器中
4.实现细节,并没有什么难度所以省略
4.1用户登录
4.2拦截器
//处理器拦截器
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//用户登录成功后,应该有自己的session
Object session = request.getSession().getAttribute("LoginUser");
if (session == null) {
request.setAttribute("msg", "权限不够,请先登录");
request.getRequestDispatcher("/index.html").forward(request, response);
return false;
} else {
return true;
}
}
}