天天看点

SpringMVC——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请求方式过滤。

SpringMVC——REST风格的URL

(web.xml 文件中配置 HiddenHttpMethodFilter 过滤器)

2、写上几个请求处理方法(当然,你也可以先写好 jsp 页面)

  

SpringMVC——REST风格的URL

                            (各处理请求的目标方法,处理不同请求)

3、写上 jsp 页面

SpringMVC——REST风格的URL

                    (jsp 页面)

4、依次发起请求

          

SpringMVC——REST风格的URL

  小结:到这里,整个 REST 测试就结束了,当然,这只是一个简单的测试。从上面的请求路径可以看出: REST 风格的 URL 和之前的 URL 是有一定区别的。之前的 URL 无非就是  IP:port/项目名/delete?id=100  这样的格式。这两者很明显 REST 风格的更优雅,也更符合标准。

相关源码查看

首先看看我们配置的过滤器吧,主要看看其中的两个属性和一个方法:

SpringMVC——REST风格的URL

                          (两个重要属性)

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

SpringMVC——REST风格的URL

                            (doFilterInternal() 方法)   

继续阅读