WEB开发网
开发学院软件开发Java Spring MVC与JAX-RS比较与分析 阅读

Spring MVC与JAX-RS比较与分析

 2010-08-04 00:00:00 来源:WEB开发网   
核心提示: 在JAX-RS中,AccountResource是通过前请求(per-request)语义声明的,Spring MVC与JAX-RS比较与分析(7),这也是JAX-RS默认的推荐设置,这么做可以将特定于请求的数据注入并存储到资源类本身当中,如通过路径参数指定需要访问哪个资源、通过文件扩展名(.h

在JAX-RS中,AccountResource是通过前请求(per-request)语义声明的,这也是JAX-RS默认的推荐设置。这么做可以将特定于请求的数据注入并存储到资源类本身当中,这适用于由JAX-RS所管理的根级别资源。子资源由应用实例化,并不会直接从这种方法中获益。

在Spring MVC中,控制器永远都是单例的,他们将特定于请求的数据作为方法参数。JAX-RS也可以这么做,以单例的方式创建资源。

将请求映射到方法上

接下来,我们看看Spring MVC和JAX-RS如何将请求映射到方法上。@Path和@RequestMapping都可以从URL中抽取出路径变量:

@Path("/accounts/{username}") 
@RequestMapping("/accounts/{username}") 

这两个框架也都可以使用正则表达式抽取路径变量:

@Path("/accounts/{username:.*}") 
@RequestMapping("/accounts/{username:.*}" 

Spring MVC的@RequestMapping可以根据查询参数的有无来匹配请求:

@RequestMapping(parameters="foo") 
@RequestMapping(parameters="!foo") 

或是根据查询参数值进行匹配:

@RequestMapping(parameters="foo=123") 

@RequestMapping还可以根据头信息的有无来匹配请求:

@RequestMapping(headers="Foo-Header") 
@RequestMapping(headers="!Foo-Header") 

或是根据头信息的值进行匹配:

@RequestMapping(headers="content-type=text/*") 

处理请求数据

HTTP请求中包含着应用需要提取和处理的数据,如HTTP头、cookie、查询字符串参数、表单参数以及请求体(XML、JSON等)中所包含的大量数据。在RESTful应用中,URL本身也可以带有重要的信息,如通过路径参数指定需要访问哪个资源、通过文件扩展名(.html, .pdf)指定需要何种内容类型等。HttpServletRequest提供了处理这一切的所有底层访问机制,但直接使用 HttpServletRequest实在是太乏味了。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Spring MVC JAX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接