0

私は2つのjspを持っています。1つはlogin_first.jsp、もう1つはmain.jspです。で送信した後login_first.jsp、電話しますmain.jsp。正常に動作します。

main.jsp制御をに戻すログアウトボタンがありますlogin_first.jsp。実行さlogin_first.jspれますが、ページが読み込まれていません。助けてください。

login_first.jsp

<%@ page session="false" %>
<%
try {   
    HttpSession session = request.getSession(true); 
    if ("Submit".equals(request.getParameter("SubmitButton"))) {                                
        session.setAttribute("userLoggedIn", "true");               
        response.sendRedirect("main.jsp");          
        return;                             
    } else {            
        session.setAttribute("userLoggedIn", "false");              
        session.invalidate();
    }    
%>                                                                                                 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <body>      
        <form name="loginForm" method="post">           
            <table>             
                <tr>            
                    <td><input type="submit" name="SubmitButton" value="Submit" class=button/></td>
                </tr>       
            </table>                                                    
        </form>
    </body> 
<%
} catch (Exception e) {
    e.printStackTrace();    
    response.sendRedirect("login_first.jsp");           
    return;
} 
%>
</html>

main.jsp

<%@ page session="false" %>
<%
try {   
    HttpSession session = request.getSession(false);    
    if (session != null && "true".equals(session.getAttribute("userLoggedIn"))
            && !"Logout".equalsIgnoreCase(request.getParameter("logout"))) {        
        // do work          
    } else {        
        if (session != null) {
            session.setAttribute("userLoggedIn", "false");              
        }
        response.sendRedirect("login_first.jsp");           
        return;
    }    
%>                                                                                                 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <body>      
        <form name="creditCardForm" target="formresponse" autocomplete="off" method="post">                 
            <table width="50%" border=0 cellpadding=3 cellspacing=1>            
                <tr>                    
                    <td>            
                        <div align="right">                                                                                    
                            <input name="logout" type="submit" class=button value="Logout">                           
                        </div>                  
                    </td>
                </tr>               
            </table>                    
            <iframe name="formresponse" width="0" height="0" style="visibility:hidden"></iframe>
        </form>
    </body> 
<%
} catch (Exception e) {
    e.printStackTrace();
    response.sendRedirect("login_first.jsp");   
    return;
} 
%>
</html>
4

4 に答える 4

0

まず、両方のページに「session = false」が設定されていますが、Sessionで属性を取得/設定しようとしています。意図したとおりに機能していると思いますか?

次に、データがクライアントに返送される前(バッファがフラッシュされる前)にのみ、response.sendRedirect()を呼び出すことができます。あなたの場合、それが起こっていると確信していますか?

于 2012-04-04T12:09:51.023 に答える
0

スクリプトレットは古くなっていますが、JSPファイルの場所や、リダイレクトURLの先頭を使用する必要があるかどうかについてのドキュメントを確認する必要があると思います。/たとえば/first_login.jsp、の代わりにfirst_login.jsp

于 2012-04-04T12:21:59.437 に答える
0

target="formresponse"main.jspで問題が発生することがわかりました。そこで、このログアウトを別のフォームに移動し、アクションを追加しました。

于 2012-04-04T13:09:48.883 に答える
0

ただし、同じsendRedirectがfirst_login.jspから機能しています。main.jspからlogin_first.jspへが機能していません。

1つの理由は、main.jspがいくつかのサブフォルダーにあることである可能性があります。

于 2012-04-04T17:51:48.490 に答える