1.测试环境:JDK1.8+Spring boot+idea
2.@RequestMapping注解
@RequestMapping("/employ/show")
public String show(Model model){
Collection <Employee> all = employeeDao.getAll ( );
model.addAttribute ( "employ",all );
//返回到emp/list界面,前提是emp文件夹下要收录list.html
//此外return回送的也可以是@RequestMapping相应的http请求
return "emp/list";
}
在服务器端,/被解析成http://localhost8080/,故该段代码中的请求是http://localhost8080/employ/show
3.@GetMapping注解
@GetMapping("/emp/{id}") //从路径中取参
public String toUpdate(@PathVariable("id")Integer id, Model model){
Employee employee = employeeDao.getEmployById ( id );
Collection <Department> departments = departmentDao.getDepartments ( );
model.addAttribute("emp",employee);
model.addAttribute ( "departments",departments );
return "emp/update";
}
当从路径在取参数时,要注意以下几个部分:
1. {}的使用,而且请求不能是post请求
2.要使用@PathVariable("id")表明自己路径中的参数
3.此处的return 返回的仍然是update界面
4.@PostMapping
@PostMapping("/toupdate")
public String Update(Employee employee){
employeeDao.save(employee);
//此处return 返回的是/employ/show的HTTP请求,即重定向
return "redirect:/employ/show";
}
redirect是在response时使用的,在request采用的是forword转发。
表单请求必须使用post请求,不然会造成个人信息泄露,也可以采用重定向进行解决。
5.运用上述注解时,要在类的上面加上@Controller注解,此外还有类似@RestController注解
二者的区别:
1.@RestController注解相当于@ResponseBody + @Controller
2.@RestController注解,则Controller中的方法无法返回jsp页面或者html,return内容即是json的数据
3.@Controller注解能够配合视图解析器返回数据,如果需要重定向页面,则需要使用Controller