一起文库网 懒人学习网 雨竹林中考网 高考报名网 雨竹林文档网 加入收藏 设为首页

雨竹林文档网      懒人考试网|阳光学习网


Spring MVC RESTful开发实例

一起文库网   来源: 学参网 Spring MVC  2024-04-08     

本站非官方网站,信息完全免费,仅供参考,不收取任何费用,具体请以官网公布为准!
一、什么是RESTful:
REST(英文:Representational State Transfer,简称REST)(表现层状态转化)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
 
1、资源(Resources)
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
 
2、表现层(Representation)
"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
 
3、状态转化(State Transfer)
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
4、综上RESTful实际的含义:
相当于是一种开发设计风格;
用URI代表资源;
客户端和服务器之间,传递这种资源的某种表现层;
客户端通过四个HTTP动词(GET、POST、PUT、DELETE),对服务器端资源进行操作,实现"表现层状态转化"。
 
5、实例
 
资源为用户ID为100
URI:http://www.example.com/user/100
 
GET :http://www.example.com/user/100
表示服务器端返回用户ID为100的用户信息
 
POST:http://www.example.com/user/100
新增用户ID为100的用户信息
 
PUT:http://www.example.com/user/100
更新用户为100的用户信息
 
DELETE:http://www.example.com/user/100
删除用户ID为100的用户信息
 
二、Spring MVC框架中如何使用RESTful
在实际的开发中使用RESTful主要实现了RESTful url的规范,表现层的资源表现(http的ContentType)
 
测试实例:查询用户信息,返回json数据。
 
1、controller开发:
进行url映射使用RESTful风格的url,将用户的id传入controller
 
输出json使用@ResponseBody将java对象输出json
 
//RESTful查询用户信息
@RequestMapping("usersView/{usercode}")
public @ResponseBody Userinfo usersView(@PathVariable("usercode") String usercode) throws Exception{
Userinfo userinfo = userinfoService.FindUserinfoByUsercode(usercode);
return userinfo;
}
@ResponseBody Userinfo定义返回数据类型,默认@ResponseBody会返回json数据,需要jackson包的支持,所以maven中要加入jackson
@PathVariable("usercode") 定义了从url中获取参数
 
2、使用新的前端控制器来解析RESTful类型的url
修改web.xml
 
<!-- Springmvc-RESTful前端控制器 -->
<servlet>
<servlet-name>springmvc-RESTful</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/springmvc.xml</param-value>
</init-param>
</servlet>
 
<servlet-mapping>
<servlet-name>springmvc-RESTful</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
 
<!-- Springmvc前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/springmvc.xml</param-value>
</init-param>
</servlet>
 
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
第一种 *.action
第二种 / 所有的访问让DispatcherServlet解析
第三中 /* 不对
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
这里要注意的是可以同时使用多个前端控制器,springmvc和springmvc-RESTful可以共存,但是RESTful的前端控制器将影响静态页面的解析,需要特别处理,需要在springmvc.xml中添加静态资源的解析方法
 
3、在springmvc中加入json解析器和静态资源解析
修改springmvc.xml
 
<!-- 默认加载了很多参数绑定方法,如json转换解析器就默认加载了,实际开发会用到,上边的就不用了-->
<mvc:annotation-driven/>
 
 
<!--添加对静态资源的解析-->
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/html/**" location="/html/"/>
annotation-driven 会加载jackson,用于将java对象装换称json输出
 
4、在项目中引入jackson包
修改pom.xml,添加jackson包
 
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
</dependency>
5、测试
 
访问RESTful风格的url,controller从url中获取usercode参数,并将java对象转换成json输出
Image.png
6、错误测试
我们在浏览器中输入一个错误的RESTful url,查看系统错误提示信息,可以发现名为springmvc-RESTful的前端控制器的错误提示信息,反向证明了RESTful的工作正常。
Image2.png

懒人学习网   学习文档   news.lazyedu.cn : 懒人学习网,免费分享学习资料。

[责任编辑:文库在线]

懒人学习百事通懒人学习网 懒人考试网

学参学习网,非官方公益学习阅读网!

非官方网站: 本站为网址导航站点,非官方网站,具体以官方网站公布为准.

公益免费: 本站所有信息完全免费,不收取任何费用,谨防上当受骗.

信息仅供参考: 因信息具有时效性,本站所有信息仅供参考,请勿用于非法用途.


郑重声明:本站不开设任何辅导班,谨防上当受骗!完全公益站点,不接受任何赞助!



免费阅读

新免费分享的文档

本站所有信息完全免费,不收取任何费用!

使用必读 |   学习文库 |   阳光学习网 |   山东高考网 |   懒人考试网 |   郑重声明 |   懒人考试网 | 高考频道

(C) 考试专题  学参网手机版  学习专题   版权所有

非官方公益学习网,本站不开设任何辅导班、不收取任何费用!闽ICP备11025842号-4 | 打着本站名义收费的均为冒充的骗子!

Copyright XUECAN, All Rights Reserved.