RESTful案例

1.1      什么是RESTful

RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

 

1、  对url进行规范,写RESTful格式的url

非REST的接口:http://.../queryItems?id=001&type=T01

REST的url接口:http://.../items/001/T01/123/

 

2、  对http方法的规范(暂不使用)

不管是删除、添加、更新,使用URL是一致的,如果进行删除,需要设置http的method为delete,controller类的方法需要判断http的方法来决定做什么操作

3、  对contentType的规范

响应时指定contentType,要json数据,则设置成json格式的type

 

1.2      RESTful的例子

1.2.1   需求

查询商品信息,返回json数据

1.2.2   Controller类

@RequestMapping(value="/ itemsView/{id}"):{×××}占位符,请求的URL可以是“/viewItems/1”或“/viewItems/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。

@PathVariable:用于将请求URL中的模板变量映射到功能处理方法的参数上。

注意:如果RequestMapping中表示为"/ itemsView /{id}",id和形参名称一致,@PathVariable不用指定名称。

 

//查询商品信息,返回json数据(使用rest)

//${id}:表示占位符

//@PathVariable:获取URL中占位符里面的参数

//如果占位符中的参数和形参一致,则可以不用再@PathVariable里面指定名称

//@ResponseBody:把返回值转成json输出到前台

@RequestMapping("/queryItems4Rest/{id}")

public @ResponseBody Items queryItems4Rest(@PathVariable Integer id){

      

    Items items = itemsService.findItemsById(id);

    return items;

}

 

使用以下URL进行访问:

http://localhost:8080/ssm0122/items/queryItems4Rest/1

 

注意:web.xml中DispatcherServlet的拦截url-pattern配置为/才能支持RESTful,但是这种配置的话,静态资源则无法访问

 

1.2.3  Controller类

@RequestMapping("/pets/{petId}")

  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
// implementation omitted
}
}
上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指
定uri template中的名称

 

 

1.3      访问静态资源配置

在访问工程内部的js、css、静态图片时,如果在web.xml中DispatcherServlet是用/来拦截请求的话,会把静态资源的访问也给拦截,使用*.do方式的话则不会拦截静态资源。

如果想正常访问静态资源,需要以下三种方式的任一配置:

1.3.1   使用mvc:resources标签(推荐)

在springmvc.xml文件中,使用mvc:resources标签,具体如下:

<!-- 当DispatcherServlet配置为/来拦截请求的时候,需要配置静态资源的访问映射 -->

<mvc:resources location="/js/" mapping="/js/**"/>

<mvc:resources location="/css/" mapping="/css/**"/>

Springmvc会把mapping映射到ResourceHttpRequestHandler,这样静态资源在经过DispatcherServlet转发时就可以找到对应的Handler了。

1.3.2   使用mvc:default-servlet-handler标签

在springmvc.xml文件中,使用mvc:default-servlet-handler标签,具体如下:

<!-- 使用mvc:default-servlet-handler,可以处理静态资源的访问 -->

<mvc:default-servlet-handler/>

 

 

 

1.3.3   激活Tomcat的defaultServlet来处理静态文件

在web.xml中添加以下内容:

<!-- 激活tomcat的静态资源拦截 ,需要哪些静态文件,再往下追加-->

<servlet-mapping>

    <servlet-name>default</servlet-name>

    <url-pattern>*.jpg</url-pattern>

</servlet-mapping>

<servlet-mapping>

    <servlet-name>default</servlet-name>

    <url-pattern>*.js</url-pattern>

</servlet-mapping>

<servlet-mapping>

    <servlet-name>default</servlet-name>

    <url-pattern>*.css</url-pattern>

</servlet-mapping>

 

注意:servlet-name的值参考如下:

Tomcat, Jetty, JBoss, and GlassFish  默认 Servlet的名字 -- "default"

Google App Engine 默认 Servlet的名字 -- "_ah_default"

Resin 默认 Servlet的名字 -- "resin-file"

WebLogic 默认 Servlet的名字  -- "FileServlet"

WebSphere  默认 Servlet的名字 -- "SimpleFileServlet"

posted @ 2015-12-15 22:16  rensir  阅读(262)  评论(0)    收藏  举报