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

Vic*_*tor 5 annotations spring-mvc spring-portlet-mvc

之间的差异@RequestMapping,@ActionMapping@RenderMapping没有对我很清楚.似乎所有上述内容最终都将请求URL映射到控制器中的实际方法.那么区别是什么呢?什么可以这样做@Rendermapping不能被做@Requestmapping

Mar*_*ley 11

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

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

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

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

还有另一种类型的请求,你没有提到它也是有意义的

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

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

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

NB.您可以根据@RequestMapping需要定义渲染,操作和资源请求,但是@RenderMapping,@ActionMapping@ResourceMapping提供更方便的方法.