2012-02-03 8 views
4

ELでリクエストのセッションが存在するかどうかをどのように確認しますか?私は次のようなものを試しています:JSP ELでセッションを確認するには?

<c:if test="${pageContext.request.session != null}"> ... </c:if> 

しかし、それは決してnullのようです。

答えて

11

それは確かにnullことはありません。あなたがJSPの先頭に

<%@page session="false" %> 

を追加ない限り、セッションはJSP EL、常に存在しています。次のように、その後、(のみEL 2.2を!)セッションをチェックすることもできます

<c:if test="${pageContext.request.getSession(false) != null}"> 
    <p>The session has been created before.</p> 
</c:if> 

私は具体的な機能要件が何であるかだか分かりません。セッションが新しく作成されたかどうかを確認する場合は、HttpSession#isNew()を代わりに使用してください。あなたは、このようなログインとして、特定セッション属性に頼っている場合の

<c:if test="${not pageContext.session['new']}"> 
    <p>You've already visited this site before.</p> 
</c:if> 
<c:if test="${pageContext.session['new']}"> 
    <p>You've just started the session with this request!</p> 
</c:if> 

newは、Java言語で予約されたリテラルであるため、new用ブレース表記は必須です)

ユーザーで

session.setAttribute("user", user); 

として設定されてされている、あなたはむしろ代わりにその上でインターセプトする必要があります。

<c:if test="${not empty user}"> 
    <p>You're still logged in.</p> 
</c:if> 
<c:if test="${empty user}"> 
    <p>You're not logged in!</p> 
</c:if> 
+2

あなたは私が聞いたことのない質問に答えることができません。ユーザーを確認することは私が望むものでした。 –

+0

ようこそ。実際のコードでは意味をなさない質問には、しばしば全く異なる機能要件があります。そして、あなたが達成するために本当に必要とするものによく似た、最も一般的な機能要件をよく見積もります。 )あなたが将来の質問でそれを述べるなら、あなたは私(そして他の人たち)の時間を節約するでしょう。 – BalusC

+0

コード化された嵐に巻き込まれ、一歩踏み出してアプローチが間違っていることを忘れることは時々あります。再度、感謝します。 –

1

を持つ作品に思える:

<c:if test="${fn:length(sessionScope) > 0}"> 

これは私がセッション属性を持っていることを必要とするので、私は、より良い方法があるかどうだろう(私はいつも、それは本当にきれいではありませんか)?

1

J2EEでは、ユーザーがサイトを訪問するときに常にセッションオブジェクトが存在します。

セッションとは何ですか? セッションは、ユーザーがサーバーにページ要求を行うと、サーバーはそのユーザーを識別するための一時的なセッションを作成します。したがって、同じユーザーがそのサイトの別のページに移動すると、サーバーはそのユーザーを識別します。したがって、セッションとは、サーバーとユーザーの間の小さな一時的な一意の接続で、複数のページ要求またはそのサイトへの訪問時にそのユーザーを識別できるようにします。

基本的にあなたのページに当たった場合は、JSPを使用しているためセッションがあります。これは最終的にサーブレットに変換されます。

http://www.stardeveloper.com/articles/display.html?article=2001062001&page=1

関連する問題