处理请求都在@Controller 标注的类中处理
显示所有的员工信息
页面使用超链接跳转:< a th:href="@{/emps}">员工信息< /a >
后台页面的处理: 方法中传入的参数 Map map 和Model model 都回返回页面(在request 域中);可以直接在页面上使用key 值获取对应的值
@GetMapping("/emps")
public String Emps(Model model){
Collection<Employee> list = employeedao.getAll();
//将数据返回页面进行共享数据放在Model 或者是Map 中都是在request 域中的
model.addAttribute("emps",list);
//thymeleaf 执行默认拼串
//classpath:/templates/xxx .html
return "emp/list";
}
员工信息添加
先来到添加页面-----一个表单
表单提交所有的信息:
<form th:action="@{/emp}" method="post">
请求的uri 请求的方式 post
后台处理/emp 请求:
SpringMvc 会自动的将请求参数和对象的属性进行一一绑定;要求:参数的名字和javabean 中的属性名一致
也就是说页面提交每一个数据的name 属性的值,要和javaBean 中的属性名保持一致,才能进行绑定
@PostMapping("/emp")
public String AddEmp(Employee employee){ 对提交的数据自动进行疯转
employeedao.save(employee); 保存员工
return "redirect:/emps"; 重定向到员工信息展示的页面
}
在写登陆页面的时候有一个小坑:页面提交时间数据格式多样;/ - .
SpringMvc 将页面提交的值转化为指定的类型,默认是按照2017/03/24 样式转化,如果要修改这种默认转化格式;配置:spring.mvc.date-format=yyyy-mm-dd 就会按照2017-03-24 的格式转化
员工信息修改
添加和修改的页面共用
员工信息的修改也先要将信息回显到页面(表单),然后修改内容将表单提交
修改回显和删除信息都要传递员工的id 才知道修改的是谁的
员工添加和员工信息修改页面是共用的,所以在使用的时候要区分,到底是添加还是修改。修改页面的时候会传入一个emp 对象;回显数据的时候要判断。添加和修改的表单提交方式也不一样也要进行判断
跳转到回显页面: 要携带员工信息的id 在页面获得相关信息显示
<a class="btn btn-sm btn-primary" th:href="@{/emp/}+${emp.id}">编辑</a>
后台的处理:
@GetMapping("/emp/{id}")
public String toEmp(@PathVariable("id") Integer id, Model model){ 获取路径上携带的数据
Employee employee =employeedao.get(id);
model.addAttribute("emp",employee);
Collection<Department> list = departmentdao.getDepartments();
model.addAttribute("departs",list);
//添加和修改的页面共用
return "emp/add";
}
页面上修改后的信息提交:
页面的回显要传给页面一个mep 对象;在这里添加和修改的页面二合一;所以要进行判断(emp?==null)
设置回显值的时候要判断mep!=null(是修改回显)例如:
th:value="${emp!=null}?${emp.lastName}
当页面上的emp 对象不为空的时候,才会执行他的回显值为 获取的emp.lastname;所有的元素的回显都要这样判断
添加元素和修改元素的表单提交uri 和方式是不一样的:
<form th:action="@{/emp}" method="post"> 员工添加的请求和方式
员工修改的请求和方式:
<!--发送put 请求-->
<!--
1.springMVC 配置 HiddenHttpMenthodFilter (这在springboot 自动完成)
2.创建一个post 表单
3.创建一个put 向,name="_method" 他的值就是我们指定的提交数据的方式
-->
<input type="hidden" name="_method" th:value="put" th:if="${emp!=null}"> 改变提交方式
<!--if 进行判断只有判断成立,这个标签才会生成-->
<input type="hidden" name="id" th:if="${emp!=null}" th:value="${emp.id}" >
传递员工的id ,修改的时候不会填写和显示id
后台的数据处理:
@PutMapping("/emp")
public String UpdataEmp(Employee employee){ 自动封装信息
employeedao.save(employee); 调用员工的修改方法
return "redirect:/emps";
}
获取路径信息:xxxMapping("/emp/{id}")
public String toEmp(@PathVariable(“id”) Integer id, Model model)
修改表单的提交方式:
< input type=“hidden” name="_method" th:value=“put” th:if="${emp!=null}"> 改变提交方式
元素的删除
点击删除提交员工id 创建一个表单提交要修改表单提交的方式
a 标签的提交方式Get 表单的提交方式是可以修改的
使用js 的方式提交删除的表单:
<!--删除,删除的员工信息的提交地址每一个是不一样的-->
<button th:attr="dele_uri=@{/emp/}+${emp.id}" class="btn btn-sm btn-danger deletebtn" >删除</button>
表单:
<form id="deleEmp" th:method="post">
<input type="hidden" name="_method" th:value="delete">
</form>
js 触发函数:
<script>
<!--使用js 的方式提交表单-->
$(".deletebtn").click(function () {
//删除指定员工的信息
$("#deleEmp").attr("action",$(this).attr("dele_uri")).submit();
return false;
});