首页 > 经验记录 > SpringMVC模型数据、前后端交互

SpringMVC模型数据、前后端交互

如何将模型数据暴露给视图,以完成最终的展现,是Spring MVC框架一项很重要的工作。Spring MVC提供了多种途径输出模型数据:
ModelAndView:处理方法返回值为该类型时,方法体可通过该对象添加模型数据。
@ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。
Map及Model:方法入参为Model、ModelMap、Map时,处理方法返回时,Map中的数据会自动添加到模型中。
@SessionAttributes:将模型中的某个属性存到HttpSession中,以便多个请求共享这个属性。
 
Spring MVC支持的方法返回类型
返回ModelAndView对象
返回Map/Model对象
返回View对象
返回String对象
void类型
HttpEntity<?>或ResponseEntity<?>类型
其中常用的返回类型为:ModelAndView对象、Map/Model对象、String对象。
注意:当方法入参为ServletResponse / HttpServletResponse时,方法返回类型必须设置为void。
 
返回值是ModelAndView这个对象的时候,,可以直接把他new出来,然后set一个视图名字,告诉他往哪儿跳转,然后就可以add任意东西进去了,跳过去的视图会接收到你add的东西
 
在方法定义中使用@ModelAttribute注解,Spring MVC在调用目标处理方法之前,会先逐个调用在方法级上的标了@ModelAttribute的方法,并将这些方法的返回值添加到模型中。你要是没有加@RequestMapping这个注解,那么这个类里面所有的控制器被调用之前,都会执行这个被修饰了@ModelAttribute的方法。
 
Spring MVC一旦发现处理方法有Map或Model类型入参,就会将请求内在的隐含模型对象传递给这些参数,因此在方法体中可以通过这个入参对模型中的数据进行读写操作。你return到某个页面去,那个页面也能够直接从request域中得到你的模型数据中的建和值
 
默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。

@SessionAttributes参数

names:这是一个字符串数组。里面应写需要存储到session中数据的名称。
types:根据指定参数的类型,将模型中对应类型的参数存储到session中
比如说

@SessionAttributes(value={"names"},types={Integer.class})
@Controller
public class Test {
     @RequestMapping("/test")
     public String test(Map<String,Object> map){
         map.put("names", Arrays.asList("caoyc","zhh","cjx"));
         map.put("age", 18);
         return "hello";
     }
 }

这样,你这个names和age就都被放进session域中去了
 
注意事项:@SessionAttributes注解只能在类上使用,不能在方法上使用
 

           


CAPTCHAis initialing...
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00