我在我的应用程序中使用基于JavaEE 7的Websocket-API。
我需要访问我的websocket端点[Annotated one : @ServerEndpoint ("/websocket") ]
内的cookie中设置的值。我该怎么做?
@onOpen()
方法,当建立与此websocket端点的连接时将自动调用该方法。我希望在此方法中访问那里的cookie值。
我知道如何在servlet或JSP中执行此操作,但我是Websockets的新手。
请帮我这样做。提前谢谢。
答案 0 :(得分:9)
虽然Joakim的回答确实提供了正确方向的暗示,但我认为它并没有完全回答这个问题,或者至少可以补充。
为了检索cookie的值,您必须获取HandshakeRequest对象的标头,并查找名为“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"));
}
}
答案 1 :(得分:6)
通过@ServerEndpoint(configurator=MyConfigurator.class)
技术访问请求参数。
请参阅other answer on how to access the HttpSession,因为它的技术非常相似。