RESTful架构,就是目前流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。RESTful架构对url进行规范,写RESTful格式的url是什么样子的呢?我们一般请求的url是类似这样子的: 
http://...../xxx.action?id=001&type=aaa 
  而REST的url风格是什么样子呢?一般它类似于: 
http://..../xxx/001 
  所以REST有个很明显的特点:使url变得简洁,将参数通过url传到服务端。springmvc也是支持这种REST风格的url的,我们定义一个controller来测试一下:

//查询商品信息,输出json,使用RESTful
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception {
ItemsCustom itemsCustom = itemsService.findItemsById(id);
return itemsCustom;
}

@ResponseBody是用来将itemsCustom转成json的注解,而@PathVariable注解则是跟REST有关了,@RequestMapping(value=”/ itemsView/{id}”)中的{id}表示一个占位符,那么这里面传过来的值会传到被@PathVariable标记的形参上,如果形参和占位符中的变量一样的话,可以不用再注解中指定,否则注解中要指定这个占位符中的变量(即id)。这样的话,参数就可以通过url传到形参中来了。 
  但是这样还不行,还要在前端控制器中针对REST进行配置,如下:

<!-- 配置springmvc的前端控制器DispatcherServlet,REST配置 -->
<servlet>
<servlet-name>springmvc_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_rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

拦截的是所有的url(/),这个配置跟之前配置好的前端控制器是没有冲突的,可以并存。经过这样配置后,就可以在浏览器中输入http://localhost:8080/SpringMVC_Study/itemsView/1来测试返回到浏览器的数据了,可以看到返回一串json数据。 
  但是有个问题,使用上面的配置后会拦截所有的url,那么对静态资源也会拦截,所以DispatcherServlet也会解析静态资源,但是这样的话就会出错,所以我们要设置一下不让它解析静态资源在springmvc.xml。如:

<!-- 静态资源解析,包括js,css,img... -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/img/" mapping="/img/**"></mvc:resources>

如果还有其他静态资源的话,也要设置一下,这样就不会去解析静态资源了,访问静态资源的时候就直接访问即可。

【SpringMVC学习10】SpringMVC对RESTfull的支持的更多相关文章

  1. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)——SpringMVC介绍与入门这篇文章后 ...

  2. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  3. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  4. (转)SpringMVC学习(五)——SpringMVC的参数绑定

    http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...

  5. springMVC学习(3)-springMVC和mybatis整合

    一.需求:使用springmvc和mybatis完成商品列表查询. 二.整合思路:springMVC+mybaits的系统架构: 1步):整合dao层 mybatis和spring整合,通过sprin ...

  6. [四]SpringMvc学习-对servlet与json的支持与实现

    1.对servletAPI的支持 request.response.session作为参数自动注入 2.对Json的支持 2.1springmvc配置文件中添加支持对象与json的转换 <mvc ...

  7. springMVC学习(10)-上传图片

    需求:在修改商品页面,添加上传商品图片功能. SpringMVC中对多部件类型解析: 1)springmvc中配置: <!-- 文件上传 --> <bean id="mul ...

  8. (转)SpringMVC学习(二)——SpringMVC架构及组件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231385 相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上 ...

  9. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?  这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...

随机推荐

  1. git 本地与远程关联流程

    git init git add -A git commit -m '提交' git remote add origin git@github.com:laniu/liuna.git git push ...

  2. springBoot Feign

    1.引入依赖包 <!-- 引入关于 eureka-server的依赖 --> <dependency> <groupId>org.springframework.c ...

  3. 如何让IE7,IE8支持css3

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 原理:在用ie浏览 ...

  4. 牛客网 牛客练习赛7 A.骰子的游戏

    A.骰⼦的游戏 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld 题目描述 在Alice和Bob面前的是两个骰 ...

  5. Jenkins部署+svn

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作.       确保java工作环境jdk.tom ...

  6. luogu P1529 回家 Bessie Come Home

    题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶 ...

  7. [BZOJ5288][HNOI2018]游戏(拓扑排序)

    传送门:https://www.luogu.org/problemnew/show/P4436 20分的暴力加一个Random_shuffle就A了.我还能说什么.. 不过这个也不是毫无道理,复杂度应 ...

  8. Flash3D学习计划(一)——3D渲染的一般管线流程

    一:什么是渲染管线 渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元.一个流水线是一序列可以并行和按照固定顺序进行的阶段.每个阶段都从它的前一阶段接收输入,然后把输出发给随后 ...

  9. Python学习笔记——模块

    使用模块 python中包的组织方式是模块,一个使用其它模块的例子如下: # Filename: using_sys.py import sys print 'The command line arg ...

  10. Excel设置下拉菜单并隐藏下拉菜单来源单元格内容

    一.问题来源 做实验室的进展统计表,老师让加上开始时间和完成时间,时间格式:周几_上午(下午.晚上). 这样就可以了做下拉菜单,方便填写,而且格式统一,方便查看. 二.解决办法 2.1 下来菜单 红框 ...