程序员人生 网站导航

【SpringMVC学习10】SpringMVC对RESTfull的支持

栏目:互联网时间:2016-08-02 09:04:18

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

//查询商品信息,输出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}表示1个占位符,那末这里面传过来的值会传到被@PathVariable标记的形参上,如果形参和占位符中的变量1样的话,可以不用再注解中指定,否则注解中要指定这个占位符中的变量(即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来测试返回到阅读器的数据了,可以看到返回1串json数据。
  但是有个问题,使用上面的配置后会拦截所有的url,那末对静态资源也会拦截,所以DispatcherServlet也会解析静态资源,但是这样的话就会出错,所以我们要设置1下不让它解析静态资源。如:

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

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

  相干浏览:http://blog.csdn.net/column/details/spring-mvc.html
  学习笔记源码下载地址:https://github.com/eson15/SpringMVC_Study


—–乐于分享,共同进步!
—–我的博客主页:http://blog.csdn.net/eson_15

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐