前言

  本文主要内容为 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的更多相关文章

  1. 【Spring MVC】spring mvc中相同的url请求返回不同的结果

    在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...

  2. Spring MVC DispatcherServlet绑定多种URL

    需要学习的内容: http://my.oschina.net/shishuifox/blog/215617 当前的处理方式,在web.xml中配置: <servlet> <servl ...

  3. spring mvc中获取请求URL

    String baseUrl=request.getScheme()+"://"+request.getServerName()+":"+request.get ...

  4. Spring MVC 基于URL的映射规则(注解版)

    好几天没有跟进Spring MVC的学习了,之前看了点源码都忘的差不多了.这次就跟着之前的问题,继续总结下Spring MVC中的小知识. 关于SpringMVC的小demo可以参考这里! url-p ...

  5. Spring MVC教程——检视阅读

    Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...

  6. Spring MVC应用

    Spring MVC简介 1.1 经典三层结构 在JavaEE开发中,几乎全部都是基于B/S架构的开发.那么在B/S架构中,系统标准的三层架构包括:表现层.业务层.持久层.三层架构在我们的实际开发中使 ...

  7. Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  8. Spring MVC 基础

    Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是 ...

  9. Spring MVC集成Swagger

    什么是Swagger? 大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Servi ...

随机推荐

  1. spring基础学习---aop

    1:无参aop下面为项目结构 2:通知类.MyAdvice package cn.edu.aop; import org.aspectj.lang.ProceedingJoinPoint; //通知类 ...

  2. RHEL6.5安装成功ORACLE11GR2之后,编写PROC程序出错解决方法

    1.  proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: N ...

  3. scrapy 简单操作

    1.创建一个简单的scrapy项目 scrapy startproject search(项目名称)按照提示cd searchscrapy genspider serachname search.co ...

  4. shell script练习:利用日期进行文件的创建

    随日期变化:利用 date 进行文件的创建 想像一个状况,假设我的服务器内有数据库,数据库每天的数据都不太一样,因此当我备份时, 希望将每天的数据都备份成不同的档名,这样才能够让旧的数据也能够保存下来 ...

  5. C# Nugut CsvHelper 使用

    装载自: 跳转链接>>>

  6. 通过HTTP协议实时获取微信聊天记录

    第一步:登陆 1.get访问微信首页https://wx.qq.com 提供session.headers 用途:获取cookie 后续访问必须带session.headers.cookie这三个参数 ...

  7. iOS图片瘦身总结

    前言 最近在公司写了个小程序来为iOS应用中的图片瘦身,进而减小APP大小,减少用户下载时的流量. 瘦身是在一个专门为图片瘦身的网站进行的. 地址:https://tinypng.com 这个网站提供 ...

  8. reactnative(2) - Navigator 使用案例

    'use strict'; import React, { Component } from 'react'; import { AppRegistry, ScrollView, StyleSheet ...

  9. Android FileProvider相关 Failed to find configured root that contains

    问题: 使用FileProvider构造SD卡中文件uri时异常 java.lang.IllegalArgumentException: Failed to find configured root ...

  10. linux共享库的版本控制

    前几天看到一篇介绍linux共享库版本控制及使用的文章,觉得不错,这里就与大家分享一下. 1. Linux约定 经常看到Linux中,共享库的名字后面跟了一串数字,比如:libperl.so.5.18 ...