SpringMVC笔记(七)RESTFul风格的SringMVC

mac2022-06-30  84

一、REST:

即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。 它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用. HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。 它们分别对应四种基本操作: GET 用来获 取资源, POST 用来新建资源, PUT 用来更新资源, DELETE 用来删除资源。

二、示例:

@Controller @RequestMapping("/rest") public class RestController { @RequestMapping(value="/user/{id}",method=RequestMethod.GET) public String get(@PathVariable("id") Integer id){ System.out.println("get"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.POST) public String post(@PathVariable("id") Integer id){ System.out.println("post"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.PUT) public String put(@PathVariable("id") Integer id){ System.out.println("put"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE) public String delete(@PathVariable("id") Integer id){ System.out.println("delete"+id); return "/hello"; } } 前端URL 请求方式: Controller / user/1 HTTP GET : 请求 method= RequestMethod.GET的方法 / user/1 HTTP DELETE: 请求 method= RequestMethod.DELETE的方法 / user/1 HTTP PUT: 请求 method= RequestMethod.PUT的方法 / userr HTTP POST: 请求 method= RequestMethod.POST的方法

三、浏览器只支持GET和POST请求,如何才能发起DELETE和PUT的请求呢

浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支 持,Spring3.0  添加了一个过滤器----HiddenHttpMethodFilter,

可以将这些请求转换 为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。

1.将POST请求转化为put请求和delele请求的步骤

 1).在web.xml文件中配置:

 

<!-- HiddenHttpMethodFilter过滤器可以将POST请求转化为put请求和delete请求! --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

 

 2)在表单域中需要携带一个name值为_method, value值为put或者delete的参数,如下所示:

<form action="${pageContext.request.contextPath }/user/1" method="post"> <input type="hidden" name="_method" value="put"/> <input type="submit" value="Submit"/> </form> <form action="${pageContext.request.contextPath }/user/1" method="post"> <input type="hidden" name="_method" value="delete"/> <input type="submit" value="Submit"/> </form>

 此时点击Submit按钮,两个表单会分别以put 和delete点的方式进行提交

 2.将<a>标签的请求转换成delete------get转delete <!--一个删除链接,为get请求--> <a class="delete" href="emp/${emp.id}">Delete</a> <!--利用js,将get请求转为DELETE请求--> <script type="text/javascript"> $(function() { alert("hello"); $(".delete").click(function(){ var href=$(this).attr("href"); $("form").attr("action",href).submit(); return false; }); }); </script> <!--DELETE请求细节--> <form action="" method="POST"> <input type="hidden" name="_method" value="DELETE" > </form> <!--接收DELETE请求的细节--> @RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE) public String delete(@PathVariable("id") Integer id){ System.out.print(employeeDao.delete(id)); return "redirect:/emps"; }

 

 

转载于:https://www.cnblogs.com/Actexpler-S/p/7425221.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)