入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

spring mvc session注解用法

创建时间:2015-12-31 投稿人: 浏览次数:2056

顾名思义SessionAttributes就是保存session的,SessionAttributes使用方法很简单,@SessionAttributes 允许指定多个属性。你可以通过字符串数组的方式指定多个属性,如 @SessionAttributes({“attr1”,”attr2”})。此外,@SessionAttributes 还可以通过属性类型指定要 session 化的 ModelMap 属性,如 @SessionAttributes(types = User.class),当然也可以指定多个类,如 @SessionAttributes(types = {User.class,Dept.class}),还可以联合使用属性名和属性类型指定:@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})。

以下例子使用:@SessionAttribute必须配合@ModelAttribute一起使用。


1. SessionAttributes 的作用 

?
1 2 3 4 5 6 7      一般而言ModelAndView中的属性作用域都是request级别,即本次请求结束,属性也随之销毁。 如果想要实现多个请求共享其某个属性,需将其保存至session   @SessionAttributes能自动捕获到当前controller中ModelAndView的指定属性,并转存为session   @SessionAttributes({"a""b"}) 保存多个session


    2. 通过使用 @SessionAttributes("user") 快速得到user

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView;   @Controller @RequestMapping("/info") @SessionAttributes("user")  //要在方法中直接注解user必须要这一步 public class InfoController {     private Logger logger = LoggerFactory.getLogger(InfoController.class);           @RequestMapping("")     public ModelAndView view(@ModelAttribute User user,) {         ModelAndView modelView = new ModelAndView("/info/view");         logger.info(user.toString());         return modelView;      }

@SessionAttributes

  说明:

    Spring允许我们有选择地指定 ModelMap中的哪些属性需要转存到 session中,以便下一个请求属对应的 ModelMap的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes注解来实现的。@SessionAttributes只能声明在类上,而不能声明在方法上。

  例如:

    @SessionAttributes("currUser") //将ModelMap中属性名为currUser的属性
    @SessionAttributes({"attr1","attr2"})
    @SessionAttributes(types = User.class)
    @SessionAttributes(types = {User.class,Dept.class})
    @SessionAttributes(types ={User.class,Dept.class},value={"attr1","attr2"})

  实例:

    

       ----------------------------------------------------------------------------------------------------------------------

  2.11  @ModelAttribute

    这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。

    示例代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import javax.annotation.Resource;  
  2. import org.springframework.stereotype.Controller;  
  3. import org.springframework.ui.ModelMap;  
  4. import org.springframework.web.bind.annotation.ModelAttribute;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6. import org.springframework.web.bind.annotation.SessionAttributes;  
  7. @Controller  
  8. @RequestMapping("/user.do")  
  9. @SessionAttributes({"u","a"})   
  10. public class UserController  {  
  11.      
  12.     @RequestMapping(params="method=reg4")  
  13.     public String reg4(ModelMap map) {  
  14.        System.out.println("HelloController.handleRequest()");  
  15.        map.addAttribute("u","kobe");  
  16.        return "index";  
  17.     }  
  18.      
  19.     @RequestMapping(params="method=reg5")  
  20. //将属性u的值赋给形参uname  
  21. public String reg5(@ModelAttribute("u")String uname,ModelMap map) {  
  22.        System.out.println("HelloController.handleRequest()");  
  23.        System.out.println(uname);  
  24.        return "index";  
  25.     }  
  26.      
  27. }  
1:  @Controller
   2:  @SessionAttributes("user")
   3:  public class testSessionAttribute {
   4:      
   5:      private Logger logger = LoggerFactory.getLogger(testSessionAttribute.class);
   6:      
   7:      @RequestMapping("test")
   8:      public String test(ModelMap map){
   9:          UserBean userBean = new UserBean();
  10:          userBean.setId(1);
  11:          userBean.setUsername("EdwardLau");
  12:          userBean.setPassword("Hello World !");
  13:          map.put("user", userBean);
  14:          return "sessionattribute";
  15:      }
  16:      
  17:      
  18:      @RequestMapping("test1")
  19:      public String test(@ModelAttribute("user") UserBean userBean){
  20:          logger.debug("test1 方法调用----------");
  21:          logger.debug(userBean.getId()+":"+userBean.getPassword()+":"+userBean.getUsername());
  22:          logger.debug("test1 方法调用结束----------");
  23:          return "users";
  24:      }
  25:      
  26:  }

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像