网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

@SessionAttributes和@SessionAttribute有什么区别

本篇文章为大家展示了@SessionAttributes 和 @SessionAttribute有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为自上料搅拌车等企业提供专业服务。

@SessionAttributes 和 @SessionAttribute的区别

Spring MVC中有两个长得非常像的注解:@SessionAttributes 和 @SessionAttribute。

我们先看下@SessionAttributes的定义:

@SessionAttributes用于在请求之间的HTTP Servlet会话中存储model属性。它是类型级别的注解,用于声明特定控制器使用的会话属性。这通常列出应透明地存储在会话中以供后续访问请求的模型属性的名称或模型属性的类型。

举个例子:

 

@SessionAttributes("user")
public class LoginController {

   @ModelAttribute("user")
   public User setUpUserForm() {
       return new User();
   }
}

我们可以看到@SessionAttributes是类注解,他用来在session中存储model。如上面的例子,我们定义了一个名为“User”的model并把它存储在Session中。

我们再看一下@SessionAttribute的定义:

如果您需要访问全局存在(例如,在控制器外部(例如,通过过滤器)管理)并且可能存在或可能不存在的预先存在的会话属性,则可以在方法参数上使用@SessionAttribute注释,例如 以下示例显示:

 

@Controller
@RequestMapping("/user")
public class UserController {

  /*
   * Get user from session attribute
   */
  @GetMapping("/info")
  public String userInfo(@SessionAttribute("user") User user) {

     System.out.println("Email: " + user.getEmail());
     System.out.println("First Name: " + user.getFname());

     return "user";
  }
}

@SessionAttribute只是获取存储在session中的属性。如果要设置(添加删除)session的属性,则要考虑将org.springframework.web.context.request.WebRequest或javax.servlet.http.HttpSession注入到控制器方法中。

@SessionAttributes中绑定的model可以通过如下几个途径获取:

  • 在视图中通过request.getAttribute或session.getAttribute获取

  • 在后面请求返回的视图中通过session.getAttribute或者从model中获取

  • 自动将参数设置到后面请求所对应处理器的Model类型参数或者有@ModelAttribute注释的参数里面。

@SessionAttributes用户后可以调用SessionStatus.setComplete来清除,这个方法只是清除SessionAttribute里的参数,而不会应用Session中的参数。

 

@Controller
@SessionAttributes("pet")
public class EditPetForm {

   // ...

   @PostMapping("/pets/{id}")
   public String handle(Pet pet, BindingResult errors, SessionStatus status) {
       if (errors.hasErrors) {
           // ...
       }
           status.setComplete();
           // ...
       }
   }
}

总结一下:

@SessionAttributes 是将model设置到session中去。

@SessionAttribute 是从session获取之前设置到session中的数据。

上述内容就是@SessionAttributes 和 @SessionAttribute有什么区别,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


分享标题:@SessionAttributes和@SessionAttribute有什么区别
URL地址:http://bjjierui.cn/article/ipcigi.html

其他资讯