@ ActionMapping,@ RequestMapping,@ Rendermapping之间的区别

时间:2013-04-08 19:54:33

标签: spring-mvc annotations spring-portlet-mvc

@RequestMapping@ActionMapping@RenderMapping之间的差异对我来说并不十分清楚。似乎所有上述内容最终都将请求URL映射到控制器中的实际方法。那么区别是什么呢? @Rendermapping无法完成的@Requestmapping可以做什么?

1 个答案:

答案 0 :(得分:11)

@RequestMapping允许您指定模式(EDIT,VIEW等)和许多其他选项(尽管不是窗口状态)。 @RenderMapping允许您仅指定请求参数和窗口状态(MAXIMIZED,NORMAL等),并且是指示渲染请求映射的便捷方式。您可以在同一个类上使用这两个注释。例如,您可以使用RequestMapping在类级别注释以指示它为VIEW模式提供请求,然后在方法级别使用@RenderMapping(或@ActionMapping@ResourceMapping为特定请求注释处理程序。

现在谈谈不同类型的请求可能会有所帮助。

渲染请求用于呈现HTML,因此通常会显示JSP或其他类型的视图。

动作请求用于执行诸如修改数据,上传文件等操作。重要的是要注意每个动作请求之后是渲染请求。因此,如果您的页面上有两个portlet,并且您向portlet发出了一个操作请求,那么它将收到一个操作请求,后跟一个呈现请求。 Portlet 2只会收到一个渲染请求。

还有另一种类型的请求,你没有提及哪些也是感兴趣的

资源请求可用于呈现其他内容类型。 AJAX是资源请求的常见用例,因为它们适用于返回JSON或XML。

事件请求也存在,可用于portlet间通信。

我可以推荐Spring portlet docs。虽然它们没有很好地覆盖注释,但它们确实解释了不同的请求类型,您应该能够使用该信息来计算注释。

NB。如果您愿意,可以使用@RequestMapping定义渲染,操作和资源请求,但@RenderMapping@ActionMapping@ResourceMapping提供更方便的方法。