- 页面直接放在tempaltes里
- 其他静态资源放在static里面(如css,js,img等)
用java写数据库数据以及数据库操作(不外连数据库时的操作)
- pojo
department.java
package com.example.employeesystem.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//部门表
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
private Integer id;
private String departmentName;
}
employee.java
package com.example.employeesystem.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
//员工表
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
private Integer id;
private String lastName;
private String email;
private Integer gender; // 0:女 1:男
private Department department;
private Date birth;
public Employee(Integer id, String lastName, String email, Integer gender, Department department) {
this.id = id;
this.lastName = lastName;
this.email = email;
this.gender = gender;
this.department = department;
//默认创建日期
this.birth = new Date();
}
}
- Dao
DepartmentDao.java
package com.example.employeesystem.dao;
import com.example.employeesystem.pojo.Department;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
//部门dao
@Repository
public class DepartmentDao {
//模拟数据库中的数据
private static Mapdeparments = null;
static{
deparments = new HashMap(); // 创建一个部门表
deparments.put(101,new Department(101,"教学部"));
deparments.put(102,new Department(102,"市场部"));
deparments.put(103,new Department(103,"教研部"));
deparments.put(104,new Department(104,"运营部"));
deparments.put(105,new Department(105,"后勤部"));
}
//数据库操作
//获得所有部门信息
public CollectiongetDepartments(){
return deparments.values();
}
//通过id得到部门
public Department getDepartmentById(Integer id){
return deparments.get(id);
}
}
EmployeeDao.java
package com.example.employeesystem.dao;
import com.example.employeesystem.pojo.Department;
import com.example.employeesystem.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Repository
public class EmployeeDao {
//模拟数据库中的数据
private static Map employees = null;
//员工有所属的部门
@Autowired
private DepartmentDao departmentDao;
static{
employees = new HashMap(); // 创建一个部门表
employees.put(1001,new Employee(1001,"小明","123456@qq.com",1,new Department(101,"教学部")));
employees.put(1002,new Employee(1002,"小王","123556@qq.com",1,new Department(102,"市场部")));
employees.put(1003,new Employee(1003,"小美","123656@qq.com",0,new Department(101,"教学部")));
employees.put(1004,new Employee(1004,"小张","123756@qq.com",1,new Department(102,"市场部")));
employees.put(1005,new Employee(1005,"小李","123856@qq.com",0,new Department(105,"后勤部")));
}
//主键自增
private static Integer initId =1006;
//增加一个员工
public void save(Employee employee){
if (employee.getId()==null){
employee.setId(initId++);
}
employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));
employees.put(employee.getId(),employee);
}
//查询全部员工信息
public CollectiongetAll(){
return employees.values();
}
//通过id查询员工
public Employee getEmployeeById(Integer id){
return employees.get(id);
}
//删除员工通过id
public void delete(Integer id){
employees.remove(id);
}
}
3.跳转页面,设置主页
在config中自定义一个自己的mvcconfig
MyMvcConfig.java
package com.example.employeesystem.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//直接/和/index.html都会走到index页面去
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
这样直接进入localhost:8080/就是首页了
4.国际化-
编码所有的都改成utf-8
-
写中英文配置(login.properties,login_en_US.properties, login_zh_CN.properties)
-
在index.html里设置 th:text"#{message}"
-
自定义一个国际化配置,并且注入到容器才能生效
MyLocaleResolver.java
package com.example.employeesystem.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");
Locale locale = Locale.getDefault(); //如果没有就使用默认
//如果请求的链接携带了国际化参数
if (!StringUtils.isEmpty(language)){
//zh_CN
String[] split = language.split("_");
//国家、地区
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
注入进容器
MyMvcConfig.java
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
5. 登录功能实现和登录拦截器
- 登录功能实现
从前端开始,index.html
- 写前端提交过去的请求,并且返回到list页面
@PostMapping("/emp")
public String add(Employee employee){
employeeDao.save(employee);//调用底层业务方法保存员工信息
return"redirect:/emps";
}
3、修改员工信息
- 从list页面提交去修改页面的按钮,发送请求
- 携带参数的提交,注意用拼接
编辑
- 后端写接收去到修改页面的请求,返回到修改页面
//去到员工的修改页面
@GetMapping("/emp/{id}")
public String toUpdate(@PathVariable("id")Integer id,Model model){
//查出原来的数据
Employee employeeById = employeeDao.getEmployeeById(id);
model.addAttribute("emp",employeeById);
Collection departments = departmentDao.getDepartments();
model.addAttribute("departments",departments);
return "update";
}
- 写修改页面,其他样式都一样,主要是一个表单内容
- 后端写提交修改的请求,并返回到列表
@PostMapping("/update")
public String update(Employee employee){
employeeDao.save(employee);//调用底层业务方法保存员工信息
return "redirect:/emps";
}
- 关于日期默认是斜杠方式,修改可以在application.properties中修改
#时间日期格式化 spring.mvc.date-format=yyyy-MM-dd4、删除员工实现
- list页面内提交删除的请求
删除
- 后端接收删除请求,并返回到列表页面去
//删除员工
@GetMapping("/delemp/{id}")
public String toDelete(@PathVariable("id")Integer id){
employeeDao.delete(id);
return "redirect:/emps";
}
7.如何写一个网站
- 前端:
- 模板:别人写好的,我们拿来改成自己需要的
- 框架、组件: 自己动手组合拼接! Bootstrap ,Layui,semantic-ui
- 栅格系统
- 导航栏
- 侧边栏
- 表单
-
设计数据库(难点)
-
前端让它能够自动运行,独立化工程
-
数据接口如何对接:json,对象 all in one
-
前后端联调测试
-
自己需要的准备的东西
-
有一套自己熟悉的后台模板:工作必要!x-admin
-
前端界面:至少自己能够通过前端框架,组合出来一个网站页面
- index
- about
- blog
- post
- user
-
让这个网站能够独立运行!
-
多练习



