SpringMVC HttpSession 与 Model 区别

一、 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>
  (直接用)
  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC中,使用Session需要进行以下步骤: 1. 在Controller中添加一个方法,该方法用于处理登录请求,并将用户信息保存到Session中: ```java @Controller public class LoginController { @PostMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { // 验证用户名和密码 if ("admin".equals(username) && "123456".equals(password)) { // 将用户信息保存到Sessionsession.setAttribute("user", new User(username, password)); return "redirect:/index"; } else { return "redirect:/login"; } } } ``` 2. 在其他Controller中获取Session中保存的用户信息: ```java @Controller public class IndexController { @GetMapping("/index") public String index(HttpSession session, Model model) { // 从Session中获取用户信息 User user = (User) session.getAttribute("user"); model.addAttribute("user", user); return "index"; } } ``` 在JSP页面中,可以使用EL表达式`${user.username}`来获取Session中保存的用户名。 需要注意的是,如果不想在每个Controller的方法中都添加HttpSession参数,可以使用Spring MVC提供的@SessionAttributes注解,将需要保存到Session中的属性添加到模型中,如下所示: ```java @Controller @SessionAttributes("user") public class IndexController { @GetMapping("/index") public String index(Model model) { // 从模型中获取用户信息 User user = (User) model.getAttribute("user"); model.addAttribute("user", user); return "index"; } } ``` 这样,在其他Controller中也可以获取到Session中保存的用户信息。需要注意的是,@SessionAttributes只适用于使用ModelAttribute注解的方法,而不适用于使用RequestParam注解的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值