SpringMVC确定目标方法POJO类型入参的过程

整体总结如下:

1.确定一个key:

1).若目标方法的POJO类型的参数木有使用@ModelAttribute作为修饰,则keyPOJO类名第一个字母的小写。

2).若使用@ModelAttribute修饰,则key@ModelAttribute注解的value属性值.

2.implicitModel(相当于request)中查找key对应的对象,若存在,则作为入参传入。

1).若在@ModelAttribute标记的方法中在Map保存过,且key1确定的key一致,则会获取到!

3.implicitModel中不存在key对应的对象。

则检查当前的Handler是否使用@SessionAttribute注解修饰,若使用了该主机,且@SessionAttributes注解的value属性值中包含了key,则会从HttpSession中来获取key所对应的value值,若存在则直接传入到目标方法的入参中,若不存在则将抛出异常。

4.Handler没有标识@SessionAttributes注解或者@SessionAttributes注解的value值中不包含key,则会通过反射来创建POJO类型的参数,传入为目标方法的参数。

5.SpringMVC会把keyPOJO对象保存到implicitModel中,进而会保存到request域中!


ModelAttribute介绍:

@ModelAttribute用于修饰方法,在每次请求目标方法之前都会被执行一次。


每个目标方法在执行前回去request域中寻找传入参数的首字母小写的参数,上面的代码就会去找student


这样写的话事可以自动找到的,要是request域中没有这个对象,会根据反射原理自动创建一个空的该类型的对象。

如果域中的对象和传入的参数的对象名称上无法直接关联,可以通过注释指明是request域中的哪一个对象。


这个方法可以找到request域中的stu对象,所以getStudnet可以这样写:




注意事项:

1.SpringMVC中重定向和转发不会经过视图解析器。

2.SessionAttribute只能写在类上,参数:

value:指定放入session域中的键

types:指定放入session域中的对象的字节码文件。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值