HttpSession#getIdとHttpServletRequest#getRequestedSessionIdの違いってなんだよ
今日ちょっとだけ苦戦した話(´・ω・`)
こんなログが出てきた
Exception occurred during processing request: レスポンスをコミットした後でセッションを作成できません
java.lang.IllegalStateException: レスポンスをコミットした後でセッションを作成できません
at org.apache.catalina.connector.Request.doGetSession(Request.java:2886)
at org.apache.catalina.connector.Request.getSession(Request.java:2316)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:898)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:910)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:238)
これはHttpSession#getIdを使った場合に出てきた(´・ω・`)
んで今はHttpServletRequest#getRequestedSessionIdを使って対応できた(´・ω・`)
プログラムの作りもあると思うが、HttpSession#getIdとHttpServletRequest#getRequestedSessionIdの違いがわかんね(;´∀`)
JavaDocを読むと
HttpSession#getId
このセッションに割り当てられている一意な識別子を表す String オブジェクトを返します。 識別子は実装依存であり、Servlet コンテナによって割り当てられます。
HttpServletRequest#getRequestedSessionId
クライアントによって指定されたセッションの ID を返します。 この値はリクエストの現在の有効なセッションの ID と一致するとは限りません。 クライアントがセッション ID を指定しなかった場合、null を返します。
ってなる(´・ω・`)
最初はポッカーーンだったが俺の勝手な予想だと
HttpSession#getId
セッションがない場合、新しくセッションを発行する。
HttpServletRequest#getRequestedSessionId
セッションがない場合、潔くnullを返す。
だと思ってるwww
レスポンスってコミットとかあるんか(´・ω・`)
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿