0

JSP を学んでいます 最近、JSP でクラス オブジェクトを作成する 2 つの方法に出会いました。

方法 1:

<jsp:useBean id = "obj" class = "ClassName" />
<%
 obj.method();
%>

方法 2:

<%
 ClassName obj = new ClassName();
 obj.method();
%>
  • 正確に何が違うのか説明してもらえますか?
  • 良い習慣はどれですか?
  • 方法 1/方法 2 が関連する状況と関連しない状況

前もって感謝します

4

4 に答える 4

2

方法 1:

<jsp:useBean>、JavaBean コンポーネントの検索またはインスタンス化に使用される標準アクション要素です。最初<jsp: useBean>に、問題がなければ Bean クラスのインスタンスを見つけようとします。そうでない場合は、class属性で言及されているクラスからインスタンス化します。デフォルトでは、属性が指定されていない場合、ページ スコープでオブジェクトを検索します。Beanの名前は、 の属性でscope指定したものと同じです。指定した名前のオブジェクト参照が存在しない場合、インスタンスが作成され、変数のスコープが検出されます。属性は Bean クラスを定義し、属性は Bean クラスの親クラスまたはインターフェイスを定義します。id<jsp:useBean>classtype

以下を使用して、Java Bean の Bean スタイル プロパティにアクセスできます<jsp:useBean>

<jsp:useBean id = "obj" class = "ClassName" />
<jsp:getProperty name="obj" property="someProperty"/>

上記のコードは、 に格納されている Java Bean をobj探しpageます。見つからない場合は、class属性で指定されたクラス定義を使用して新しい Bean の作成を試み、新しく作成された Bean をpageスコープに設定します。beanのsomeProperty属性にアクセスしようとしています。obj属性には、Bean スタイルのsomePropertyゲッターが必要です。詳細については、Oracle のチュートリアルを参照してください。

方法 2 :

service()生成されたサーブレットのメソッド内にローカル オブジェクトを作成しています。どのスコープにも設定していません。

ノート:

スクリプトレット と<jsp:useBean>はお勧めできません。JSTL と EL 式を使用してください。

于 2013-07-01T06:09:37.353 に答える
0

方法 1: メソッドを次のように表す必要があります。

<jsp:useBean id = "obj" class = "ClassName" />
${obj.method()}

その場合、方法 2 よりも優れた方法になります。

于 2013-07-01T06:11:08.860 に答える
0

<jsp:useBean>タグを使用すると、Bean のスコープを定義できますが、後者では

のスコープは、生成されたメソッドobjに対してローカルですjspService()

于 2013-07-01T06:09:08.760 に答える
0

コントローラー (サーブレットまたはポートレット) でオブジェクトを作成してから、EL および JSTL を使用してビュー (JSP) をレンダリングします。可能であれば、スクリプトレット (<% %>) を使用しないでください。

メソッド1はクラスClassNameの静的メソッドだと思います。

于 2013-07-01T06:13:24.437 に答える