SpringMVC的REST风格的四种请求方式总结

发布时间 - 2026-01-11 03:00:17    点击率:

一、 在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请求:

@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的参数,如下所示:

<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风格的四种请求方式总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# SpringMVC  # REST风格  # SpringMVC RESTFul及REST架构风格介绍  # java开发SSM框架具有rest风格的SpringMVC  # springmvc Rest风格介绍及实现代码示例  # SpringMVC REST风格深入详细讲解  # 四种  # 给大家  # 转化为  # 值为  # 互联网  # 我们可以  # 希望能  # 所示  # 这篇  # 表单  # 最流行  # 小编  # 大家多多  # 是目前  # ModelAndView  # add  # addObject  # public  # employee  # mView 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何将凡科建站内容保存为本地文件?  bootstrap日历插件datetimepicker使用方法  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何在阿里云虚拟服务器快速搭建网站?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel怎么在Blade中安全地输出原始HTML内容  linux top下的 minerd 木马清除方法  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  phpredis提高消息队列的实时性方法(推荐)  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何实现API速率限制?(Rate Limiting教程)  香港服务器部署网站为何提示未备案?  Laravel如何实现数据库事务?(DB Facade示例)  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何快速查询网址的建站时间与历史轨迹?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何批量查询域名的建站时间记录?  原生JS获取元素集合的子元素宽度实例  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel Session怎么存储_Laravel Session驱动配置详解  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何用PHP工具快速搭建高效网站?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  高端建站三要素:定制模板、企业官网与响应式设计优化  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  jQuery 常见小例汇总  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  西安专业网站制作公司有哪些,陕西省建行官方网站?  Python并发异常传播_错误处理解析【教程】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何快速上传建站程序避免常见错误?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在万网开始建站?分步指南解析  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  微信公众帐号开发教程之图文消息全攻略  如何选择PHP开源工具快速搭建网站?