Cookies 如何在websocket端点内获取cookie值

Cookies 如何在websocket端点内获取cookie值,cookies,websocket,java-ee-7,Cookies,Websocket,Java Ee 7,我正在应用程序中使用基于JavaEE7的Websocket API 我需要访问websocket端点内Cookie中设置的值[注释一:@ServerEndpoint(“/websocket”)]。我该怎么做 @onOpen()方法存在,当建立到此websocket端点的连接时,将自动调用该方法。我想访问这个方法中的cookies值 我知道如何在servlet或JSP中实现这一点,但我对WebSocket还不熟悉 请帮我做这个。提前感谢。通过@ServerEndpoint(configurator

我正在应用程序中使用基于JavaEE7的Websocket API

我需要访问websocket端点内Cookie中设置的值
[注释一:@ServerEndpoint(“/websocket”)]
。我该怎么做

@onOpen()
方法存在,当建立到此websocket端点的连接时,将自动调用该方法。我想访问这个方法中的cookies值

我知道如何在servlet或JSP中实现这一点,但我对WebSocket还不熟悉


请帮我做这个。提前感谢。

通过
@ServerEndpoint(configurator=MyConfigurator.class)
技术访问请求参数


看,因为它的技术非常相似。

虽然Joakim的回答确实提供了一个正确方向的提示,但我认为它并没有完全回答这个问题,或者至少可以补充

为了检索cookie的值,您必须获取握手请求对象的头,并查找名为“cookie”的头。您的modifyHandshake实现将类似于:

public class MyEndpointConfigurator extends ServerEndpointConfig.Configurator {
    @Override
    public void modifyHandshake(ServerEndpointConfig config, 
                                HandshakeRequest request, 
                                HandshakeResponse response)
    {
        Map<String,List<String>> headers = request.getHeaders();
        config.getUserProperties().put("cookie",headers.get("cookie"));
    }
}
公共类MyEndpointConfigurator扩展了ServerEndpointConfig.Configurator{
@凌驾
公共无效修改握手(ServerEndpointConfig配置,
握手请求,
握手(应答)
{
Map headers=request.getHeaders();
config.getUserProperties().put(“cookie”,headers.get(“cookie”);
}
}

这真是太棒了。我可以使用您所演示的方式成功地获取HttpSession。但我的目的是获取cookies,而不是HttpSession;我尝试过同样的场景,但没有成功this.httpCookie=(HttpSession)config.getUserProperties().get(httpCookie.class.getName());'我不知道如何通过Configurator的modifyHandshake()方法将此HttpCookie放入EndPointConfig。帮我做这件事。这实际上与原文不符question@gshauger这确实是一个重复的问题,因此引用了关于访问HttpSession的另一个答案(传统上,Cookies是从JEE应用程序中访问的)@JoakimErdfelt感谢链接到另一个答案。那里有丰富的信息。