【Spring-MVC】响应和数据模型

30 篇文章 1 订阅

【Spring-MVC】响应和数据模型

7.1 @ResponseBody

  • 直接响应数据,不涉及到视图
  • 可以返回标准的字符串和结构化数据(XML/JSON)
  • 会被StringHttpMessageConverter影响

7.2 数据模型

SpringMVC提供的在特定作用域内封装数据的组件

7.2.1 Model

我们可以通过Model对象来绑定参数,返回的字符串就是viewName,因为我们没有加@ResponseBody

Model是一个接口,它的实现类是ExtendedModelMap,该实现继承了ModelMap

@GetMapping("/model")
// Model可以在参数列表中声明
public String modelTest(Model model){
  // 默认的是请求作用域
  model.addAttribute("name","晓龙");
  return "login";
}
7.2.2 ModelMap

ModelMap是继承于LinkedHashMap,它有自身的方法和map的方法

@GetMapping("/modelMap")
public String modelMapTest(ModelMap mMap){
  mMap.addAttribute("name","月月");
  return "login";
}
7.2.3 ModelAndView

使用ModelAndView可以在设置参数的同时,也去设置视图的名字,这时候我们需要返回这个ModelAndView交给视图解析器去处理。

它的底层本质其实还是通过ModelMap来存储数据

源码:

public ModelMap getModelMap() {
// 在存储数据时还是通过ModelMap
if (this.model == null) {
 this.model = new ModelMap();
}
return this.model;
}

方式一:参数列表声明

@GetMapping("/modelAndView")
// 我们可以通过SpringMVC交给我们一个ModelAndView
public ModelAndView modelAndViewTest(ModelAndView modelAndView){
  // 绑定参数
  modelAndView.addObject("name","MoonAnd龙");
  // 设置视图name
  modelAndView.setViewName("login");
  // 返回ModelAneView
  return modelAndView;
}

方式二:实例对象

@GetMapping("/modelAndView2")
public ModelAndView modelAndViewTest2(){
  // 实例ModelAndView对象
  ModelAndView modelAndView = new ModelAndView();
  // 绑定参数
  modelAndView.addObject("name","MoonAnd龙2");
  // 设置视图name
  modelAndView.setViewName("login");
  // 返回ModelAndView
  return modelAndView;
}
7.2.4 参数作用域

SpringMVC的模型组件在默认情况下都是在请求作用域级别的,我们可以通过对应的注解将里面声明的数据提级别。

  • @SessionAttributes作用在类上的注解,通过names属性来绑定我们需要提升为会话级别的数据

    @Controller
    // 将sessionName属性提升到session级别
    @SessionAttributes("sessionName")
    public class ModelController {
    
        @GetMapping("/modelAndView2")
        public ModelAndView modelAndViewTest2(){
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("name","MoonAnd龙2");
          	// 将sessionName提升到了session级别
            modelAndView.addObject("sessionName","MoonAnd龙2Session");
            modelAndView.setViewName("login");
            return modelAndView;
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值