欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈SpringMVC对RESTfull的支持

程序员文章站 2023-11-21 14:15:46
本文研究的主要是springmvc对restfull的支持的相关内容,具体如下。   restful架构,就是目前流行的一种互联网软件架构。它结构清晰、符合标准、易于理解...

本文研究的主要是springmvc对restfull的支持的相关内容,具体如下。

  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也会解析静态资源,但是这样的话就会出错,所以我们要设置一下不让它解析静态资源。如:

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

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

总结

以上就是本文关于浅谈springmvc对restfull的支持的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!