我不太清楚@RequestMapping
、@ActionMapping
和@RenderMapping
之间的区别。似乎以上所有内容最终都将请求 url 映射到 Controller 中的实际方法。那么区别是什么呢?哪些可以通过 @Rendermapping
完成而不能通过 @Requestmapping
完成?
最佳答案
@RequestMapping
允许您指定模式(编辑、查看等)和许多其他选项(尽管不是窗口状态)。 @RenderMapping
允许您仅指定请求参数和窗口状态(MAXIMISED、NORMAL 等),并且是指示渲染请求映射的便捷方法。您可以在同一个类上使用这两个注释。例如,您可以在类级别使用 RequestMapping 进行注释,以指示它为 VIEW 模式的请求提供服务,然后在方法级别使用 @RenderMapping
(或 @ActionMapping
)注释特定请求的处理程序> 或@ResourceMapping
)。
现在谈论不同类型的请求可能会有所帮助。
呈现请求用于呈现 HTML,因此通常您会显示 JSP 或某种其他类型的 View 。
操作请求用于执行修改数据、上传文件等操作。需要注意的是,每个操作请求后面都会跟着一个渲染请求。因此,如果您的页面上有两个 portlet,并且您向第一个 portlet 发出操作请求,则该 portlet 将收到一个操作请求,然后是一个呈现请求。 Portlet 2 将只接收渲染请求。
还有另一种类型的请求您也没有提及,但它也很有趣
资源请求可用于呈现其他内容类型。 AJAX 是资源请求的常见用例,因为它们适合返回 JSON 或 XML。
事件请求也存在并且可用于 portlet 间的通信。
我可以推荐 Spring portlet docs 。尽管它们没有很好地涵盖注释,但它们确实解释了不同的请求类型,并且您应该能够使用该信息来计算注释。
注意。如果您愿意,您可以使用@RequestMapping
来定义渲染、操作和资源请求,但是@RenderMapping
、 @ActionMapping
或 @ResourceMapping
提供了更方便的方法。
关于spring-mvc - @ActionMapping、@RequestMapping、@Rendermapping的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887753/