1. restful编程风格

1.1 原来的风格

UserController类—save/update/findAll方法
请求路径:
path=”/user/save”——->save
path=”/user/update”——->update
path=”/user/findAll”——->findAll

1.2 restful方式

UserController类—save/update/findAll方法
请求路径:
path=”/user” method=”post” ——> save
path=”/user” method=”put” ——> update
path=”/user” method=”get” ——> findAll
path=”/user/{id}” method=”get” ——> findById(id)

2. restful实现方式

2.1 困难

由于浏览器 form 表单只支持 GET 与 POST 请求,而 DELETE、PUT 等 method 并不支持

2.2 解决方法

2.2.1 使用spring 3.0的过滤器—— HiddentHttpMethodFilter

第一步:在 web.xml 中配置该过滤器。
第二步:请求方式必须使用 post 请求。
第三步:按照要求提供_method 请求参数,该参数的取值就是我们需要的请求方式。

  1. <!-- 保存 -->
  2. <form action="springmvc/testRestPOST" method="post">
  3. 用户名称:<input type="text" name="username"><br/>
  4. <!-- <input type="hidden" name="_method" value="POST"> -->
  5. <input type="submit" value=" 保存 ">
  6. </form>
  7. <hr/>
  8. <!-- 更新 -->
  9. <form action="springmvc/testRestPUT/1" method="post">
  10. 用户名称:<input type="text" name="username"><br/>
  11. <input type="hidden" name="_method" value="PUT">
  12. <input type="submit" value=" 更新 ">
  13. </form>
  1. /**
  2. * post 请求:保存
  3. * @param username
  4. * @return
  5. */
  6. @RequestMapping(value="/testRestPOST",method=RequestMethod.POST)
  7. public String testRestfulURLPOST(User user){
  8. System.out.println("rest post"+user);
  9. return "success";
  10. }
  11. /**
  12. * put 请求:更新
  13. * @param username
  14. * @return
  15. */
  16. @RequestMapping(value="/testRestPUT/{id}",method=RequestMethod.PUT)
  17. public String testRestfulURLPUT(@PathVariable("id")Integer id,User user){
  18. System.out.println("rest put "+id+","+user);
  19. return "success";
  20. }

2.2.2 使用webClient类

2.2.3 给浏览器装插件