RestFul风格案例

  • 理解
  • 一、原则:通过四种不同的请求方式来表示CRUD操作
    • 问题:页面请求只支持get/post方式,并不支持其他方式,如何处理?
  • 二、实际操作时代码
    • 1.html
    • 2.handler
    • 3.想要修改_method用其他的name替换,如何做?
      • 解决:
        • 实现思路:(重写底层的规则)

理解

请求的路径相同,根据method(提交方式)进行区分是调用哪个方法

一、原则:通过四种不同的请求方式来表示CRUD操作

请求方式有8中,现在只使用的是其中4种:
get【查询】
post【保存/新增】
put 【修改】
delete【删除】

问题:页面请求只支持get/post方式,并不支持其他方式,如何处理?

解决:根据隐藏参数将post/get转为其他几种请求方式

post -------> RequestMethod.POST
get --------> RequestMethod.GET
post --------> delete-------> RequestMethod.DELETE
post --------> put----------->RequestMethod.PUT

<input type=“hidden” name="_method" value=“post/get/put/delete…”/>

注:ResutFul默认被底层禁用,需要开启才能实现以上的转换,否则请求方式都会为post/get
具体操作,在application.properties中设置
(以下代码参照于package org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration类)

spring.mvc.hiddenmethod.filter.enabled=true

二、实际操作时代码

1.html

代码如下(示例):

注意:转其他请求方式时form的method属性用post,用get可能会无效

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/userManager" method="get"><input type="hidden" name="_method" value="get"/><input type="submit" value="get提交"/></form><form action="/userManager" method="post"><input type="hidden" name="_method" value="post"/><input type="submit" value="post提交"/></form><form action="/userManager" method="post"><input type="hidden" name="_method" value="put"/><input type="submit" value="put提交"/></form><form action="/userManager" method="post"><input type="hidden" name="_method" value="delete"/><input type="submit" value="delete提交"/></form>
</body>
</html>

2.handler

代码如下(示例):

@Controller
public class UserManagerHandler {@GetMapping("/userManager")@ResponseBodyprivate String searchUserManager(){return "Search Data...";}@PostMapping("/userManager")@ResponseBodyprivate String savehUserManager(){return "Save Data...";}@PutMapping("/userManager")@ResponseBodyprivate String updateUserManager(){return "Update Data...";}@DeleteMapping("/userManager")@ResponseBodyprivate String deleteUserManager(){return "Delete Data...";}
}

3.想要修改_method用其他的name替换,如何做?

解决:

实现思路:(重写底层的规则)

参照HiddenHttpMethodFilter类。将其放入容器中管理,通过此类中的setMethodParam("")方法进行覆盖掉_method即可。具体步骤如下:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.HiddenHttpMethodFilter;/*** @author liucheng* @version 1.0* @date 2021-03-18 21:39* 1.创建一个配置bean*/
@Configuration(proxyBeanMethods = true)
public class SpringBootConfigure {/*** 2.创建一个返回类型为HiddenHttpMethodFilter的方法,通过setXXX重新定义请求参数的规则* 加入@Bean将其放入容器中管理* @return HiddenHttpMethodFilter*/@Beanpublic HiddenHttpMethodFilter setMethod(){HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();hiddenHttpMethodFilter.setMethodParam("_methodNew");return hiddenHttpMethodFilter;}
}

此时,HTML中原来的name="_method"已经失去了作用,需改为“_methodNew”

<input type=“hidden” name=_methodNew" value=“put”/>

restful风格案例相关推荐

  1. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容器简 ...

  2. Day73.SpringMVC案例:影院系统、使用Restful风格重构

    目录 springMVC:影院系统 一.准备SpringMVC环境 二.首页显示所有电影 三.影院案例-删除指定电影信息 四.影院案例-添加新电影 五.影院案例-修改指定电影信息 六.总结 七.Res ...

  3. RESTful 风格(详细介绍 + 案例实现)

    这里写目录标题 RESTful 入门 一.什么是 API(应用程序接口) 二.传统模式和前后端分离模式对比 1. 传统开发模式 2. 前后端分离模式 三.RESTful 风格 1. 概念 2. 资源 ...

  4. java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!

    点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...

  5. layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)

    点击上方"IT咸鱼",星标公众号每天分享技术栈,开发工具等 简单急记几个小点:RequestMapping注解的使用和里面涉及到的参数用途和写法 @RequestMapping(& ...

  6. springMVC_07乱码及restful风格

    乱码的解决 通过过滤器解决乱码问题:CharacterEncodingFilter 配置web.xml文件 <filter><filter-name>encoding</ ...

  7. restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

    Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...

  8. 第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍

    一. 原生态接口 1. 从默认路由开始分析 在WebApiConfig.cs类中的Register方法中,我们可以看到默认路由如下: 分析:请求地址在 controller 前面需要加上 api/,c ...

  9. Restful风格的编程

    Restful风格的编程 1. Restful简介 2.查询用户以及用户详情 2.1常用注解 2.2查询用户详情 3.处理创建请求 3.1@RequestBody注解 3.1.1用途 3.1.2语法规 ...

最新文章

  1. 四:(之六_镜像发布)Dockerfile语法梳理和实践
  2. [SDOI2015]约数个数和【莫比乌斯反演】
  3. python解决四舍五入问题
  4. 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例
  5. Mysql实战:主从同步
  6. 22 年过去了,Java 依然是开发者最爱的编程语言!
  7. java数字高低呼唤_记录某电话交换台 5 分钟内接到的呼唤次数,则样本空间 S={0,1,2, … ,n, … }_Java答案_学小易找答案...
  8. 毕设题目:Matlab元胞自动机病毒仿真
  9. mysql native筛选_Navicat远程连接MySQL8,必知防坑策略
  10. 同一局域网入侵_如何入侵同一局域网的电脑
  11. 转:机器人工程师学习计划(YY硕)(后悔自己没有早点看到强力推荐)
  12. JS获取本机IP地址的方法
  13. 感冒为什么会流鼻涕?
  14. JQuery实现表单验证并使错误数据其无法提交到数据库
  15. 快学Scala 学习笔记-1: (第一章到第三章)
  16. 服务器文件变更监控,监控文件夹变化并ftp到服务器
  17. cfa三级真题和mock_CFA考试历年官方mock题从哪里找?怎么下载?
  18. 微信小程序 wux-filterbar动态更新分类
  19. python十六进制和十进制相互转换以及由补码求原码
  20. 手机验证短信设计与代码实现

热门文章

  1. eclipse 在 Linux中常用命令,持续更新....
  2. Arrays和Collection之间的转换
  3. 【译】SQL Server误区30日谈-Day8-有关对索引进行在线操作的误区
  4. 悟透delphi 第十章 操作界面与操作逻辑
  5. django安装_pip安装Django提示ssl不可用?如何解决?
  6. php 定时脚本执行wget无效_写了个Bug,误执行rm fr /*,瞬间背后一凉!
  7. csrf漏洞防御方案_变量覆盖漏洞利用及防御方案
  8. php坐标轴取整,PHP取整函数:ceil,floor,round,intval的区别详细解析
  9. 放在每个定义前的html语言,html基础
  10. 杭十四计算机教室,杭十四中学生做了个图书馆智能机器人