一、 在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风格的四种请求方式的更多相关文章

  1. 【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式

    概述 之前的文章springmvc使用注解声明控制器与请求映射有简单提到过控制器与请求映射,这一次就详细讲解一下SpringMVC的REST风格的四种请求方式及其使用方法. 你能get的知识点 1.什 ...

  2. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

  3. python写http post请求的四种请求体

      Web自动化测试(25)  HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: 1.appli ...

  4. Python请求外部POST请求,常见四种请求体

    原文http://blog.csdn.net/silencemylove/article/details/50462206 HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-bo ...

  5. 接口测试中模拟post四种请求数据

    https://www.jianshu.com/p/3b6d7aa2043a 一.背景介绍 在日常的接口测试工作中,模拟接口请求通常有两种方法,fiddler模拟和HttpClient模拟. Fidd ...

  6. 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 ...

  7. Vue 封装axios(四种请求)及相关介绍(十三)

    Vue 封装axios(四种请求)及相关介绍 首先axios是基于promise的http库 promise是什么? 1.主要用于异步计算 2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的 ...

  8. [技术博客]OKhttp3使用get,post,delete,patch四种请求

    OKhttp3使用get,post,delete,patch四种请求 1.okhttp简介 okhttp封装了大量http操作,大大简化了安卓网络请求操作,是现在最火的安卓端轻量级网络框架.如今okh ...

  9. c++ --> c++中四种类型转换方式

    c++中四种类型转换方式   c风格转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少缺点, 1)它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向 ...

随机推荐

  1. 冒泡排序(java)

    冒泡排序是数据结构中很经典的排序算法,我的理解:以从小到大的顺序为例,原数组为arr[4] = {5, 6, 2, 3},从最右面的元素开始与相邻元素两两比较,交换位置(小的放在左边):从代码中也容易 ...

  2. LeetCode题解 343.Integer Break

    题目:Given a positive integer n, break it into the sum of at least two positive integers and maximize ...

  3. css 为元素选择器,css目标状态伪类,结构化选择器,多媒体选择器,清除表默认样式、属性选择器

    伪元素选择器 :before 和 :after 添加的位置 :before --- 第一个子节点 :after --- 最后一个子节点 特点 1.默认是 inline 元素 2.必须包含 conten ...

  4. 深入理解 JavaScript(三)

    强大的原型和原型链 前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型. 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统 ...

  5. Android Studio中添加SlidingMenu

    SlidingMenu是github上面的一个开源库,地址:https://github.com/jfeinstein10/SlidingMenu.git 第一步:先下载: 第二步:添加到as中: 1 ...

  6. TCP/IP 2MSL

    TCP/IP连接包括两个端A和B 假如A首先终止连接,发送FIN,此时A进入FIN_WAIT_1: 收到来自B的ACK:进入FIN_WAIT_2,等待接收对方FIN,如果收到,进入2MSL状态 收到来 ...

  7. Redis从单机到集群,一步步教你环境部署以及使用

    Redis作为缓存系统来说还是很有价值的,在大数据方向里,也是需要有缓存系统的.一般可以考虑tachyon或者redis,由于redis安装以及使用更简单,所以还是优先考虑了它.那么在一些场景下为了保 ...

  8. ubuntu系统普通用户sudo命令执行报错解决方案

    通过adduser user1命令创建普通用户,且使该用户具有sudo权限(将该新用户user1添加到sudo或root用户组中,或者修改/etc/sudoer文件),但是依然无法执行sudo指令,会 ...

  9. Apache崩掉:为进程配置合适的线程数

    放假以来,服务器Apache二次崩掉了,不能再拖了,找bug解决: 崩掉的具体状况是,服务器出现弹框显示:Apache停止工作: 顺手关掉这个可恶的小弹框,世界就清静了,服务器正常运行: 具体问题: ...

  10. SQLPlus命令

    对于Oracle数据库操作主要使用的是命令行方式,而所有的命令都使用sqlplus完成,对于sqlplus有两种形式. 一种是dos风格的sqlplus:sqlplus.exe; 另一种是window ...