2017-08-15 6 views
1

インスタンスの場合、ログインページがあります。私たちはセッションを作成し、それにテキストを追加します。私は古いセッションと新しいセッションを比較しようとしています。テスト//とプット、新しいセッションと古いセッションの比較

1)ユーザログインが正しくないパスワード場合、それは)ページにログインし、セッションに

2を「テスト」を追加するために戻ってリダイレクトすることができますしかし、2回目の試行で別のユーザー名とユーザーのログインの場合//新しいセッションに追加し、古いセッションと比較したい。 は

if(session1 is not equal to session 2){ 
    restart attempt incremental 
} else if (session1 is to session 1){ 
    increment attempt to -1 
} 

は、私はちょうど古いセッションと新しいセッションを比較する必要が私たちのサーブレットファイルに従っ

<form action="servlet" method="post"> 
<input type="text" name="username"> 
</form> 

として私達のJSPファイル こと

doPost(HttpSe....){ 
//Get Parameter 
String name = request.getParameter("username"); 

//Create session 
HttpSession session = request.getSession(true); 
session.setAttribute("username", name); 
String session_name = (String)session.getParameter("username"); 

//validate if username is = test, it will redirect 

if(name.equal("test")){ 
    //this will redirect to different page 
} else if(session_name.equals(name)){ 
    //do something.. 
} else { 
//do something... 
} 

をそれを置くことができます,,と言うことができます。

前のセッションがある場合にはこれが私の実際のコード

HttpSession session = request.getSession(true); 
     HttpSession session_Newusername = request.getSession(true); 
     session.setAttribute("Username", username); 
     String session_Username = (String)session.getAttribute("Username"); 
     System.out.println(" data .... " + session_Username); 

     int loginAttempt; 
      if(session.getAttribute("loginCount") == null){ 
       session.setAttribute("loginCount", 0); 
       loginAttempt = 0; 
      } else if(session.isNew()) { 
       System.out.println("If user key in same username"); 
       loginAttempt = (Integer)session.getAttribute("loginCount"); 
       if(loginAttempt == 3){ 
        session.setMaxInactiveInterval(5); 
        session.setAttribute("message", "Your account is blocked, Please contact admin or wait for 2mins"); 
        //System.out.println(session.getAttribute("message")); 
        response.sendRedirect("Pages/Login/login.jsp"); 
       } else { 
        System.out.println("How many attempt left " + loginAttempt); 
        loginAttempt++; 
        int leftAttempt = 4 - loginAttempt; 
        session.setAttribute("message", "You are left with " + leftAttempt + " attempt"); 
        //System.out.println(session.getAttribute("message")); 
        response.sendRedirect("Pages/Login/login.jsp"); 
       } 
       session.setAttribute("loginCount", loginAttempt); 
      } else { 
       response.sendRedirect("Pages/Login/login.jsp"); 
       System.out.println("username is not the same"); 
       session.invalidate(); 
      } 

    } 
+0

ので、あなたの質問は何ですか? –

+0

新しいセッションに新しい値を保存し、同じセッションの古い値と比較したい –

+0

新しい値を簡単に保存して他のものと比較できるように値を入れ替えます。 – Tehmina

答えて

0

ある

..私は(session.isNewを())を使用してみましたが、それは動作しません、それは常にelseステートメントに私をリダイレクトします無効にされた(例えば、タイムアウト後に閉じられる)場合、セッション属性は破棄されます。したがって、それらの属性を追加して、すでに無効化されている以前のセッションから取得することはできません。同じアクティブセッション内でのみアクセスできます。

こうして、あなたはそのようにしたいことを達成することはできません。たとえば、データベースやJVMメモリなどの場所にデータを格納する必要があります。しかし、セッション属性ではありません。

あなたが同じアクティブなセッションで決定したい場合は、現在のセッションでuserName属性の存在を確認した後、あなたが望むとして機能する必要があります。

userName = (String) session.getAttribute("userName"); 
if (userName == null) { 
    // here you don't have it from previous invocation of setAttribute 
    session.setAttribute("userName", login); 
} else { 
    // you already setAttribute from previous invocation on current session 
    // add you errors here 
} 
関連する問題