@SessionAttribute注解使⽤
如果想让参数在多个请求间共享,那么可以⽤到要说到的@SessionAttribute注解
@Controller
@RequestMapping("sc")
@SessionAttributes("name")
public class SessionController {
@RequestMapping("ssion")
public String ssions(Model model,HttpSession ssion){
model.addAttribute("name", "winclpt");
ssion.tAttribute("myName", "chke");
return "ssion";
}
上⾯的代码将Model中的name参数保存到了ssion中(如果Model中没有name参数,⽽ssion中存在⼀个name参数,那么SessionAttribute会将这个参数塞进Model中)
SessionAttribute有两个参数:
String[] value:要保存到ssion中的参数名称
Class[] typtes:要保存的参数的类型,和value中顺序要对应上
所以可以这样写:@SessionAttributes(types = {Ur.class,Dept.class},value={“attr1”,”attr2”})
原理理解:它的做法⼤概可以理解为将Model中的被注解的attrName属性保存在⼀个SessionAttributesHandler中,在每个RequestMapping 的⽅法执⾏后,这个SessionAttributesHandler都会将它⾃⼰管理的“属性”从Model中写⼊到真正的HttpSession;同样,在每个RequestMapping的⽅
法执⾏前,SessionAttributesHandler会将HttpSession中的被@SessionAttributes注解的属性写⼊到新的Model中。 如果想删除ssion中共享的参数,可以通过SessionStatus.tComplete(),这句只会删除通过@SessionAttribute保存到ssion中的参数
武士白东秀
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
八月份什么星座@Controller
@RequestMapping("/ur")
//这⾥⽤了@SessionAttributes,可以直接把model中的ur(也就key)放⼊其中
公开的反义词
//这样保证了ssion中存在ur这个对象雨中的回忆
@SessionAttributes("ur")
public class UrController {
@Autowired
怎样做肉皮冻
private UrService urServivce;
//正常访问login页⾯
@RequestMapping("/login")
public String login(){
return "login";
}
//表单提交过来的路径
@RequestMapping("/checkLogin")
电信iptvpublic String checkLogin(Ur ur,Model model){
//调⽤rvice⽅法
ur = urServivce.Urname(), ur.getPassword()); //若有ur则添加到model⾥并且跳转到成功页⾯
if(ur != null){
model.addAttribute("ur",ur);
return "success";
}
return "fail";
}
//测试超链接跳转到另⼀个页⾯是否可以取到ssion值
@RequestMapping("/anotherpage")
public String hrefpage(){
return "anotherpage";
}
/
/注销⽅法
@RequestMapping("/outLogin")
人体模特造型写真public String outLogin(HttpSession ssion){
//通过ssion.invalidata()⽅法来注销当前的ssion
ssion.invalidate();243
return "login";
}
}