Spring @SessionAttributes注解 @ModelAttribute注解
一、@SessionAttribute详解
如果多个请求之间需要共享数据,就可以使用@SessionAttribute。
配置的方法:
在控制器类上标注@SessionAttribute。
配置需要共享的数据范围。
这样,就可以将model中的属性同步到session中了。
注意:
默认情况,SpringMVC会将model的数据存放在request域中。
此时,当一个请求结束之后,数据将会失效。
因此,当数据需要跨页面使用时,就需要将数据存放到session中。
@SessionAttributes就是将指定的model中的数据拷贝到session中。
使用方法:
@SessionAttribute中,
value指定需要放入会话的属性名称。
type指定需要放入会话的属性类型。
@SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添加到会话中。
@SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept的属性添加到会话中。
@SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为user1和user2以及类型为Dept的属性添加到会话中。
@SessionAttributes(value={"user"})
@Controller
public class UserController {
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model){
User user = new User("jack","123456");
model.addAttribute("user", user);
return "success";
}
}
在前端取值:
${requestScope.user}
${sessionScope.user}
二、@ModelAttribute详解
主要的作用:
将数据添加到model对象中,用于视图页面展示的时候使用。
@ModelAttribute注解的方法,在controller中每个处理方法被调用之前,都会按照先后顺序被执行一次。
因此,当一个controller映射多个URL,使用该注解需要谨慎。
注解使用情形:
(1) @ModelAttribute 注释没有返回值的方法:
@Controller
@RequestMapping(value="/")
public class TestModelAttributeController { @RequestMapping(value="/result")
public String login(Model model) {
//如果测试成功,控制台输出true
System.out.println(model.containsAttribute("username"));
System.out.println(model.containsAttribute("pwd"));
return "result";
}
@ModelAttribute
public void user(
@RequestParam("username") String username,
@RequestParam("pwd") String pwd,Model model) {
model.addAttribute("username", username);
model.addAttribute("pwd", pwd);
}
}
在@RequestMapping注解的方法被调用时,在这个方法之前,@ModelAttribute方法将会先被执行。
model.addAttribue("key",value)绑定键值。
上面这种情况,当URL或者post没有传递参数时,会报错。
(2) @ModelAttribute 注释返回具体类的方法
@ModelAttribute
public User userModel(@RequestParam("username") String username,@RequestParam("pwd") String pwd){
User user = new User(username,pwd);
return user;
}
这里,model属性的名称没有指定。
由返回类型隐含表示。
属性名称是user。
(3)@ModelAttribute(value="")注释返回具体类的方法
@Controller
@RequestMapping(value="/")
public class TestModelAttributeController{ @RequestMapping(value="result")
public String login(Model model) {
model.containsAttribute("username");
return "result";
}
/*
* 返回的是username的值
*相当于model.addAttribute("username", username);
*/
@ModelAttribute(value="username")
public String userModel(@RequestParam("username") String username) {
return username;
}
}
(4)@ModelAttribute和@RequestMapping同时注释一个方法
@Controller
@RequestMapping(value="/")
public class TestModelAttributeController{ @ModelAttribute("username")
@RequestMapping(value="/result")
public String login(@RequestParam("username") String username,Model model) { System.out.println(model.containsAttribute("username"));
return username;
}
}
@ModelAttribute(“xxx”)的属性值作为model的attributeName,login方法返回值作为attributeName的属性值;
RequestMapping("/yyy")作为请求路径,也同时作为视图名,即跳转页面的名称
Spring @SessionAttributes注解 @ModelAttribute注解的更多相关文章
- Spring MVC 中 @ModelAttribute 注解的妙用
Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...
- spring mvc之@ModelAttribute注解
1.@ModelAttribute注释void返回值的方法 @Controller public class HelloModelController { @ModelAttribute public ...
- @ModelAttribute 注解及 POJO入参过程
一.modelattribute注解 @ModelAttribute注解的方法有两种,一种无返回值,一种有返回值,方法的可以用@RequestParam注解来获取请求的参数,如果不获取参数,可以不用此 ...
- Spring MVC常用注解@PathVariable、@RequestHeader、@CookieValue、@RequestParam、@RequestBody、@SessionAttributes、@ModelAttribute
简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri部分(这里指uri template中 ...
- Spring MVC SessionAttributes ModelAttribute注解
说明 本文主要针对 @SessionAttributes注解 和 @ModelAttribute注解的基础用法进行解析.至于为什么会将这两个注解放在一起,是因为它们之间还是有点影响的. @Sessio ...
- 全面解析Spring中@ModelAttribute注解的用法
本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:全面解析Spring中@ModelAttribute注解的用法: @ModelAttribute注解用于将方法的参数或方法的返回值绑定到 ...
- spring mvc:注解@ModelAttribute妙用
在Spring mvc中,注解@ModelAttribute是一个非常常用的注解,其功能主要在两方面: 运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入Model ...
- Spring Boot 2.0 教程 | @ModelAttribute 注解
欢迎关注微信公众号: 小哈学Java 文章首发于个人网站: https://www.exception.site/springboot/spring-boot-model-attribute Spri ...
- Spring MVC @ModelAttribute注解
在一个Controller内,被@ModelAttribute标注的方法会在此controller的每个handler方法执行前被执行. 被@ModelAttribute标注的方法的参数绑定规则和普通 ...
随机推荐
- 【LeetCode】609. Find Duplicate File in System 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】454. 4Sum II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcod ...
- 【LeetCode】378. Kth Smallest Element in a Sorted Matrix 解题报告(Python)
[LeetCode]378. Kth Smallest Element in a Sorted Matrix 解题报告(Python) 标签: LeetCode 题目地址:https://leetco ...
- Java EE数据持久化框架 • 【第1章 MyBatis入门】
全部章节 >>>> 本章目录 1.1 初识MyBatis 1.1.1 持久化技术介绍 1.1.2 MyBatis简介 1.1.2 Mybatis优点 1.1.3 利用Mav ...
- 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序 实现思路: 在 HTML 页面中放置背景图片.转盘和指针 3 张图片,并设置指 ...
- SpringCloud创建Config Client配置读取
1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置, 这里以创建Config Client服务为例, 基于已经创建好的Config Ser ...
- 使用.NET 6开发TodoList应用(21)——实现API版本控制
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 API接口版本管理,对于一些规模稍大的企业应用来说,是经常需要关注的一大需求.尽管我们的示例程序TodoList很简单,但是我 ...
- spring controller获取web前端post数据乱码解决
web.xml文件加上如下代码<!-- post请求乱码拦截器 --><filter> <filter-name>CharacterEncodingFilter&l ...
- Java带包结构调用命令行运行编译
原文: https://www.toutiao.com/i6491809562037846542/ 带包结构调用命令行运行编译. 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 分 ...
- Java定时调度
一.实现方式 Timer:单线程,串行: ScheduledExecutor:并行,论询,实现麻烦: Spring Scheduler:适合小任务: JcronTab:按照crontab语法编写的ja ...