1)、RestfulCRUD:CRUD满足Rest风格;
URI: /资源名称/资源标识 HTTP请求方式区分对资源CRUD操作
普通CRUD(uri来区分操作)
RestfulCRUD
查询
getEmp
emp---GET
添加
addEmp?xxx
emp---POST
修改
updateEmp?id=xxx&xxx=xx
emp/{id}---PUT
删除
deleteEmp?id=1
emp/{id}---DELETE
2)、实验的请求架构;
实验功能
请求URI
请求方式
查询所有员工
emps
GET
查询某个员工(来到修改页面)
emp/1
GET
来到添加页面
emp
GET
添加员工
emp
POST
来到修改页面(查出员工进行信息回显)
emp/1
GET
修改员工
emp
PUT
删除员工
emp/1
DELETE
#Spring 默认关闭Spring 的 hiddenmethod 过滤器的 需要在application.properties配置文件手动开启
关于提交请求方式form表单默认只有两种提交方式(Post、Get),需要另外设置其它提交方式
<!--发送put请求修改或者发送Delete请求删除员工数据--> <!-- 1、SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot自动配置好的) 2、页面创建一个post提交的form表单 3、form表单里面再创建一个input项,name="_method";值就是我们指定的请求方式--> 例如: <input type="hidden" name="_method" value="put" />//修改 <input type="hidden" name="_method" value="delete"/>//删除查询Controller代码:
//查询所有员工返回员工页面 @GetMapping("/emps") public String list(Model model){ //employeeDao.getAll().var 自动生成局部变量的快捷方式 Collection<Employee> employees = employeeDao.getAll(); //放在请求域中 model.addAttribute("emps",employees); //默认拼串 return "emp/list"; }查询Html代码:
<tr th:each="emp:${emps}"> <td th:text="${emp.id}"></td> <td>[[${emp.lastName}]]</td> <td>[[${emp.email}]]</td> <td>[[${emp.gender}==0?'女':'男']]</td> <td>[[${emp.department.departmentName}]]</td> <td th:text="${#dates.format(emp.birth,'yyyy-MM-dd HH:mm:ss')}"></td> <td> <a class="btn btn-sm btn-primary" th:href="@{/emp/}+${emp.id}">编辑</a> <button th:attr="del_uri=@{/emp/}+${emp.id}" class="btn btn-sm btn-danger deleteBtn">删除</button> </td> </tr>新增和修改Controller代码:
//员工添加 //SpringMvc自动将请求参数和入参对象的属性进行一一绑定 @PostMapping("/emp") public String addEmp(Employee employee){ // System.out.printf("保存的信息"+employee); //保存员工方法 employeeDao.save(employee); //来到员工列表页面 //redirect:表示重定向到一个地址 /代表当前项目路径 //forward:表示转发到一个地址 return "redirect:/emps"; } //修改页面,查出当前员工,在页面回显 @PathVariable 表示该变量不能为空 @GetMapping("/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); //回到页面 return "emp/add"; } //员工修改 @PutMapping("/emp") public String updateEmployee(Employee employee){ // System.out.printf(String.valueOf(employee)); employeeDao.save(employee); return "redirect:/emps"; }新增和修改Html代码:
<form th:action="@{/emp}" method="post"> <!--发送put请求修改员工数据--> <!-- 1、SpringMVC中配置HiddenHttpMethodFilter;(SpringBoot自动配置好的) 2、页面创建一个post表单 3、创建一个input项,name="_method";值就是我们指定的请求方式 --> <input type="hidden" name="_method" value="put" th:if="${emp !=null}"/> <input type="hidden" name="id" th:if="${emp !=null}" th:value="${emp.id}"/> <div class="form-group"> <label>LastName</label> <input name="lastName" type="text" class="form-control" placeholder="zhangsan" th:value="${emp !=null}?${emp.lastName}"> </div> <div class="form-group"> <label>Email</label> <input name="email" type="email" class="form-control" placeholder="zhangsan@atguigu.com" th:value="${emp !=null}?${emp.email}"> </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" th:checked="${emp !=null}?${emp.gender==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" th:checked="${emp !=null}?${emp.gender==0}"> <label class="form-check-label">女</label> </div> </div> <div class="form-group"> <label>department</label> <!--提交的是部门的id--> <select class="form-control" name="department.id"> <option th:selected="${emp !=null}?${dept.id == emp.department.id}" th:value="${dept.id}" th:each="dept:${depts}" th:text="${dept.departmentName}">1</option> </select> </div> <div class="form-group"> <label>Birth</label> <input name="birth" type="text" class="form-control" placeholder="zhangsan" th:value="${emp !=null}?${#dates.format(emp.birth,'yyyy-MM-dd HH:mm:ss')}"> </div> <button type="submit" class="btn btn-primary" th:text="${emp !=null}?'修改':'添加'">添加</button> </form>删除Controller代码:
//删除 @DeleteMapping("/emp/{id}") public String deleteEmployee(@PathVariable("id") Integer id){ employeeDao.delete(id); return "redirect:/emps"; }删除Html代码:
<button th:attr="del_uri=@{/emp/}+${emp.id}" class="btn btn-sm btn-danger deleteBtn">删除</button> <form id="deleteEmpForm" method="post"> <input type="hidden" name="_method" value="delete"/> </form> <script> $(".deleteBtn").click(function(){ //删除当前员工的 $("#deleteEmpForm").attr("action",$(this).attr("del_uri")).submit(); }); </script>