`
170728576
  • 浏览: 8160 次
社区版块
存档分类
最新评论

springmvc @SessionAttributes @ModelAttribute 取session值问题

阅读更多
springmvc @SessionAttributes  @ModelAttribute 取session值问题


public class User implements Serializable{
private String id;


@Controller
@SessionAttributes(Constants.USER_INFO_SESSION)
public class LoginControll {
@RequestMapping(value = "login.html", method = RequestMethod.POST)
	public String login(
			@RequestParam(value = "username", required = false) String username,
			@RequestParam(value = "password", required = false) String password,
			@ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
			HttpSession session
			Model model) {
		
			SysUser user = userService.validateLogin(username, password);
			System.out.println(user.getId());
			model.addAttribute(Constants.USER_INFO_SESSION);
			return Constants.RESULT_SUCCESS;
      
     }
}

输出:11000

@Controller
@RequestMapping("/User")
@SessionAttributes(Constants.USER_INFO_SESSION)
public class UserControll {

public @ResponseBody List<?> list(
     @RequestParam(value = "node", required = false)String node,
	 @ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
	 HttpSession session
      ) {
	System.out.println("user.getId():"+user.getId());
	User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
	System.out.println("u.getId():"+u.getId());

输出:
user.getId():00
u.getId():00

session去USER对象id值变成了'00'

发现请求参数中有同名id,值是'00'
@Controller
@RequestMapping("/User")
@SessionAttributes(Constants.USER_INFO_SESSION)
public class UserControll {

public @ResponseBody List<?> list(
     @RequestParam(value = "node", required = false)String node,
	 @RequestParam(value = "id", required = false)String id,
	 @ModelAttribute(Constants.USER_INFO_SESSION)SysUser user,
	 HttpSession session
      ) {
        System.out.println("id:" + id);
	System.out.println("user.getId():"+user.getId());
	User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
	System.out.println("u.getId():"+u.getId());

输出:
id:00
user.getId():00
u.getId():00

请求中参数有同名id,会覆盖session中所有对象同名属性值

改成如下
@Controller
@RequestMapping("/User")
public class UserControll {

public @ResponseBody List<?> list(
     @RequestParam(value = "node", required = false)String node,
	 @RequestParam(value = "id", required = false)String id,
	 HttpSession session
      ) {
        System.out.println("id:" + id);
	User u = (User)session.getAttribute(Constants.USER_INFO_SESSION);
	System.out.println("u.getId():"+u.getId());

输出:
id:00
u.getId():11000

0
2
分享到:
评论

相关推荐

    SpringMVC基础—— ModelAttribute和 SessionAttribute.docx

    虽然`@ModelAttribute`主要处理请求级的数据,但Spring MVC还提供了`@SessionAttributes`注解,用于将某些模型对象保存在session中,跨多个请求保持状态。`@SessionAttributes`通常用于处理那些在多个请求之间需要...

    SpringMVC杂记(三) 向导型Controller的实现(基于SpringMVC 3.1.1)

    SpringMVC 3.1.1版本的源码中,Controller接口和相关注解(如@RequestMapping、@SessionAttributes、@ModelAttribute)的实现提供了上述功能的基础。通过阅读源码,我们可以更深入地理解这些特性的内部工作原理。 ...

    SpringMVC处理模型数据-2.docx

    当控制器类被标注了`@SessionAttributes`注解时,SpringMVC会将模型中对应的属性暂存到`HttpSession`中。 **示例代码:** ```java @SessionAttributes(value = {"user"}) public class UserController { @...

    SpringMVC model和session

    在这个示例中,`@SessionAttributes`注解使`User`对象在登录后被自动保存在Session中,后续的`protectedPage`请求可以直接通过`@ModelAttribute`从Session中恢复。 总结起来,Spring MVC中的Model用于在单个请求...

    SpringMVC SessionAttribute 使用说明.docx

    1. **模型属性注入**:当`@ModelAttribute`注解在方法参数上时,Spring MVC会尝试从请求参数、模型或会话中找到匹配的属性值,将其绑定到该参数对象。 2. **模型更新**:若`@ModelAttribute`注解在方法上,那么该...

    annotation-springMVC.rar_springmvc_springmvc API chm

    以上是对SpringMVC中注解的概述,实际开发中还有许多其他注解,如`@SessionAttribute`、`@CookieValue`、`@RequestParam`等,它们共同构成了SpringMVC强大的注解驱动机制。理解并熟练运用这些注解,能让你在...

    SpringMVC存取Session的两种方法

    在`logout()`方法中,获取并清除Session中的"manager"键对应的值,实现用户登出。 **方法二:使用`@SessionAttributes`注解** Spring MVC提供了一个`@SessionAttributes`注解,它可以自动将模型属性与Session关联...

    SpringMVC Jar 包

    SpringMVC通过@ModelAttribute注解帮助模型和视图间的数据传递。 3. **Controller接口和@RequestMapping**:Controller接口定义了处理请求的方法,而@RequestMapping注解用于指定URL映射,可以基于HTTP方法(GET, ...

    SpringMVC完整使用教程

    `@SessionAttributes` 注解用于将特定属性存储在 session 中,以便跨请求访问。`@ModelAttribute` 注解通常用于在请求处理前预先填充一个对象,便于后续操作。 ### 第 5 章 视图解析 SpringMVC 使用 `ViewResolver`...

    springmvc 尚硅谷资料整理

    public String handle6(@CookieValue(value="sessionId", required=false) String session) { System.out.println(session); } ``` 6. **属性注入方式注入POJO对象:** - 支持级联属性注入,例如: ```java ...

    SSM笔记-处理模型数据

    本文主要围绕"SSM笔记-处理模型数据"这一主题,深入探讨ModelAndView、ModelAttribute以及SessionAttributes在SpringMVC中的应用。 首先,我们来理解ModelAndView。在SpringMVC中,Controller处理完业务逻辑后,...

    springMVC笔记.pdf 初学笔记

    Session可以使用@SessionAttributes注解来指定Session的名称和范围。 类型转换 SpringMVC提供了类型转换的机制,例如Converter接口,可以自定义类型转换器来实现类型转换。 总结 SpringMVC是基于Java的开源web...

    springMVC 注解版

    - `@CookieValue` 和 `@SessionAttributes`:从 Cookie 或 Session 中获取值。 **6. 异常处理** - `@ExceptionHandler`:处理特定类型的异常,提供统一的错误页面或响应。 - `@ControllerAdvice`:全局的控制器增强...

    SpringMVC中一个Controller多个方法

    另外,`@ModelAttribute`注解用于将请求参数绑定到Java对象,`@SessionAttributes`则可以管理session中的数据。还有`@ExceptionHandler`用于全局处理异常,提供统一的错误页面或API响应。 综上所述,Spring MVC的...

    SpringMVC中注解的详细使用

    9. `@SessionAttributes`:标记需要存储在HTTP Session中的属性。这些属性可以在多个请求之间共享,例如在购物车应用中。 10. `@Autowired`:Spring的依赖注入注解,自动将匹配的Bean注入到当前字段或方法中。它...

    springMVC注解大全

    10. `@SessionAttributes`:用于将模型属性存储在HTTP session中,跨多个请求共享。 11. `@Autowired`:Spring的依赖注入注解,自动将符合类型的bean注入到当前字段或方法参数中。 12. `@Qualifier`:配合`@...

    SpringMVC小Demo

    SpringMVC还支持数据绑定,可以通过`@RequestParam`从请求参数中获取值,或者`@ModelAttribute`将数据绑定到模型对象。此外,可以使用`@SessionAttributes`来管理session级别的数据。 在实际应用中,我们可能还需要...

    详解SpringMVC如何进行数据回显

    在这个过程中,SpringMVC提供了多种机制来实现数据回显,包括模型数据导向视图、@ModelAttribute、Map Model和SessionAttributes等。 模型数据导向视图 在SpringMVC中,模型数据是指控制器传递给视图的数据。模型...

    尚硅谷SpringMVC视频

    - **@SessionAttributes**:指定要存储在session中的属性。 ### 五、SpringMVC的高级特性 #### 5.1 数据绑定 - **自动类型转换**:SpringMVC能够自动将字符串类型的请求参数转换为目标对象的数据类型。 - **数据...

    SpringMVC课堂笔记(1)

    5. `@SessionAttributes`:用于指定哪些属性存储在HTTP Session中。 6. `@ExceptionHandler`:用于处理异常情况。 #### 六、SpringMVC与Struts2的区别 1. **配置方式**:SpringMVC倾向于使用声明式编程,通过注解或...

Global site tag (gtag.js) - Google Analytics