(1)、@ModelAttribute主要有两种用法:
非功能:是指没有去加上@RequestMapping在控制器里是一个普通的类/方法,不属于Junit 要去处理某个URL的方法。对于这种你加了这个之后其他的之前都会执行这个方法。比如:前面学的 Junit4测试里面的@Before很类似,你在处理下面所有方法之前有这个方法的都会先执行一遍再 执行下面的方法
第一种用法 :标注在非功能方法上,每次执行方法时都会先执行@ModelAttribute注解的方法
@ModelAttribute注解的方法可以:
①在参数中获取使用Model,HttpServletRequest,HttpServletResponse等
②也可以正常获取请求的数据
③可以向Model、HttpServletRequest中添加数据
若该方法有返回值时:自动把返回的数据添加到Modal中,对于此时的Key值有两种情况
①如果@ModelAttribute没有指定value值,那么添加的key就是类型名称首字母小写
②如果指定了value值会在①的基础上额外添加一个,key就是指定的值
第二种用法:用在方法的参数上,将注解的参数添加到Model中,Key值有两种情况
①若@ModelAttribute未指定value值,那么Key值就是类型名称首字母小写
②若@ModelAttribute指定value值,那么key值就是指定的值
@ModelAttribute注解:
一、使用@ModelAttribute注解的方法,返回void 。
在@ModelAttribute注解的方法中也可以
①在参数中获取使用Model,HttpServletRequest,HttpServletResponse等。
②也可以正常获取请求的数据
③可以向Model、HttpServletRequest中添加数据
二、使用@ModelAttribute注解的方法,有返回值时和返回void是基本一致,多了一个功能:自动把返回的数据添加到Modal中,①如果@ModelAttribute没有指定value值,那么添加的key就是类型名称首字母小写②如果指定了value值会在①的基础上额外添加一个,key就是指定的值
显示结果:如果@ModelAttribute注解在参数上的使用,作用如下:将注解的参数添加到Model中,Key值有两种情况分别是:
①若@ModelAttribute未指定value值,那么Key值就是类型名称首字母小写
②若@ModelAttribute指定value值,那么key值就是指定的值
(2)、@SessionAttributes与@SessionAttribute的使用
在springMVC中两个长得很是相识的注解是:@SessionAttributes 和 @SessionAttribute。
@SessionAttributes用于在请求之间的HTTP Servlet会话中存储model属性。 它是类型级别的注解,用于声明特定控制器使用的会话属性。会筛选该控制器下的所有添加到Model中的数据,将符合筛选条件的数据自动添加到Session中。
@SessionAttribute 用在方法的形参上,从session中获取指定名称的的数据,并把数据给形参参数。
在页面上显示:@SessionAttribute从session中获取指定名称的的数据,并把数据给形参参数required属性默认为true,如果获取的数据不存在——400错误