2017-06-08 2 views
0

サーブレットでセッションを維持するためにクライアント側でJSESSIONIDの名前でクッキーが保存されます。

私もそれをチェックし、私はいくつかのランダムな文字列値JSESSIONIDの名前でlocalhostののクッキーを見つけました。

サーブレットにJSESSIONIDクッキーを作成してセッションを手動で作成しようとしましたが、セッションを取得しようとしているときに動作していません。

ここに何が起こっているのですか?

セッション作成のためにどこかに保存されるCookie(JSESSIONID)以外のものはありますか?

なぜ私はセッションを取得できないのですか?

ご了承ください。私はあなたがクッキーを作成するか、追跡するための責任を負いませんねセッションJSESSIONIDクッキーを使用したサーブレットでのセッション処理がセッションを取得しない

package sessionHandling; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.ServletOutputStream; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

@WebServlet("/sessionhandling") 
public class SessionHandling extends HttpServlet { 

private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ServletOutputStream out = response.getOutputStream(); 
    out.print("Hello Mr.! How are you?"); 
    HttpSession session = request.getSession(false); 
    if(session != null){ 
     out.println("You are logged in."); 

     out.println("session found with "+session.getId()); 
     out.println("session found with "+session.getLastAccessedTime()); 

    }else{ 
     //session = request.getSession(true); 
     Cookie JSESSIONID = new Cookie("JSESSIONID", "12345"); 
     JSESSIONID.setMaxAge(-1); 
     response.addCookie(JSESSIONID); 
     System.out.println("Cookie Created"); 

     out.print("You are not logged in"); 
    } 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    doGet(request, response); 
} 

} 

答えて

1

をクッキーを作成し、取得するために使用

コード。サーブレット・コンテナがこれを見てくれます。

とすぐに呼び出すよう:

HttpSession session = request.getSession(true); 

または

HttpSession session = request.getSession(); 

その後、サーブレットコンテナがあなたのためにセッションを維持開始(および必要に応じてクッキーを生成)します。

HttpSessionオブジェクトは、要求の間にサーバーメモリに保持され、通常はセッションIDで参照されます。あなた自身でクッキーを作成する場合、サーバーはそのクッキーまたは関連するHttpSessionについて何も知りません。

関連する問題