一、 model与session区别
1.session的概念
session即 会话,是客户为实现特定应用目的与系统的多次请求交互。它具体是指一个终端用户与交互系统进行通信的时间间隔,通常指从 注册进入系统到注销退出系统 之间所经过的时间。
2.为什么需要session?
Http协议是一种 无状态 的协议,客户端每打开一个web页面,它就会与服务器建立一个新连接,发送新请求到服务器,服务器处理请求并将该请求返回到客户端。服务器不记录任何客户端信息,每次客户端发送的请求都是独立的,这种方式不可用。
3.session的作用
(1)session可以是一种能将信息保存于服务器端的技术,能记录特定的客户端到服务器的一系列请求。
(2) session 里放的数据保存在服务器,可以供其他页面使用,只要用户不退出或者SESSION过期,这个值就一直可以保留。在当前的 request周期之内,调用getAttribute方法同样也可以得到。
4.创建session的流程
在网站使用中,为了保存用户信息,服务器会给每一个用户(浏览器)创建一个Session。
流程:
1、客户端请求服务器
2、服务器创建Session,在服务器端保存用户数据
3、服务器返回给客户端一个SessionId(JSESESSION)是一个Cookie
4、用户在Session作用时间内再次访问服务器就会根据SessionId取出用户的Session
1.model的概念
Model是一个接口,是request级别的,作用域与request相似。ModelMap是接口的实现。是将model中的数据填充到request域中,返回给客户端。
2.为什么需要model?
model可以将数据放入视图中。
3.model的作用
(1)model的数据,只能在Controller返回的页面使用,其他页面不能使用。
(2)spring中model缓存的值是保存在request的getAttribute里面。当调用controller里面某个@requestmapping注解的方法,都能取到这个model里面的值。
二、modelAttribute与sessionAttribute区别
1.modelAttribute:常量定义,比如key,value的映射。像下拉框,多选框等等
2.sessionAttribute:跟用户会话相关的常量,如用户基本信息等
三、示例
SpringBoot
显示当前登录用户的状态信息(二者效果一样)
controller
session.setAttribute("admin",admin);
session.setAttribute("loginUser",username);
页面
<a href="#">[[${session.admin.account}]]</a>
<a href="#">[[${session.loginUser}]]</a>
(session需要加上)
controller
model.addAttribute("msg", "账号或密码错误");
页面
<a href="javascript:;">[[${msg}]]</a>
(直接用)