HttpSession
JSESSIONID でJava を取得したい。出来ますか?はいの場合、どのように?
3 に答える
Map
あなたは自分自身を使ってそれらをすべて集める必要がありHttpSessionListener
ます。
public class HttpSessionCollector implements HttpSessionListener {
private static final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>();
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.put(session.getId(), session);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
sessions.remove(event.getSession().getId());
}
public static HttpSession find(String sessionId) {
return sessions.get(sessionId);
}
}
web.xml
実行するには、次のように登録するだけです。
<listener>
<listener-class>com.example.HttpSessionCollector</listener-class>
</listener>
次に、必要な場所で問題HttpSessionCollector.find(sessionId)
を取得するだけですHttpSession
。
とは言え、これはすごい匂いです。これよりも実際の機能要件を解決するためのより良い方法は確かにあります;)フォローアップの質問でコメントしたように:
現実世界では絶対にやってはいけない質問をしたのはこれで 2 回目です。正直なところ、これはすべてにおいがします。
HttpSession
サーバー側でJSESSIONIDに関連付けられたものを取得し、クライアント側でJSESSIONID値を取得することが「解決策」であるとあなたが考える問題は何ですか? これについては、新しい質問で詳しく説明してください。正しい方法で回答を得ることができます。
真剣に考えてください。私たちはあなたをからかっているわけではありません。私たちは、あなたのプロジェクト/Web アプリケーションがセキュリティ ホールや悪い慣行によって壊れたり、解雇されたりするのを避けるために、正しい方向にあなたを助けようとしているだけです。
BalusCの回答に従って実行できますが、そのような機能の存在は、異なるユーザー間の一応のセキュリティ違反です. このようなものをアプリケーションに組み込むべきではありません。
いいえ、APIはこれを許可していません。
もっと言いたいのですが、それだけです。