springmvc RESTful支持
2017-02-05 22:57
316 查看
什么是RESTful
说道RESTful,不得不先说说,目前的互联网开发,越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。
网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。
定义
REST是“呈现状态转移(REpresentational State Transfer)”的缩写。或许可以这样来定义它:一种API的架构风格,在客户端和服务端之间通过呈现状态的转移来驱动应用状态的演进。
RESTful是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
RESTful其实是一个开发理念,是对http的很好的诠释。
RESTful架构
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
应用点
1、对url进行规范,写RESTful格式的url(常用)
非REST的url:http://.../queryUser.action?id=001&type=t01
REST的url:http://.../queryUser/001/t01
特点:url简洁,将参数通过url传到服务端
2、对http的contentType进行规范(常用)
请求时指定contenType,要json数据,设置成json格式的type。
3、http的方法规范(不常用,繁琐)
不管是删除、添加、更新...使用url是一致的,如果进行删除,需要设置http的方法为delete、add...
后台Controller方法:判断http方法,如果是delete执行删除,如果是post执行添加。
REST例子
需求:查询用户信息,返回json数据
添加DispatcherServlet的rest配置
web.xml:
多个servlet可以共存
URL模板模式映射
@RequestMapping(value="/ viewItems/{id}"):{×××}占位符,请求的URL可以是“/viewItems/1”或“/viewItems/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。
注意:如果RequestMapping中表示为"/viewUsers/{id}",id和形参名称一致,@PathVariable不用指定名称。
静态资源访问<mvc:resources>
如果在DispatcherServlet中设置url-pattern为 /则必须对静态资源进行访问处理。
spring mvc
的<mvc:resources mapping="" location="">实现对静态资源进行映射访问。
如下是对js、css、img等文件访问配置:
说道RESTful,不得不先说说,目前的互联网开发,越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。
网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。
定义
REST是“呈现状态转移(REpresentational State Transfer)”的缩写。或许可以这样来定义它:一种API的架构风格,在客户端和服务端之间通过呈现状态的转移来驱动应用状态的演进。
RESTful是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
RESTful其实是一个开发理念,是对http的很好的诠释。
RESTful架构
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
应用点
1、对url进行规范,写RESTful格式的url(常用)
非REST的url:http://.../queryUser.action?id=001&type=t01
REST的url:http://.../queryUser/001/t01
特点:url简洁,将参数通过url传到服务端
2、对http的contentType进行规范(常用)
请求时指定contenType,要json数据,设置成json格式的type。
3、http的方法规范(不常用,繁琐)
不管是删除、添加、更新...使用url是一致的,如果进行删除,需要设置http的方法为delete、add...
后台Controller方法:判断http方法,如果是delete执行删除,如果是post执行添加。
REST例子
需求:查询用户信息,返回json数据
添加DispatcherServlet的rest配置
web.xml:
<servlet> <servlet-name>springmvc-servlet-rest</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-rest</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
多个servlet可以共存
URL模板模式映射
@RequestMapping(value="/ viewItems/{id}"):{×××}占位符,请求的URL可以是“/viewItems/1”或“/viewItems/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。
@RequestMapping("/viewUsers/{id}") public @ResponseBody viewUsers(@PathVariable("id") String id,Model model) throws Exception{ //方法中使用@PathVariable获取id的值,使用model传回页面 //调用 service查询用户信息 UserCustom userCustom = userService.findUserById(id); return userCustom; }
注意:如果RequestMapping中表示为"/viewUsers/{id}",id和形参名称一致,@PathVariable不用指定名称。
静态资源访问<mvc:resources>
如果在DispatcherServlet中设置url-pattern为 /则必须对静态资源进行访问处理。
spring mvc
的<mvc:resources mapping="" location="">实现对静态资源进行映射访问。
如下是对js、css、img等文件访问配置:
<!-- 静态资源解析 --> <mvc:resources location="/js/" mapping="/js/**" /> <mvc:resources location="/css/" mapping="/css/**" /> <mvc:resources location="/img/" mapping="/img/**" />
相关文章推荐
- SpringMVC的Restful风格支持
- Springmvc学习(09)-RESTful支持
- springmvc对RESTful的支持
- 让SpringMVC支持可版本管理的Restful接口
- SpringMVC对RESTful支持
- springmvc restful风格支持
- springmvc restful 支持
- SpringMVC支持可版本管理的Restful接口
- SpringMVC学习(六)--RESTful支持
- springMVC支持restful服务写出的服务端^_^
- springmvc-RESTful支持
- springmvc学习笔记(19)-RESTful支持
- JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器
- 让SpringMVC支持可版本管理的Restful接口
- SpringMvc入门到开发(五)之json数据交互,RESTful支持,拦截器【附详细截图】
- SpringMVC对RESTful格式的url支持
- 【SpringMVC整合MyBatis】springmvc对RESTful支持
- springmvc学习笔记(19)-RESTful支持
- SpringMVC基础-8-JSON与Restful支持
- springMVC学习--RESTful支持