`

Spring4MVC之REST

 
阅读更多

 

REST

 

REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

 

资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要获取这个资源,访问它的URI就可以,因此 URI 即为每一个资源的独一无二的识别符。

表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。

状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是 “表现层状态转化”。

 

具体说,就是 HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作: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 请求。 

 

1. 需要配置 HiddenHttpMethodFilter 

 

  <!-- 
	配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 PUT 请求 
  -->
  <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>

 

2. 编辑JSP页面

2.1 需要发送 POST 请求

2.2 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT

 

<li>REST
            <ul>
                <li><a href="user/testRestMethod/10001">Get请求[10001]</a></li>
                <li>
                    <form action="user/testRestMethod" method="POST">
                        <input type="text" name="name"  value="POST请求"/>
                        <input type="submit"/>
                    </form>
                </li>
                <li>
                    <form action="user/testRestMethod/10001" method="POST">
                        <input type="hidden" name="_method" value="PUT">
                        <input type="text" name="name" value="PUT请求"/>
                        <input type="submit"/>
                    </form>
                </li>
                <li>
                    <form action="user/testRestMethod/10001" method="POST">
                        <input type="hidden" name="_method" value="DELETE">
                        <input type="text" name="name"  value="DELETE请求"/>
                        <input type="submit"/>
                    </form>
                </li>
            </ul>
        </li>

 

3. 编辑处理类

 

	/**
	 * Rest 风格的 URL. 以 CRUD 为例: 
	 * 新增: /order POST 
	 * 修改: /order/1 PUT update?id=1 
	 * 获取: /order/1 GET get?id=1 
	 * 删除: /order/1 DELETE delete?id=1
	 * 
	 * 如何发送 PUT 请求和 DELETE 请求呢 ? 
	 * 1. 需要配置 HiddenHttpMethodFilter 
	 * 2. 需要发送 POST 请求
	 * 3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT
	 * 
	 * 在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解
	 * 
	 */
	@RequestMapping(value="/testRestMethod/{id}",method=RequestMethod.GET)
	public String testRestGetMethod(@PathVariable(value="id")Integer id)
	{
		System.out.println("------testRestGetMethod"+ id +"------");
		return LOGIN;
	}
	
	@RequestMapping(value="/testRestMethod",method=RequestMethod.POST)
	public String testRestPostMethod()
	{
		System.out.println("------testRestPostMethod------");
		return LOGIN;
	}
	
	@RequestMapping(value="/testRestMethod/{id}",method=RequestMethod.PUT)
	public String testRestPutMethod(@PathVariable(value="id")Integer id)
	{
		System.out.println("------testRestPutMethod"+ id +"------");
		return LOGIN;
	}
	
	@RequestMapping(value="/testRestMethod/{id}",method=RequestMethod.DELETE)
	public String testRestDeleteMethod(@PathVariable(value="id")Integer id)
	{
		System.out.println("------testRestDeleteMethod"+ id +"------");
		return LOGIN;
	}

 

 

 

分享到:
评论

相关推荐

    spring3.0 mvc和rest入门例子

    Spring 3.0 MVC 和 REST 是 Java Web 开发中的重要组成部分,它们为构建现代、高效的应用程序提供了强大的框架支持。本文将深入探讨这两个概念以及如何通过一个入门实例来理解它们。 Spring MVC(Model-View-...

    spring 3.0 mvc实现rest代码

    Spring 3.0 MVC 实现 REST 代码是一个关于构建基于 RESTful 风格的 Web 服务的示例。REST(Representational State Transfer)是一种架构风格,常用于设计网络应用程序,强调通过统一资源标识符(URI)来访问资源,...

    mavin spring4 mvc mybatis 整合 带事务,REST风格

    【标题】"mavin spring4 mvc mybatis 整合 带事务,REST风格" 涉及到的是一个基于Java技术栈的Web应用程序开发,整合了Maven、Spring4 MVC、MyBatis框架,并且实现了RESTful API设计以及事务管理。下面将对这些关键...

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...

    Spring MVC REST Demo

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...

    运行好,调试好的spring3.0 mvc_rest_demo.war

    运行好,调试好的spring3.0 mvc_rest_demo.war ****************************** * 运行说明 ****************************** 1. 直接部署dist/springmvc_rest_demo.war至tomcat并启动服务器 2. 访问...

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    Spring Web MVC入门教程

    Spring Web MVC支持REST风格的控制器开发,并且能够支持请求数据的映射和绑定。数据类型转换是Web开发中常见的需求,Spring Web MVC内置了多种类型转换器,并允许开发者自定义转换器以满足特定需求。数据格式化关注...

    spring mvc rest基础学习demo

    在"spring mvc rest基础学习demo"中,我们将深入探讨如何使用Spring MVC构建RESTful API。 REST(Representational State Transfer,表现层状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以...

    spring4MVC+Hibernate4实例(增删改查)

    以上就是"spring4MVC+Hibernate4实例(增删改查)"中的主要技术点,这个实例为初学者提供了学习Spring MVC和Hibernate整合的实践平台,并且通过REST风格实现了Web服务。通过理解和实践这些概念,开发者可以更好地...

    mavin spring4 mvc mybatis 整合 带REST风格

    【标题】"mavin spring4 mvc mybatis 整合 带REST风格"涉及到的知识点主要涵盖了Java Web开发中的三大核心框架:Maven、Spring 4 MVC以及MyBatis,以及RESTful服务的设计和实现。以下是这些技术的详细介绍: 1. ...

    spring mvc rest 小例子

    在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...

    Spring3 MVC REST + JPA2 (Hibernate 3.6.1) 构建投票系统 - 2.Spring MVC REST

    标题 "Spring3 MVC REST + JPA2 (Hibernate 3.6.1) 构建投票系统 - 2.Spring MVC REST" 提供了我们要探讨的核心技术栈:Spring 3 MVC、RESTful API 和 JPA2(这里指的是 Hibernate 3.6.1 实现)。在这个项目中,开发...

    spring mvc 3.2 rest配置 文件

    本篇文章将深入探讨Spring MVC 3.2中配置REST服务的关键点。 首先,`dispatcher-servlet.xml`是Spring MVC的核心配置文件,它定义了Spring MVC如何处理HTTP请求。在配置REST服务时,我们需要在这个文件中声明一些...

    SPRING-MVC-MQ-CXF-REST_Demo

    "SPRING-MVC-MQ-CXF-REST_Demo"这个项目很可能是用来演示如何在同一个应用中整合Spring MVC、MQ、CXF和REST技术。项目可能包含了以下部分: 1. Spring MVC配置:展示了如何设置DispatcherServlet、视图解析器以及...

    使用Spring MVC 搭建Rest服务.doc

    在Spring MVC中,我们可以利用其内置的支持轻松地构建REST服务。 首先,要创建REST服务,你需要了解以下几个核心概念: 1. **URI(Uniform Resource Identifier)**:REST中的每个资源都有一个唯一的URI,用于标识...

    spring3.0MVC中文教材

    相较于之前的版本,Spring 3.0 MVC引入了许多重要的改进和新特性,使其成为企业级Web开发的首选框架之一。 - **Spring MVC作为Web组件**: Spring MVC是Spring框架的一个模块,专门用于Web层的开发。它提供了一种...

    Spring @MVC REST 实例以及 (同一资源,多种展现:xml,json,html)

    该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806

    spring_MVC源码

    本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...

Global site tag (gtag.js) - Google Analytics