SpringMVC的REST风格的四种请求方式
一、 在HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
·它们分别对应四种基本操作:
1、GET ====== 获 取资源
2、POST ======新建资源
3、PUT======= 更新资源
4、DELETE==== 删除资源
二、REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用。
我们可以通过rest风格占位符方式,利用@PathVariable注解将占位符的值赋给调用方法参数,实现结果:
- /某路径/1 HTTP GET : 得到 id = 1 的 一条数据
- /某路径/1 HTTP DELETE: 删除 id = 1的 一条数据
- /某路径/1 HTTP PUT: 更新id = 1的 一条数据
- /某路径 HTTP POST: 新增一条数据
实现方式(REST风格四种请求方式的调用):
我们通过@RequestMapping映射请求中的method参数实现四种请求方式的调用,以下为示例代码。
GET请求:
1 @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请求:
1 @RequestMapping(value="/student",method=RequestMethod.POST)
public String addStu(Employee employee){
employeeDao.save(employee);
return "redirect:/show" ;
}
DELETE请求:
1 @RequestMapping(value="/student/{id}",method=RequestMethod.DELETE)
public String deleteStu(@PathVariable(value="id") Integer id){
employeeDao.delete(id);
return "redirect:/show" ;
}
PUT请求:
1 @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请求! -->
2 <filter>
3 <filter-name>hiddenHttpMethodFilter</filter-name>
4 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
5 </filter>
6 <filter-mapping>
7 <filter-name>hiddenHttpMethodFilter</filter-name>
8 <url-pattern>/*</url-pattern>
9 </filter-mapping>
2.在表单域中需要携带一个name值为_method,value值为put或者delete的参数,如下所示:
<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值以及携带的参数、请求方式查找匹配函数。
SpringMVC的REST风格的四种请求方式的更多相关文章
- 【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式
概述 之前的文章springmvc使用注解声明控制器与请求映射有简单提到过控制器与请求映射,这一次就详细讲解一下SpringMVC的REST风格的四种请求方式及其使用方法. 你能get的知识点 1.什 ...
- HttpwebClient的四种请求方式
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷. 本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...
- python写http post请求的四种请求体
Web自动化测试(25) HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: 1.appli ...
- Python请求外部POST请求,常见四种请求体
原文http://blog.csdn.net/silencemylove/article/details/50462206 HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-bo ...
- 接口测试中模拟post四种请求数据
https://www.jianshu.com/p/3b6d7aa2043a 一.背景介绍 在日常的接口测试工作中,模拟接口请求通常有两种方法,fiddler模拟和HttpClient模拟. Fidd ...
- httpClient Post例子,Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
httpclient post方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //----1. HttpPost request = new HttpPost(ur ...
- Vue 封装axios(四种请求)及相关介绍(十三)
Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...
- [技术博客]OKhttp3使用get,post,delete,patch四种请求
OKhttp3使用get,post,delete,patch四种请求 1.okhttp简介 okhttp封装了大量http操作,大大简化了安卓网络请求操作,是现在最火的安卓端轻量级网络框架.如今okh ...
- c++ --> c++中四种类型转换方式
c++中四种类型转换方式 c风格转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少缺点, 1)它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向 ...
随机推荐
- jmeter-Java关于MD5加密方法 以及16位32位互转
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...
- CDH版本的oozie安装执行bin/oozie-setup.sh prepare-war,没生成oozie.war?
不多说,直接上干货! 前期博客 Oozie安装部署 问题描述 bin/oozie-setup.sh prepare-war 解决办法 [hadoop@bigdatamaster bin]$ pwd / ...
- 基于android的语音质量评估
最近研究如何通过android评估通话质量,希望获取的参数有:(1)接通时长 (2)掉话次数 (3)语音是否清晰,以下将给出接通时长和掉话次数的详细定义: 接通时长:通话一方开始拨号到另一方开始振铃的 ...
- (转)centos7安装telnet服务
场景:在进行Telnet测试时候,发现无法连接,所以还得把这个软件也安装了 1 CentOS7.0 telnet-server 启动的问题 解决方法: 先检查CentOS7.0是否已经安装以下两个 ...
- (转)Servlet初始化、运行、销毁全部过程
Servlet初始化.运行.销毁全部过程 (2012-07-05 10:41:26) 标签: 杂谈 分类: java基础面试知识 Servlet的生命周期是由servlet的容器来控制的.分为3个阶段 ...
- 百度地图JavaScript API使用
最近在完成优达学城前端开发(入门)课程的P4项目中,要求调用google地图进行交互,项目已提供部分js代码和html代码.但在申请google地图API密钥时由于网络等原因,打不开或者连接超时,所以 ...
- Python 获取当前路径的方法
Python2.7 中获取路径的各种方法 sys.path 模块搜索路径的字符串列表.由环境变量PYTHONPATH初始化得到. sys.path[0]是调用Python解释器的当前脚本所在的目录. ...
- 23. leetcode 169. Majority Element
169. Majority Element Given an array of size n, find the majority element. The majority element is t ...
- OC-UICollectionView实现瀑布流
UICollectionView实现瀑布流 在iOS中可以实现瀑布流的目前已知的有2种方案: 使用UIScrollView自己封装一套,这种方案是应用于iOS6之前的,因为iOS6才出来UIColle ...
- LindAgile~大叔新宠~一个无所不能框架
关于她 LindAgile是大叔在这两年里的新宠儿,它主推模块化,插件化,敏捷化,主要于LindAgile基础项目,LindAgile.Http项目,LindAgile.Modules项目和几个扩展模 ...