用户登录优化-用户会话session

什么是Session会话

  • Session 就一个接口(HttpSession)。
  • Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。
  • 每个客户端都有自己的一个 Session 会话。
  • Session 会话中,我们经常用来保存用户登录之后的信息。

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。

  • Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
  • 当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。
  • Session 对象最常见的一个用法就是存储用户的首选项。

session对象主要是存在服务器端,用于保存服务器的临时数据的对象,所保存的数据可以在整个项目中都可以通过访问来获取,把session的数据看做一个共享的数据。首次登录的时候所获取到的数据,转移到session对象即可。session.getAttrbute(“key”)可以将获取session中的数据这种行为进行封装,封装在BaseController类中。


1、封装session对象中数据的获取(封装在父类中)、数据的设置(当用户登陆成功后进行数据的设置,设置到全局的session对象)
2、在父类中封装两个数据:获取uid和username。头像暂时不考虑,将来封装在cookie中使用
 /**
     * 获取sessiopn对象中的uid
     * @param session  session对象
     * @return       当前登录的用户的uid的值
     */
    protected final Integer getuidFromSession(HttpSession session){
        return  Integer.valueOf(session.getAttribute("uid").toString());
    }

    /**
     * 获取当前用户的username
     * @param session   session对象
     * @return           当前登录用户的用户名
     */
    protected final String getUsernameFromSession(HttpSession session){
        return  session.getAttribute("username").toString();
    }
3、在登录方法中将对象数据封装在session对象中。

服务器本身自动创建有session对象,已经是一个全局的session对象
Springboot直接使用session对象,直接将HTTPSession类型的对象作为请求处理方法的参数,会自动将全局的session对象注入到请求处理方法 的session形参上
在这里插入图片描述

  @RequestMapping("login")
    public JsonResult<User> login(String username, String password, HttpSession session){
        User data = userService.login(username, password);
        //向session对象中完成数据的绑定(全局的)
        session.setAttribute("uid", data.getUid());
        session.setAttribute("username", data.getUsername());
        //获取session中绑定的数据
        System.out.println(getuidFromSession(session));
        System.out.println(getUsernameFromSession(session));

        return new JsonResult<>(ok,data);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值