Spring MVC 传递模型数据到视图中方法总结

本文详细介绍了Spring MVC中传递模型数据到视图的四种方法:1) 使用ModelAndView;2) 通过Model、Map、ModelMap作为方法参数;3) 利用@SessionAttributes实现会话共享;4) 结合@ModelAttribute注解的多种用法。文中通过实例代码解释了每种方法的使用场景和效果。
摘要由CSDN通过智能技术生成

Spring MVC 传递模型数据到视图中的方法总结

一般来说,有如下的4种方法来传递模型数据到视图中

1、ModelAndView

要求:处理方法返回值类型为 ModelAndView。在方法体中我们通过该ModelAndView对象添加模型数据。

2、Model/Map/ModelMap

要求:使用org.springframework.ui.Model、org.springframework.ui.ModelMap 或 Java.uti.Map 作为处理方法的入參时,当处理方法返回时,Map中的数据会自动添加到模型中,具体实例将在后面介绍。

3、@SessionAttributes

使用该注解来注解某个类,使得将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性。

4、@ModelAttribute

该注解即可注解在有返回值的方法上,无返回值的方法上,还可以注解在方法入参上,当入參标注该注解后, 入参的对象就会放到数据模型中,具体将在后面进行介绍。

下面将分别以例子的形式进行介绍。

ModelAndView

1、创建ModelAndView,并传入模型数据 

    @Controller
    public class HelloController {

        @RequestMapping(value = "/testModelAndView.do",method = RequestMethod.GET)
        public ModelAndView testModelAndView(){
            String viewName = "hello";//视图名
            ModelAndView modelAndView = new ModelAndView(viewName);

            modelAndView.addObject("time",new Date());
            modelAndView.addObject("name","ModelAndView");
            return modelAndView;
        }
    }

该处理方法返回的是一个ModelAndView对象,且在方法体中添加了以“time”和“name”为key的数据。

2、编写JSP

编写名为:“hello.jsp”,内容如下:

    <html>
    <body>
    <h2>method:${requestScope.name}</h2>

    ${requestScope.time}<br>

    ${requestScope.get("time")}<br>

    ${time}
    </body>
    </html>

这样,在浏览器中输入:localhost:8080/testModelAndView.do ,即可看到如下的输出结果:

注意:
requestScope.time, {requestScope.get(“time”)},${time}这三种写法效果是一样的,在不同的书籍/博客中所看到的都是其中的一种。

2、Model/Map/ModelMap

Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。

如果方法的入参为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些入参。在方法体内,我们可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。

Model和Map使用上基本一样,具体实现代码如下图所示。

    @RequestMapping(value = "/testModel.do",method = RequestMethod.GET)
    public String testModel(Model model){
        model.addAttribute("time",new Date());
        model.addAttribute("name","Model");
        return "hello";
    }

    @RequestMapping(value = "/testMap.do",method = RequestMethod.GET)
    public String testMap(Map<String,Object> map){
        map.put("time",new</
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值