1、请求方式的URL路径映射
组合注解
2、基于Ant风格的URL路径映射
代码测试
@Controller
@RequestMapping("/ant")
public class AntController {
@RequestMapping("/ant1?")
@RequestMapping("/ant2/*.do")
@RequestMapping("/*/ant3")
@RequestMapping("/**/ant4")
@RequestMapping("/ant5/**")
}
3、基于RESTful风格的URL路径映射
3.1、概念
RESTful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁、更有层次,更易于实现缓存等机制。安全
RESTful风格在HTTP请求中,通过GET(查询)、POST(新增)、PUT(更新)、DELETE(删除) 4个动词对应的基本请求操作
功能:
资源:互连网所有的事物都可以被抽象为资源
资源操作:
@GetMapping():匹配GET方式的请求 获取资源
@PostMapping:匹配POST方式的请求 新建资源
@PutMapping:匹配PUT方式的请求 更新资源
@DeleteMapping:匹配DELETE方式的请求 删除资源
@PatchMapping:匹配PPATCH方式的请求
3.2、传统方式操作资源
通过不同的参数来实现不同的效果!方法单一
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
3.3、使用RESTful操作资源
可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
代码测试
@Controller
@RequestMapping("/user")
public class RESTfulController {
// 根据@PathVaribale注解获取路径中的参数
@GetMapping("/{name}/{id}")
public String findById(@PathVariable("name") String name, @PathVariable("id") String id) {
System.out.println("根据id查询:" + id + ",名字为:" + name);
return "success";
}
// @RequestMapping(method = RequestMethod.POST)
@PostMapping
public String add() {
System.out.println("新增数据");
return "success";
}
@DeleteMapping("/{name}/{id}")
@ResponseBody
public String deleteById(@PathVariable("name") String name,@PathVariable("id") String id) {
System.out.println("根据id删除:" + id);
return name;
}
@PutMapping("/{id}")
public String updateById(@PathVariable("id") String id) {
System.out.println("根据id修改:" + id);
return "success";
}
}
思考:使用路径变量的好处?
- 使路径变得更加简洁
- 获得参数更加方便,框架会自动进行类型转换
- 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,则路径与方法不匹配,而不会是参数转换失败