1. 员工添加页面跳转
1.1 要求
- 点击添加按钮发送get请求来到添加页面
- 添加完毕后发送post请求完成添加
1.2 具体实现
-
将“员工添加”按钮改成超链接
<h2><a class="btn btn-sm btn-success" href="emp" th:href="@{/emp}">员工添加</a></h2>
-
将emp/list复制一份,重命名为add
-
将add中
<main>
标签的内容删除,并从bootstrap官网中拷贝form表单模板到此<form> <div class="form-group"> <label>LastName</label> <input type="text" class="form-control" placeholder="zhangsan"> </div> <div class="form-group"> <label>Email</label> <input type="email" class="form-control" placeholder="zhangsan@atguigu.com"> </div> <div class="form-group"> <label>Gender</label><br/> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="gender" value="1"> <label class="form-check-label">男</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="gender" value="0"> <label class="form-check-label">女</label> </div> </div> <div class="form-group"> <label>department</label> <select class="form-control"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> <div class="form-group"> <label>Birth</label> <input type="text" class="form-control" placeholder="zhangsan"> </div> <button type="submit" class="btn btn-primary">添加</button> </form>
-
添加控制器方法
@GetMapping("/emp") public String toAddPage(){//来到员工添加页面 //来到添加页面 return "emp/add"; }
-
修改部门
页面中的部门区域是可变的,查出来的,需要改
控制器方法@Autowired DepartmentDao departmentDao; @GetMapping("/emp") public String toAddPage(Model model){//来到员工添加页面 //来到添加页面,查出所有部门,在页面显示 Collection<Department> departments = departmentDao.getDepartments(); model.addAttribute("depts",departments); return "emp/add"; }
修改form表单
<div class="form-group"> <label>department</label> <!--提交的是部门id--> <select class="form-control"> <option th:value="${dept.id}" th:each="dept:${depts}" th:text="${dept.departmentName}">1</option> </select> </div>
-
效果
2. 员工添加功能
2.1 修改页面元素
2.2 添加方法
//员工添加
@PostMapping("/emp")//springmvc自动将请求和入参对象的属性进行一一绑定
public String addEmp(Employee employee){//要求:请求参数的名称和javaBean的如惨对象中的属性名一致
System.out.println(employee);
//保存员工
employeeDao.save(employee);
//redirect:重定向到一个地址,/表示当前项目路径
//forward:表示转发到一个地址,可以到源码ThymeleafViewResolver中了解一下
return "redirect:/emps";
}
2.3 日期格式化
由于生日部分的日期格式有多种,如1997/09/13,1997-09-13,1997.09.13等等,所以我们要对日期进行格式化;日期的格式化;SpringMVC将页面提交的值需要转换为指定的类型
在配置文件中添加配置,默认日期是按照/的方式
spring.mvc.date-format=yyyy-MM-dd
2.4 效果
3. 编辑员工功能
3.1 修改编辑按钮
修改编辑按钮,使得发送请求时,携带被修改项的id号,这样才能目标进行修改
<a class="btn btn-sm btn-primary" th:href="@{/emp/}+${emp.id}">编辑</a>
当鼠标放在不同员工的修改按钮上时,浏览器左下角会显示请求+参数
3.2 跳转到修改页面的方法
@PutMapping("/emp/{id}")
public String toEditPage(@PathVariable("id") Integer id, Model model){//来到修改页面,查出当前员工,在页面回显
Employee employee=employeeDao.get(id);
model.addAttribute("emp",employee);
//页面要显示所有的部门列表
Collection<Department> departments = departmentDao.getDepartments();
model.addAttribute("depts",departments);
//回到修改页面,注意:add是一个 修改+添加 二合一的页面
return "emp/add";
}
3.3 修改页面
关于上面修改员工带id(EmployeeDao)
private static Integer initId = 1006;
//无id时就进行id自增,如添加员工功能
public void save(Employee employee){
if(employee.getId() == null){
employee.setId(initId++);
}
//有id则获取所带的id,如修改员工功能
employee.setDepartment(departmentDao.getDepartment(employee.getDepartment().getId()));
employees.put(employee.getId(), employee);
}
3.4 修改员工方法
@PutMapping("/emp")
public String updateEmployee(Employee employee){//修改员工,需要提交员工id
System.out.println("修改的员工数据"+employee);
employeeDao.save(employee);
return "redirect:/emps";
}
3.5 效果
修改前
4. 员工删除功能
4.1 修改页面
4.2 控制器方法
@DeleteMapping("/emp/{id}")
public String deleteEmployee(@PathVariable("id") Integer id){//员工删除
employeeDao.delete(id);
return "redirect:/emps";
}
4.3 修改配置文件属性
我们在页面中使用了HiddenHttpMethodFilter将post请求转换成delete,但是springboot的配置中自设置是false,即默认关闭,我们使用起来是无效的,点击删除后会出现405,这时我们就要去配置文件中进行设置为true,使其生效
spring.mvc.hiddenmethod.filter.enabled=true
该SpringBoot学习笔记学习自雷神前辈,是对知识点的整理和自我认识的梳理,如有不当之处,欢迎指出