hypermesh保存session和model区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hypermesh保存session和model区别相关的知识,希望对你有一定的参考价值。
区别大部分在于有效范围大小,session创建后,可以一直存在,只要不调用session.invalidate()方法清除session,它就会一直存储在服务器端的一段内存中,只有当会话结束之后才会消失,通常session用来判断用户登录的状态,在ssm中通过拦截器以及session来控制用户登录后的访问权限。 model的数据,只会在下一页面中使用,比如在开发ssm中,你在控制器中通过model存储了数据,控制器返回的视图就可以通过el表达式调用model中存储的数据。 还有重定向与转发,如果是重定向,由于是重新请求,model的数据会消失,转发则不会,而对于Session来说,无论是重定向与转发,session的值都不会发生改变。 参考技术A 其实model和session都是存放信息的地方,不同的地方就是他们的生命周期不同,model是request级别的,session是一次会话,在服务器与一个用户客户端交互过程中一直保留。即在用户登录一个网站后,session里存放的用户数据可以在该网站的其他页面使用。
model的数据只能在该页面使用。
域对象-数据输出
在request、session、application雨中保存数据,进行数据的传递:
SpringMVC除了可以在方法上传入request和session外还能怎么样吧数据带给页面:
1、方法返回值是String,可以在方法出传入Map、Model、ModelMap。这些参数里面保存的所有数据都会放在request域中,可以在页面获取;
关系:Map、Model、ModelMap,最终都是BindingAwareModelMap在工作;相当于在BindingAwareModelMap中保存的东西都会被放在请求域中;
Map(interface[jdk]) Model(interface[Spring])
@RequestMapping("input")
public String input(Map map, ModelMap modelMap, Model model)
map.put("msg","hello") ;
modelMap.addAttribute("name","word") ;
model.addAttribute("age",17) ;
return "message/index" ;
2、方法的返回值可以变为ModelAAndView属性:
即包含视图信息(页面地址)也包含模型数据(给页面带的数据),而且数据时放在请求域中;
@RequestMapping("input")
public ModelAndView input(HttpServletRequest request , HttpServletResponse response)
ModelAndView modelAndView = new ModelAndView("message/index");
modelAndView.addObject("msg","hello") ;
return modelAndView ;
3、给session域中保存数据:
@RequestMapping("input") public ModelAndView input() HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession() ; session.setAttribute("msg","hello"); return new ModelAndView("message/index") ;
以上是关于hypermesh保存session和model区别的主要内容,如果未能解决你的问题,请参考以下文章