2011-06-23 17 views
2

jspでユーザーセッションを管理する場合、session.setAttribute()を使用してvarialbleを設定することによってセッションを使用することがあります。その一方で、Java Beanオブジェクトを作成できます)を使用してユーザー情報を保存し、別のページで検索することができます。誰が私にこれら2つの事の違いは何かを教えてもらえますか?jspのセッション管理のためのJava Beanとセッションの違い

答えて

1

これは、同じデータを渡す方法がわずかに異なります。

あなたが言うように、あなたはどちらかの可能性:次に

(1)

session.setAttribute("entry", entry); 

または(2)

session.setAttribute("name", entry.getName()); 
session.setAttribute("address", entry.getAddress()); 
session.setAttrubute("phone", entry.getPhone()); 

(1)、JSPが含まれる場合がありますのために:

Name: ${entry.name}<br/> 
Address: ${entry.address}<br/> 
Phone: ${entry.phone}<br/> 

(2)については、同等物JSPは次のよ​​うになります。

Name: ${sessionScope['name']}<br/> 
Address: ${sessionScope['address']}<br/> 
Phone: ${sessionScope['phone']}<br/> 

(または、あなたは上記のコードは少し読みやすくするために、いくつかのローカル変数を設定するために<c:set>を使用する場合があります)。

本質的に、どちらも同じですが、(1)コードを少なくして読みやすく理解しやすくなります。

(私はまだだけどJava EEのは自分自身を初心者に、私はより多くのベテランの意見を気にしないだろう!)

1

多数の相違点があります。

まず、何かを属性として格納するとObjectとして格納されるため、実際に取得したときにそれをキャストする必要があります。Beanは常にそのクラスです。

第2に、Beanを使用しているときに、作成されたかどうかを心配する必要はありません。 jsp:useBeanタグは、既に作成されている場合はそのBeanにアクセスし、Beanがない場合は作成します。したがって、関数を呼び出したり、getメソッドを使用したりする場合は、Beanを使用するときに存在することが保証されます。セッション変数に格納することを計画していますが、格納する前にアクセスしようとすると、nullが返され、関数を呼び出すといくつかの問題が発生します。

通常、セッション変数を使用して情報を渡しますが、Beanを使用して呼び出したい機能を持つクラスを渡します。

したがって、比較的単純なデータ(例:文字列)を渡すことを計画している場合は、それをセッション変数に投げることに何も問題はありません。あなたの比較では注意してください(例:string_var.equals(()session.getAttribute( "attribute_name"))not((String)session.getAttribute( "attribute_name"))。equals(string_var )は、null.equals()が定義されていない場合があります)。

MVCフレームワークでプログラミングしている場合は、一般的にBeanを使用してセッション変数(または状況に応じて変数)に書き込むと、JSPページから情報がロードされますセッション変数これは(他のものの中でも)ウェブページをリフレッシュセーフにします(つまり、リフレッシュボタンを押すと、すべてのコードを再度実行してセッション変数から情報をリロードするのではなく、セッション変数から情報を取得するだけです)。情報を追加したり、増分したり、減分したりするときには大したことです。

確かに、私はJSPには比較的新しいですが、それが私の状況の理解です。