2017-10-10 6 views
0

これを行うには、より良い方法があると思います。あなたが知っていれば教えてください。セッションリフレッシュセッション変数の変更

マイログインページには、ユーザー名、パスワード、ログインボタンがあります。私はちょうどログインが失敗した場合、入力パスワードの下にメッセージを表示したい。

私の問題は、ログイン権が得られるまでメッセージがそこに残ることです。 ページを閉じてもう一度開くと、メッセージが表示されます。これで、メッセージが消えるようにページを更新するときに変数を消去したいだけです。

HTML:

<body> 
<div class="container"> 
    <div class="row"> 
    <div class="wrap-login col-md-4 col-md-offset-4"> 
     <h2 style="margin-bottom: 20px;">ATP Login</h2> 
     <form action="Login" method="post"> 
     <label>Username</label> 
     <div class="input-group"> 
      <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> 
      <input id="username" type="text" class="form-control" name="username" placeholder="Username"> 
     </div> 
     <label style="margin-top: 15px;">Password</label> 
     <div class="input-group"> 
      <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span> 
      <input id="password" type="password" class="form-control" name="password" placeholder="Password"> 
     </div> 
      <% 
      if(session.getAttribute("loginSuccessful") != null && session.getAttribute("loginSuccessful") == "false") { 
      %> 
     <div class="alert alert-danger" style="margin-top: 10px;"> 
      <strong>Wrong username and password combination.</strong> Please, check your login information and try again. 
     </div> 
      <% 
       } 
      %> 
     <button type="submit" class="btn btn-default login-btn" >Login</button> 
     </form> 
    </div> 
    </div> 
</div> 
</body> 

はJAVA:

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String username = request.getParameter("username"); 
    String password = request.getParameter("password"); 

    HttpSession session = request.getSession(); 
    //Check login 
    Boolean successful = CheckLogin(username,password); 
    if (successful) { 
     response.sendRedirect("Environments.jsp"); 
    } 
    else { 
     session.setAttribute("loginSuccessful","false"); 
     response.sendRedirect("index.jsp"); 
    } 
} 

答えて

0

session範囲でloginSuccessfulを入れないでください。スコープをrequestにすると、現在のログイン要求の処理中にのみ有効になります。

申し訳ありませんが、sendRedirectを使用していました。その場合、ifブロック内のJSPページでsession属性をクリアする必要があります。 nullに設定してください。

+0

jspで 'request.getAttribute(" loginSuccessful ")= null'が表示され、メッセージが表示されません –

+0

@ xasdasサーブレットコードでどのように設定していますか? – jingx

+0

@ xasdasまあまあ、私はあなたが 'sendRedirect'を使っているのを見ました。その場合、リクエストスコープは機能しません。 – jingx