SpringMVC复习(四)响应数据传出

数据放到request域中带给页面 Map,Model,ModelMap,ModelAndView

SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面

1)可以在方法处传入Map、或者Model或者ModelMap

  • 给这些参数里面保存的所有数据都会放在请求域中。可以在页面获取
  • 关系:
    • Map,Model,ModelMap:最终都是BindingAwareModelMap在工作;
    • 相当于给BindingAwareModelMap中保存的东西都会被放在请求域request)中;
  • 继承关系中Map、或者Model或者ModelMap
    在这里插入图片描述

2)方法的返回值可以变为ModelAndView类型;

  • 既包含视图信息(页面地址)也包含模型数据(给页面带的数据);
  • 而且数据是放在请求域request)中;

后端

@Controller
@RequestMapping("/output")
public class OutputController {

    @RequestMapping("/handle01")
    public String handle01(Map<String, Object> map){
        map.put("msg", "你好");
        map.put("haha", "哈哈哈");
        System.out.println("map的类型:"+map.getClass());
        return "success";
    }

    /**
     * Model:一个接口
     * @param model
     * @return
     */
    @RequestMapping("/handle02")
    public String handle02(Model model){
        model.addAttribute("msg", "你好坏!");
        model.addAttribute("haha", 18);
        System.out.println("model的类型:"+model.getClass());
        return "success";
    }

    @RequestMapping("/handle03")
    public String handle03(ModelMap modelMap){
        modelMap.addAttribute("msg", "你好棒!");
        System.out.println("modelmap的类型:"+modelMap.getClass());
        return "success";
    }

    /**
     * 返回值是ModelAndView;可以为页面携带数据
     * @return
     */
    @RequestMapping("/handle04")
    public ModelAndView handle04(){
        //之前的返回值我们就叫视图名;视图名视图解析器是会帮我们最终拼串得到页面的真实地址;
        //ModelAndView mv = new ModelAndView("success");
        ModelAndView mv = new ModelAndView();
        mv.setViewName("success");
        mv.addObject("msg", "你好哦!");
        return mv;
    }
}

前端

<!-- SpringMVC如何给页面携带数据过来; --><br/>
<a href="output/handle01">handle01</a><br/>
<a href="output/handle02">handle02</a><br/>
<a href="output/handle03">handle03</a><br/>
<a href="output/handle04">handle04</a>

返回前端succss

reuest:${requestScope.msg }<br/>

数据放到Session域中带给页面 @SessionAttributes

SpringMVC提供了一种可以临时给Session域中保存数据的方式;
使用一个注解 @SessionAttributes(只能标在类上)

  • @SessionAttributes(value=“msg”):
    给BindingAwareModelMap中保存的数据,或者ModelAndView中的数据,
    同时给session中放一份;
    value指定保存数据同时要给session中放的数据的key;
    • value={“msg”}:只要保存的是这种key的数据,给Session中放一份
    • types={String.class}:只要保存的是这种类型的数据,给Session中也放一份
  • 后来推荐@SessionAttributes就别用了,可能会引发异常;
  • 给session中放数据请使用原生API;
@SessionAttributes(value={"msg"},types={String.class})
@Controller
public class OutputController {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值