SpringMVC-数据输出

解决问题     数据输出:SpringMVC将目标方法处理后数据返回给页面

 

除了原生的通过Request和Response方法响应页面数据,SpringMVC还具有以下几种方法

1>可以在方法处传入Map、Model、ModelMap给这些参数中保存的所有数据都会放在域中,可以在页面获取。

    这些参数保存的数据都会放在Resquest域中,并且Map(其为JDK中的接口)、Model(为Spring中的接口)、ModelMap都是BindingAwareModelMap类型

//目标方法的返回类型也可以是一个Map类型参数(也可以是Model,或ModelMap类型)

@RequestMapping("/testMap")
public String testMap(Map<String,Object> map){ 
    System.out.println(map.getClass().getName());

    //org.springframework.validation.support.BindingAwareModelMap
    map.put("names", Arrays.asList("Tom","Jerry","Kite"));
    
    return "success";
}

   2>控制器处理方法的返回值可以为Model and View(模型和视图:数据和页面)

/**
 * 目标方法的返回类型可以是ModelAndView类型
 *                 其中包含视图信息和模型数据信息
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
   
    System.out.println("testModelAndView");
    String viewName = "success";
    //之前return "success"该返回值称为试图名;视图名视图解析器会最终进行拼接形成页面地址
    ModelAndView mv = new ModelAndView(viewName);
    mv.addObject("time",new Date().toString()); //实质上存放到request域中 
    return mv;
}

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

   例如@SessionAttribute(value="msg"):表示的是,在该类方法中如果存有Map、Model、MapModel时,给这些参数中存msg的信息时,也给session中存“msg”的信息。

@Controller
//@SessionAttributes("user")
@SessionAttributes(value={"user"},types={String.class})
public class SpringMVCController {
/**
 * @SessionAttributes
 *  除了可以通过属性名指定需要放到会话中的属性外(实际上是通过value指定key值),
 *  还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上是通过types指定类型)
 *  types={String.class}:只要保存的是这种类型的数据,给Session中也保存一份
 * 注意:只能放在类的上面,不能修饰方法
 */

@RequestMapping("/testSessionAttributes")

public String testSessionAttributes(Map<String,Object> map){

User user = new User("Tom","123","tom@atguigu.com",22);                
map.put("user", user);
map.put("school", "atguigu");  

//默认是被存放到request 域,如果设置了@SessionAttribute注解,就同时存放到session域中
return "success";
}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值