SpringMVC-6 如何使用Session

本文详细介绍了SpringMVC中如何利用@SessionAttributes注解将数据保存到Session中,从Session原理开始讲解,通过实例展示了保存、读取Session数据的过程,并在测试中验证了注解的作用。
摘要由CSDN通过智能技术生成

Session原理

当浏览器首次访问服务器时,服务器会创建一个session对象,这个对象存储了这个session的sessionId和一些数据,服务器会将sessionId以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将保存的sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。

将属性保存到Session中

在SpringMVC中使用@SessionAttributes注解可以将数据保存到Session中,用该注解标注相应的Controller类,并指明要保存到session中的数据的key,即可
实现上述功能。
代码在此:

@Controller
//表示要将msg存入session
@SessionAttributes(value={
   "msg"})
public class SessionController {
   
	@RequestMapping("/user")
	public ModelAndView sessionTest() {
   
		ModelAndView mav = new ModelAndView();
		mav
Spring MVC中,使用Session需要进行以下步骤: 1. 在Controller中添加一个方法,该方法用于处理登录请求,并将用户信息保存到Session中: ```java @Controller public class LoginController { @PostMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { // 验证用户名和密码 if ("admin".equals(username) && "123456".equals(password)) { // 将用户信息保存到Sessionsession.setAttribute("user", new User(username, password)); return "redirect:/index"; } else { return "redirect:/login"; } } } ``` 2. 在其他Controller中获取Session中保存的用户信息: ```java @Controller public class IndexController { @GetMapping("/index") public String index(HttpSession session, Model model) { // 从Session中获取用户信息 User user = (User) session.getAttribute("user"); model.addAttribute("user", user); return "index"; } } ``` 在JSP页面中,可以使用EL表达式`${user.username}`来获取Session中保存的用户名。 需要注意的是,如果不想在每个Controller的方法中都添加HttpSession参数,可以使用Spring MVC提供的@SessionAttributes注解,将需要保存到Session中的属性添加到模型中,如下所示: ```java @Controller @SessionAttributes("user") public class IndexController { @GetMapping("/index") public String index(Model model) { // 从模型中获取用户信息 User user = (User) model.getAttribute("user"); model.addAttribute("user", user); return "index"; } } ``` 这样,在其他Controller中也可以获取到Session中保存的用户信息。需要注意的是,@SessionAttributes只适用于使用ModelAttribute注解的方法,而不适用于使用RequestParam注解的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值