@PathVariable 注解 说明

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

@PathVariable 映射 URL 绑定的占位符

  • 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
  • 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。

实例: 
SpringMVCTest.java

 

//@PathVariable可以用来映射URL中的占位符到目标方法的参数中
@RequestMapping("/testPathVariable/{id}")public String testPathVariable(@PathVariable("id") Integer id){System.out.println("testPathVariable:"+id);return SUCCESS;}

index.jsp

<a href="springmvc/testPathVariable/1">testPathVariable</a>

REST

  • REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用
  • 资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要获取这个资源,访问它的URI就可以,因此 URI 即为每一个资源的独一无二的识别符。
  • 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。
  • 状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生状态转化State Transfer)。而这种转化是建立在表现层之上的,所以就是 表现层状态转化。具体说,就是 HTTP 协议里面,四个表示操作方式的动词:GETPOSTPUTDELETE。它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。

示例: 
- /order/1 HTTP GET :得到 id = 1 的 order 
- /order/1 HTTP DELETE:删除 id = 1的 order 
- /order/1 HTTP PUT:更新id = 1的 order 
- /order HTTP POST:新增 order

HiddenHttpMethodFilter:浏览器 form 表单只支持 GET与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与DELETE 请求。

--------------------------------------------------------------------------------------------------------------

 

 

在web.xml中配置HiddenHttpMethodFilter

web.xml

 

<!--配置org.springframework.web.filter.HiddenHttpMethodFilter:可以把POST请求转换成DELETE或者POST请求--><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中测试相应的方法

SpringMVCTest.java

 

/** 如何发送PUT和DELETE请求* 1.需要配置HiddenHttpMethodFilter* 2.需要发送POST请求* 3.需要发送POST请求时携带一个name="_method"的隐藏域,value值为DELETE或者PUT* * 在springmvc框架中通过@PathVariable注解来获取id值* *///get请求@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)public String testRest(@PathVariable Integer id){System.out.println("testRest Get"+id);return SUCCESS;}//post请求@RequestMapping(value="/testRest",method=RequestMethod.POST)public String testRest(){System.out.println("testRest POST");return SUCCESS;}//delete请求@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)public String testRestDelete(@PathVariable Integer id){System.out.println("testRest DELETE"+id);return SUCCESS;}//delete请求@RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)public String testRestPut(@PathVariable Integer id){System.out.println("testRest PUT"+id);return SUCCESS;}

index.jsp中的写法

index.jsp

 

 

 

  <a href="springmvc/testRest/1">Test Rest Get</a><br/><form action="springmvc/testRest" method="post"><input type="submit" value="TestRest Post"/></form><br/><form action="springmvc/testRest/1" method="post"><input type="hidden" name="_method" value="DELETE"/><input type="submit" value="TestRest DELETE"/></form><br/><form action="springmvc/testRest/1" method="post"><input type="hidden" name="_method" value="PUT"/><input type="submit" value="TestRest PUT"/></form><br/>

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据清洗,筛选

本人在私募&#xff0c;负责数据收集以及清洗&#xff0c;就是包括收集数据&#xff0c;按照领导要求&#xff0c;选出满足条件的数据&#xff0c;用于校验策略是否正确。 现在就在这进行代码上传&#xff0c;即用于自己总结整理&#xff0c;也用于供大家学习了解&#xff0c;实…

JS媒体查询

样式的改变使用C3的媒体查询 行为和功能的改变使用JS的媒体查询 matchMedia()方法参数可写任何一个CSSmedia规则&#xff0c;返回的是新的MediaQueryList对象&#xff0c;该对象有两个属性 media&#xff1a;查询语句的内容matches&#xff1a;检查查询结果&#xff0c;返回boo…

Ruby初步介绍

Ruby是脚本语言,与传统的C, Java不同的是,它不需要经过编译,而是直接可以被执行 Ubuntu下执行第一个ruby脚本 print("Hello David, This is your first Ruby script.\n") davidubuntu:~/RubyTrain/Basic$ ruby Hello.rb 运行结果: Hello David, This is your first R…

C/C++ main用法总结

今天看到一篇很好的文章&#xff0c;详细的讲解了C、C中的main函数&#xff0c;以及returne的用法。转载过来大家一起分享下。转自&#xff1a;http://www.cnblogs.com/ct6816678/archive/2012/10/26/2741824.htmlreturn是C预定义的语句&#xff0c;当return语句提供了一个值时…

如何将数据写入excel中,而不覆盖原有数据

之前直接用pandas库&#xff0c;然后to_excel&#xff08;&#xff09;&#xff0c;结果直接将原始数据直接覆盖&#xff0c;幸亏有备份。&#xff08;友善提醒&#xff0c;做数据处理之前&#xff0c;先将数据本地备份一份&#xff0c;确认完全没有问题&#xff0c;然后还是备…

对List集合中的元素进行排序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 ollections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序&#xff0c;这就需要用到 Java中提供的对集合…

Jmeter----5.1 设置中文

注意&#xff1a;JMeter5需要Java8 以上&#xff0c;本文环境是Win7 64位 设置永久默认汉化&#xff1a;在Jmeter的安装目录下的bin目录中找到 jmeter.properties这个文件&#xff0c;用文本编辑器打开。在#languageen下面插入一行languagezh_CN 这样&#xff0c;再次打开Jmete…

pandas计算移动平均值

本人今天遇到遇到一个任务&#xff0c;计算同月份合约当天各合约总持仓量的移动平均值。立刻写下了这个函数&#xff1a; group df.groupby([合约系列,date]) f pd.DataFrame(group[持仓量].sum().rolling(20).mean()) 上交后&#xff0c;提出要求&#xff0c;不行&#xff…

一个优美的架构需要考虑的几个问题

随着公司的架构逐步发展&#xff0c;越来越多的问题被提出来&#xff0c;也发现一个良好的技术架构需要考虑的问题 1 架构的可扩展性 这里面又包括以下几个方面 水平垂直可拆分服务无状态数据可缓存可异步处理&#xff08;提高性能&#xff09;可复制&#xff08;提高效率&…

HSTS的来龙去脉

前言 安全经常说“云、管、端”&#xff0c;“管”指的是管道&#xff0c;传输过程中的安全。为了确保信息在网络传输层的安全&#xff0c;现在很多网站都开启了HTTPS&#xff0c;也就是HTTPTLS&#xff0c;在传输过程中对信息进行加密。HTTPS使用了对称加密、非对称加密、消息…

利用XShell上传、下载文件(使用sz与rz命令) 超实用!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 rz、sz 安装方式&#xff1a;sz/rz命令安装方式 借助XShell&#xff0c;使用linux命令sz可以很方便的将服务器上的文件下载到本地&#…

quantaxis使用docker安装,解决了一个很奇特的问题

之前使用docker-compose pull 更新之后&#xff0c;使用docker-compose up进行安装。出现 qaweb显示address already in web,cmd中显示Starting qa_web is wrong。之前一直觉得什么毛病啊&#xff0c;试了很多办法。 比如关闭8010接口&#xff1a; netstat -ano|findstr “801…

基础数学落后与高端人才流失

这个话题令人感到很痛苦&#xff0c;也很无奈。我本不该提起这个话题。但是&#xff0c;无穷小微积分专业网站不久即将开通&#xff0c;我不得不认真备课&#xff0c;仔细研读 J.Keisler 的“初等微积分”电子版教材。在研究该教材内容的过程中&#xff0c;参照国内的《高等数学…

Datawhale MySQL 训练营 Task2 查询语句

目录 MySQL 管理MySQL 用户管理 参考数据库管理SQ查询语句1. 导入示例数据库&#xff0c;教程 MySQL导入示例数据库2. 查询语句 SELECT3. 筛选语句 WHERE &#xff0c;过滤4. 分组语句 GROUP BY5. 排序语句 ORDER BY6. 函数作业总结MySQL 管理 MySQL版本 8.0.15 MySQL 用户管理…

记录一个相当好用的反编译工具下载地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 下载地址见&#xff1a;https://download.csdn.net/download/stoneepigraph/9817144 下载后直接双击该程序就可以用&#xff0c;十分方便…

2021-07-09

#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd from datetime import datetime import backtrader as bt import matplotlib.pyplot as plt %matplotlib auto #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.sans…

Patrick Wyatt:代码没问题 程序却有bug?

摘要&#xff1a;相信每个程序员都遇到过“不可能的bug”&#xff0c;代码没有任何问题却出错了&#xff01;问题肯定是出在操作系统上&#xff0c;或者是工具&#xff0c;甚至是因为计算机硬件的问题&#xff1f;&#xff01;&#xff1f;当然&#xff0c;魔兽之父也不例外&am…

视差滚动(Parallax Scrolling)插件补充

13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件。该插件提供给你一些回调函数&#xff0c;当新的section出现在可视区并且并且处理快照时被调用&#xff0c;所以你可以轻松的继承它来自定义导航菜单或更多的东西。下面是一个例子&#x…

主流浏览器内核

IE trident Firefox Gecko Google chrome Webkit/blink Safar i Webkit Opera presto转载于:https://www.cnblogs.com/codezhao/p/10451030.html

Quartz使用总结、Cron表达式

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Quartz可以用来做什么&#xff1f; Quartz是一个任务调度框架。比如你遇到这样的问题 想每月25号&#xff0c;信用卡自动还款想每年4月…