java后端获取前端的httpsession对象

普通的onopen函数:

@OnOpen
        public static void onOpen(Session session) {
            sessions.set(session);
            addOnlineCount();
            sessionMap.put(session.getId(), session);
            flag=1;
            System.out.println("【" + session.getId() + "】连接上服务器======当前在线人数【" + getOnlineCount() + "】");
            //连接上后给客户端一个消息
            sendMsg(session, "连接服务器成功!");
          timer(session);//定时器入口
        }

1.获取httpsession的:

@OnOpen
    public static void onOpen(Session session,EndpointConfig config) {
        httpSession = (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
        //System.out.println("httpsession里的userid!"+httpSession.getAttribute("login_UserId"));
        sessions.set(session);
        addOnlineCount();
        //sessionMap.put(session.getId(), session);//存的时候,把sessionid作为key,session是value。
        sessionMap.put((httpSession.getAttribute("login_UserId")).toString(),session);//存的时候,把登陆者的userid作为key,session是value。
        //System.out.println(session.getId()+"/session.getID和session/"+session);
        System.out.println("【" + session.getId() + "】连接上服务器======当前在线人数【" + getOnlineCount() + "】");
        //连接上后给客户端一个消息
        //sendMsg(session, "连接服务器成功!");
        flag=0;
        int j;
        j=0;
        timer(session,j);//定时器入口
    }

2.以及java文件的类名前修改成这样:

@ServerEndpoint(value = "/websocket", configurator = GetHttpSessionConfigurator.class)
@Component
public class websocket {

3.添加该文件:

在这里插入图片描述

package com.example.mobile_cd.websocket.config;

import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import javax.websocket.server.ServerEndpointConfig.Configurator;

public class GetHttpSessionConfigurator extends Configurator {

        @Override
        public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
            HttpSession httpSession = (HttpSession) request.getHttpSession();
            sec.getUserProperties().put(HttpSession.class.getName(), httpSession);
        }

}

取httpsession值示例:

此时在前端登录时已经把loginid存入了httpsession了。

 sessionMap.put((httpSession.getAttribute("login_UserId")).toString(),session);//存的时候,把登陆者的userid作为key,session是value。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值