Controller传值给JSP页面
Spring把结束逻辑结果传给JSP界面,有两种方法
- 利用Spring自身的Model传参机制
- 利用服务器的Session机制
由于JSP天生自带session对象,可以通过在后台放入session然后再通过session取出,但是这个和Spring没什么关系,是服务器容器的一种机制
通过Spring的Model传参机制
从Controller模型转入JSP页面有两种方法
- 返回一个String值转入JSP页面
- 返回一个ModelAndView类进入JSP页面
1 | @RequestMapping |
根据以上举例,根据不同方式传参数进入JSP的方法包括
- 返回值为String,需要在函数 入参里增加一个参数Model ,然后就可以放入Object在JSP页面获取到
- 返回值为ModelAndView里使用 addObject 然后可以在JSP页面获取到
不管使用哪种方式,JSP取数据的方式都是 ${attributeName} 根据以上代码就是
1 | ${object} |
Model/ModelMap/ModelAndView 的区别和联系
ModelMap
ModelMap 是原本用于传递参数进入JSP页面的 类
ModelAndView
ModelAndView 是一个类,其是对 ModelMap 和 View接口 一个封装,内部包含一个ModelMap的参数,其addObject方法,就是给内部的ModelMap添加参数
那Model是什么鬼
Model 是一个接口,其实现类是 ExtendedModelMap 在Spring的2.5.1版本之后添加进来的
在2.5.1版本之后Spring使用的已经是 ExtendedModelMap 其继承于ModelMap,对Model接口进行了实现,而MdelMap是2.0版本的加进来的
1 | public class ExtendedModelMap extends ModelMap implements Model |
因为ModelMap是其基类,所以说使用ModelMap还是有效的,但秉承着用新不用旧的原则
推荐使用 Model 接口作为返回值为String类型函数的入参数