java后端获取前端的httpsession对象

  • Post author:
  • Post category:java


普通的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。



版权声明:本文为qq_45128278原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。