Spring MVC与JAX-RS比较与分析
2010-08-04 00:00:00 来源:WEB开发网在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实在是太乏味了。
- ››Spring MVC与JAX-RS比较与分析
- ››Spring 框架的设计理念与设计模式分析
- ››Spring Web Flow 2 中流管理的持久化
- ››JAXP 全面介绍,第 1 部分:XML 处理工具包使解析...
- ››JAXP 全部内容,第 2 部分:使用 Sun 的 XML 处理...
- ››Spring 事务管理高级应用难点剖析: 第 2 部分
- ››Spring 事务管理高级应用难点剖析: 第 3 部分
- ››Spring 事务管理高级应用难点剖析,第 1 部分
- ››Spring之@Autowired问题
- ››spring 框架使用初步
- ››Spring 与 EJB 比较
- ››Spring ORM
赞助商链接