3

がある -

<html>
<body>
         <jsp:useBean id="user" class="user.UserData" scope="session"/>
</body>
</html>

と -

<html>
<body>
         <%
             Object user = session.getAttribute("user.UserData") ; 
         %>
</body>
</html>

user.UserDataに存在すると仮定しsessionます。2つの方法に違いはありますか?

4

2 に答える 2

3

JSPでよく知られている問題は、ページ(.jsp)でJavaコードを使用する際にできることをすべて回避することです。したがって、最初のアプローチの方が適していますが、同意しますか?<jsp:useBean />とりわけTaglibsは、レイヤーを混在させることなくコードにアクセスするための優れた方法です。私がほとんど紹介しなかったこの概念は、MVCの「仕様」の一部です。

- 編集 -

Beanにアクセスする2番目の方法はスクリプトレットと呼ばれ、可能な限り常に回避する必要があります。簡単な比較は、 JSTLとjspスクリプトレットで確認できます。

于 2012-08-02T18:15:29.353 に答える
3
<jsp:useBean id="user" class="user.UserData" scope="session"/>

と同等です

<%
    Object userDataObject = session.getAttribute("user") ; // id="user" of <jsp:useBean> maps to session attribute name "user"
%>

さらに、スクリプトレットはセッションから既存のデータを読み取るか、属性が見つからない場合はnullを返します。
<jsp:useBean>がセッション内の属性「user」がnullであると検出した場合、「user.UserData」のインスタンスを作成し、セッションスコープ内の属性「user」に追加します。

于 2012-08-02T18:22:35.337 に答える