springmvc之HiddenHttpMethodFilter配置使用POST、GET、DELETE、PUT请求
时间:2022-07-23
本文章向大家介绍springmvc之HiddenHttpMethodFilter配置使用POST、GET、DELETE、PUT请求,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
REST:即资源表现层状态转化。
资源:网络上的一个实体。每种资源对应一个特定的URL。
表现层:把资源具体展现出来的形式,例如文本以txt、html、xml、json或二进制的形式表示。
状态转化:每发出一个请求,就代表了客户端和服务端的一种交互过程,而HTTP请求是无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器端,必须通过某种手段。而这种转化是建立在表现层之上的,所以就是表现层状态转化。具体说,就是HTTP协议里,四个表示操作方式的动词:GET、POST、PUT、DELETE。
以CURD为例,REST风格的URL:
新增:/order Post
修改:/order/1 Put 以前:update?id=1
删除:/order/1 Delete 以前:selete?id=1
获取:/order/1 Get 以前:get?id=1
如何发送PUT和DELETE请求呢?
(1)需要在web.xml中配置HiddenHttpMethodFilter。
(2)需要发送POST请求。
(3)在发送POST请求时需要发送name="_method"的隐藏域,值为DELETE或PUT。
在springmvc中的目标方法中如何得到发过去的参数,比如id呢?
使用@PathVariable注解。
在web.xml中:
<!--
配置 org.springframework.web.filter.HiddenHttpMethodFilter
-->
<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>
SpringmvcTest.java
package com.gong.springmvc.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/springmvc")
@Controller
public class SpringmvcTest {
private static final String SUCCESS = "success";
@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
public String testGet(@PathVariable("id") Integer id) {
System.out.println("get-->"+id);
return SUCCESS;
}
@RequestMapping(value="/testRest",method=RequestMethod.POST)
public String testPost() {
System.out.println("post-->");
return SUCCESS;
}
@RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)
public String testPut(@PathVariable("id") Integer id) {
System.out.println("put-->"+id);
return SUCCESS;
}
@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
public String testDelete(@PathVariable("id") Integer id) {
System.out.println("delete-->"+id);
return SUCCESS;
}
}
index.jsp
<a href="springmvc/testRest/1">Get</a>
<br><br>
<form action="springmvc/testRest" method="POST">
<input type="submit" value="submit">
</form>
<br><br>
<form action="springmvc/testRest/1" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="delete">
</form>
<br><br>
<form action="springmvc/testRest/1" method="POST">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="put">
</form>
<br><br>
启动ttomcat服务器之后:
点击相应的提交方式:
在控制台会输出:
说明是调用了不同的请求方式 。
- 腾讯云GAME-TECH沙龙干货回顾:三七互娱游戏全球化运营心得分享
- 《实现模式》读书总结
- 腾讯云 GAME-TECH 沙龙干货回顾:Eyougame 海外发行实践分享
- 腾讯 AI Lab 副主任俞栋:过去两年基于深度学习的声学模型进展
- 白辉(七公):电商转型难题,看云如何破题
- 《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结
- 5分钟教你玩转 sklearn 机器学习(上)
- WebSocket系列之socket.io
- Python 数据分析学习笔记
- ERP管理软件系统设计方案
- 腾讯云GAME-TECH沙龙——全球同服游戏语音解决方案
- 【Scikit-Learn 中文文档】双聚类 - 无监督学习 - 用户指南 | ApacheCN
- ASP.NET MVC的客户端验证:jQuery的验证
- RxJava系列一
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中的EXT系列文件系统格式详解
- Linux中hexdump命令用法
- CentOS7挂载新数据盘的完整步骤
- Linux下安装Keepalived及原理分析
- centos6搭建gitlab的方法步骤
- Linxu服务器上安装JDK 详细步骤
- linux 不改变目录结构移动 home 目录到新分区的操作方法
- ubuntu14.04安装opencv3.0.0的操作方法
- Linux中让alias设置永久生效的方法详解
- Centos系统下“无法打开并写入文件”问题的解决
- 如何在Linux下设置录音笔时间
- Linux下ZooKeeper分布式集群安装教程
- CentOS 6.5中利用yum搭建LNMP环境的步骤详解
- Linux下Kafka分布式集群安装教程
- Centos下升级Python及Mongodb驱动安装问题