2012-01-15 13 views
4

JSPページでは、${name}を使用して属性にアクセスできます。しかし、私たちがsevletで次のようにしたら:表現言語。ドミナント変数

req.getSession.setAttribute("name", sessionName); 
getServletContext().setAttribute("name", sevletContextName) 
req.setAttribute("name", reqName); 

使用するときにどのような変数JSPにアクセスするのですか?

$ {name}の

+0

ます。http://ドキュメント.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html – alf

答えて

6

JSP ELは、ページ内を検索し、その要求、セッション、アプリケーション。

あなたは、明示的にセッションにアクセスするサーブレットコンテキストについて

${sessionScope.name} 

を使用し、(pageScoperequestScope用と同様)

${applicationScope.name} 

を使用したい場合は

+0

hm、ありがとうございます。しかし、pageScopeとrequestScopeの違いは?リクエストスコープは、サーバーが作成するまで存在します(1つのリクエストが複数のサーブレット、JSPページなどの間で転送される可能性があるため)。ページスコープは1つのサーブレットまたは1つのJSPのみに存在します。この権利? – MyTitle

+1

たとえば、を使用するJSPページでページスコープ属性を定義するか、pageContext.setAttribute()を使用すると、属性はこのページにのみ存在します。動的に含まれるページまたは転送されたページには、この属性は表示されません。サーブレットにはページスコープ属性はありません。 –

+0

なぜクラス変数を使用する代わりにpageContext.setAttribute()を使用する必要がありますか?スレッドセーフではないためですか?または他の理由? – MyTitle