• Spring MVC 对于@ModelAttribute 、@SessionAttributes 的详细处理流程


    初学 Spring MVC , 感觉对于 @ModelAttribute 和 @SessionAttributes 是如何被Spring MVC处理的,这一流程不是很清楚,

    经过Google资料,有了一个较为详细的了解,在此总结一下。

    1)Spring MVC 在调用处理方法之前,在请求线程中自动的创建一个隐含的模型对象。

    2)调用所有方法级的 标注了 @ModelAttribute 的方法,并将方法返回值添加到隐含的模型对象中。

    3)如果方法所在的控制器 (标记 @Controller的类)没有标记 @SessionAttributes("sessionXXX") 注释,则该处理步骤可跳过。

    查看Session 中是否存在 sessionXXX 属性,如果有,将其添加到隐含的模型对象中。如果隐含的模型对象中已经存在了sessionXXX属性,则其值将会被覆盖

    以下的步骤是针对 标记@ModelAttribute("xxx") 方法入参 的

    4)如果隐含的模型对象已经存在xxx属性,则将其赋值给入参,并将用户的请求消息 赋值给入参的相应属性 (PS:支持级联属性),并返回,以下的处理步骤不再进行。

    5)如果 方法所在的控制器、标记了 @SessionAttributes("xxx") 注释,则继续进行该处理步骤,否则直接进入步骤6。

    查找 Session,如果没有找到 xxx 属性,则抛出异常 HttpSessionRequiredException 。

    如果找到则将其赋值给入参,并将用户的请求消息 赋值给入参的相应属性 (PS:支持级联属性),并返回,以下的处理步骤不再进行。

    6)创建入参实例,并将其赋值给入参,并将用户的请求消息 赋值给入参的相应属性 (PS:支持级联属性)。至此,处理完毕。

  • 相关阅读:
    css下背景渐变与底部固定的蓝天白云
    indy10中idtcpclient的使用问题[和大华电子称数据交换]
    cliendataset中自增长字段的处理
    和大华电子称进行对数据通讯
    cxgrid主从表的困惑
    基于xml基类的web查询
    关于屏幕文件
    基于xml文件查询的xml文件之生成篇
    关于400改程序
    Tapestry Spring Hibernate整合工作小结[摘]
  • 原文地址:https://www.cnblogs.com/08shiyan/p/3423384.html
Copyright © 2020-2023  润新知