0
点赞
收藏
分享

微信扫一扫

SpringMvc 响应数据传出

SpringMVC 输出模型数据概述

提供了以下几种途径输出模型数据:

  • ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据
  • Map 及 Model: 入参为 org.springframework.ui.Model、 org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中。
  • @SessionAttributes: 将模型中的某个属性暂存到 HttpSession 中,以便多个请求之间可以共享这个属性
  • @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中
  • BindingAwareModelMap

image.png

处理模型数据之 ModelAndView

  • ①控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。
  • ②添加模型数据: MoelAndView addObject(String attributeName, Object attributeValue) ModelAndView addAllObject(Map<String, ?> modelMap)
  • ③设置视图: void setView(View view) void setViewName(String viewName)
**
 * 目标方法的返回类型可以是ModelAndView类型
 *                 其中包含视图信息和模型数据信息
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
System.out.println("testModelAndView");
String viewName = "success";
ModelAndView mv = new ModelAndView(viewName );
mv.addObject("time",new Date().toString()); //实质上存放到request域中 
return mv;
}
  • SpringMVC提供了一种可以临时给Session域中保存数据的方式;使用一个注解@sessionAttributes(只能标在类上) @sessionAttributes (value="msg") 给BindingAwareModelMap中保存的数据或者ModelAndView中的数据,同时给session中放一份;value指定保存数据时要给session中放的数据的key

@sessionAttributes (value="msg") @SessionAttributes (value={"msg","msg2"}) //保存值同时放在sesson中 @Controller public class demo(){}

  • 给放 session 用原生api

@ModelAttribute注解

  • 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法。
  • 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参
  • 将方法入参对象添加到模型中

image.png image.png

  • ModelAttributeMap image.png

举报

相关推荐

0 条评论