Spring MVC REST 风格的 URL
前言
本文主要内容为 REST 风格的 URL。
REST
REST(Representational State Transfer)。(资源)表现层状态转化。它是一种架构风格,用 url 来访问网络上的资源。
● 资源(Resources):网络上的一个实体,即网络上的一个具体的信息。比如 一段文本、一张图片等。可以用一个 URI 指向它,每个资源对象一个特定的 URI。
● 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层。
● 状态转化(State Transfer):客户端每发出一个请求,就代表客户端和服务器的一次交互。HTTP 协议是一个无状态协议,即所有的状态都保存在服务器。因此,如果客户端想要操作服务器,就必须通过某种手段,让服务器发生 状态转化。而这种转化是建立在表现层之上的,所以就是 表现层状态转化。具体讲就是:HTTP 协议里面四个表示操作的动作:GET、POST、DELETE、PUT,它们分别对应四种基本操作:GET用来获取资源、POST用来创建资源、DELETE用来删除资源、PUT用来更新资源。
使用 REST 风格的 URL
上面的 状态转化 已经提到了需要通过某种手段让服务器发生状态转化。我们还是先看看怎么用,然后再去看看源码吧!
1、配置一个过滤器 HiddenHttpMethodFilter
(该过滤器是 Spring3.0 添加的)。见名知意:隐藏的Http请求方式过滤。

(web.xml 文件中配置 HiddenHttpMethodFilter 过滤器)
2、写上几个请求处理方法(当然,你也可以先写好 jsp 页面)

(各处理请求的目标方法,处理不同请求)
3、写上 jsp 页面

(jsp 页面)
4、依次发起请求

(jsp页面效果) (控制台输出)
请求路径示例:
小结:到这里,整个 REST 测试就结束了,当然,这只是一个简单的测试。从上面的请求路径可以看出: REST 风格的 URL 和之前的 URL 是有一定区别的。之前的 URL 无非就是 IP:port/项目名/delete?id=100 这样的格式。这两者很明显 REST 风格的更优雅,也更符合标准。
相关源码查看
首先看看我们配置的过滤器吧
主要看看其中的两个属性和一个方法:

(两个重要属性)
上图中的 _method 不陌生吧,在 jsp 页面中我们定义了一个隐藏的文本,表单的名字就是 _method。为什么要定义这个隐藏的文本域呢?看看下面这个方法:

(doFilterInternal() 方法)
上图提到了包装请求,为什么可以包装呢?

(包装类)
好了,以上就是 REST 风格 URL 的基本使用 和 相关源码的查看的。关于 REST 风格的具体用法我会在后面的 关于一个 CRUD 的例子中说明。
PS: 文本存在诸多不足之处,望指出。谢谢!
Spring MVC REST 风格的 URL的更多相关文章
- 【Spring MVC】spring mvc中相同的url请求返回不同的结果
在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...
- Spring MVC DispatcherServlet绑定多种URL
需要学习的内容: http://my.oschina.net/shishuifox/blog/215617 当前的处理方式,在web.xml中配置: <servlet> <servl ...
- spring mvc中获取请求URL
String baseUrl=request.getScheme()+"://"+request.getServerName()+":"+request.get ...
- Spring MVC 基于URL的映射规则(注解版)
好几天没有跟进Spring MVC的学习了,之前看了点源码都忘的差不多了.这次就跟着之前的问题,继续总结下Spring MVC中的小知识. 关于SpringMVC的小demo可以参考这里! url-p ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- Spring MVC应用
Spring MVC简介 1.1 经典三层结构 在JavaEE开发中,几乎全部都是基于B/S架构的开发.那么在B/S架构中,系统标准的三层架构包括:表现层.业务层.持久层.三层架构在我们的实际开发中使 ...
- Spring MVC基础
1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...
- Spring MVC 基础
Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是 ...
- Spring MVC集成Swagger
什么是Swagger? 大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Servi ...
随机推荐
- PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...
- 51nod1446 Kirchhoff矩阵+Gauss消元+容斥+折半DFS
思路: //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using ...
- Unicode gbk gb2312 编码问题 [转载]
原文地址: http://www.cnblogs.com/csn0721/archive/2013/01/24/2875613.html HTML5 UTF-8 中文乱码 <!DOCTYPE ...
- [ SDOI 2011 ] 打地鼠
\(\\\) \(Description\) 给出一个\(N\times M\)的矩阵,你可以自由确定一个\(R\times C(R,C>0)\)的矩形,使得可以多个用矩形覆盖整个矩阵,覆盖的定 ...
- python框架之Flask基础篇(二)-------- 数据库的操作
1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...
- Android sensor 系统框架 (二)
连载上一篇http://www.cnblogs.com/hackfun/p/7327320.html (D) 如何加载访问.so库 在前一篇博客http://www.cnblogs.com/hackf ...
- Win32子窗口的创建
本文主要是在一个主窗口下创建一个子窗口.主窗口有一个菜单,菜单下只有设置一个选项,点击设置选项,弹出设置界面,点击设置界面关闭则关闭.我在开发的时候遇到两个问题,第一就是一点设置关闭就整个应用都关了, ...
- Ajax——瀑布流
基本概念 1.宽度是一致的,高度上参差不齐 2.新增内容优先放置在最矮的地方 核心难点 1.用一个数组存储每列的高度值 2.新值添加到值最小索引上,每次替换更新数组 插件使用 1.$.fn.exten ...
- JS——隐式全局变量
在函数中,var声明的是局部变量,不带var的是隐式全局变量 <script> function fn() { var a = b = c = 0;//a是局部变量,b.c是全局变量 va ...
- linux 汇编 - 函数调用
Linux 汇编-函数调用 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !i ...