SpringMVC的REST風格的四種請求方式總結
一、 在HTTP 協(xié)議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。
它們分別對應四種基本操作:
1、GET ====== 獲 取資源
2、POST ======新建資源
3、PUT======= 更新資源
4、DELETE==== 刪除資源
二、REST:即 Representational State Transfer。(資源)表現(xiàn)層狀態(tài)轉化。是目前最流行的一種互聯(lián)網軟件架構。它結構清晰、符合標準、易于理解、擴展方便, 所以正得到越來越多網站的采用。
我們可以通過rest風格占位符方式,利用@PathVariable注解將占位符的值賦給調用方法參數(shù),實現(xiàn)結果:
/某路徑/1 HTTP GET : 得到 id = 1 的 一條數(shù)據
/某路徑/1 HTTP DELETE: 刪除 id = 1的 一條數(shù)據
/某路徑/1 HTTP PUT: 更新id = 1的 一條數(shù)據
/某路徑 HTTP POST: 新增一條數(shù)據
實現(xiàn)方式(REST風格四種請求方式的調用):
我們通過@RequestMapping映射請求中的method參數(shù)實現(xiàn)四種請求方式的調用,以下為示例代碼。
GET請求:
@RequestMapping(value="/student",method=RequestMethod.GET) public ModelAndView toAddPage(){ ModelAndView mView=new ModelAndView(); mView.addObject("employee",new Employee()); mView.setViewName("add-stu"); mView.addObject("departments", departmentDao.getDepartments()); return mView; }
POST請求:
@RequestMapping(value="/student",method=RequestMethod.POST) public String addStu(Employee employee){ employeeDao.save(employee); return "redirect:/show" ; }
DELETE請求:
@RequestMapping(value="/student/{id}",method=RequestMethod.DELETE) public String deleteStu(@PathVariable(value="id") Integer id){ employeeDao.delete(id); return "redirect:/show" ; }
PUT請求:
@RequestMapping(value="/student",method=RequestMethod.PUT) public String Update(@RequestParam(value="id")Integer id,Employee employee){ employeeDao.save(employee); return "redirect:/show" ; }
三、將POST請求轉化為put請求和delele請求
1.在web.xml文件中配置HiddenHttpMethodFilter過濾器:
<!-- 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的參數(shù),如下所示:
<form action="" method="post"> <input type="hidden" name="_method" value="delete"> </form>
<form:form action="${pageContext.request.contextPath}/student" method="post" modelAttribute="employee"> <c:if test="${empty employee.id }"> 姓名:<form:input path="lastName"/><br> </c:if> <c:if test="${!empty employee.id }"> 姓名:<form:input path="lastName" readonly="true"/><br> <form:hidden path="id"/> <input type="hidden" name="_method" value="put"> </c:if> 郵箱:<form:input path="email"/><br> <% Map<String,Object>map=new HashMap<String,Object>(); map.put("1","Male"); map.put("0", "Female"); request.setAttribute("genders", map); %> 性別:<form:radiobuttons path="gender" items="${genders}"/><br> 部門:<form:select path="department.id" items="${departments}" itemValue="id" itemLabel="departmentName"></form:select><br> <input type="submit" value="提交"> </form:form>
最后在Controller層調用即可。根據@RequestMapping的value值以及攜帶的參數(shù)、請求方式查找匹配函數(shù)。
以上這篇SpringMVC的REST風格的四種請求方式總結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Java的Hibernate框架中的Interceptor和Collection
這篇文章主要介紹了Java的Hibernate框架中的Interceptor和Collection,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2016-01-01Java實現(xiàn)自定義LinkedList類的示例代碼
LinkedList類跟ArrayList類不同,它通過指針以及結點的操作對鏈表進行增刪改查。本文就來和大家分享下Java如何為實現(xiàn)自定義LinkedList類,需要的可以參考一下2022-08-08谷歌二維碼引擎com.google.zxing二維碼生成與解析
這篇文章主要給大家介紹了關于谷歌二維碼引擎com.google.zxing二維碼生成與解析的相關資料,zxing是google開源的二維碼生成和解析工具,需要的朋友可以參考下2023-07-07使用Java開發(fā)實現(xiàn)OAuth安全認證的應用
這篇文章主要介紹了使用Java開發(fā)實現(xiàn)OAuth安全認證的應用的方法,OAuth安全認證經常出現(xiàn)于社交網絡API應用的相關開發(fā)中,需要的朋友可以參考下2015-11-11