Heim >Web-Frontend >HTML-Tutorial >WebSocket之获取HttpSession_html/css_WEB-ITnose

WebSocket之获取HttpSession_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 09:00:221404Durchsuche

WebSocket之获取HttpSession

由于WebSocket与Http协议的不同,故在使用常用的HttpSession方面就存在了一些问题。通过google翻阅到了在onOpen方法下使用HttpSession的方法。

新建一个GetHttpSessionConfigurator类并继承Configurator类

package per.zww.web;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;/* * 获取HttpSession *  */public class GetHttpSessionConfigurator extends Configurator {    @Override    public void modifyHandshake(ServerEndpointConfig sec,            HandshakeRequest request, HandshakeResponse response) {        // TODO Auto-generated method stub        HttpSession httpSession=(HttpSession) request.getHttpSession();        sec.getUserProperties().put(HttpSession.class.getName(),httpSession);    }    }

然后在@ServerEndpoint注解里面添加configurator属性

@ServerEndpoint(value="/socketTest",configurator=GetHttpSessionConfigurator.class)

在onOpen方法里加入参数 EndpointConfig config即可获取HttpSession

  @OnOpen    public void onOpen(Session session,EndpointConfig config) {        HttpSession httpSession= (HttpSession) config.getUserProperties().get(HttpSession.class.getName());        System.out.println( httpSession.getAttribute("name"));        sessionMap.put(session.getId(), session);    }
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn