2011-12-15 17 views
0

私は、Java MVCプロジェクトに取り組んでいます。現在、私はlogin.jspprofile.jsp, ``CheckLoginサーブレット、User.java beanクラス、UserDAO daoクラス(beanとjspのものと、それ以外のものはすべて追加されます)を持っています。 ユーザーが正常にログインすると、ここで何をしているのですか?ユーザーの詳細をすべて表示するプロファイルページにリダイレクトされます。 ここでの私の質問は:jspページでBeanの値を呼び出す正しい方法は何ですか?

が、全体sessionに勝つsessionオブジェクトに特定のuserIDためUser型オブジェクトを設定し、どこでも${sessionScope.user.property}として直接すべての値を取得するために、より良いですか?

または

それは全体sessionに勝つsessionオブジェクト内だけuserIDを設定し、これらのコード行を使用して、すべてのページ内の値を取得するために、より良いです: <jsp:useBean id="userDAO" scope="page" type="com.project.dao.UserDAO" /> <c:set var="user" value="<%= userDAO.getUser(%>${sessionScope.userID}<%) %>" /> ${user.property}

私はあなたに私の質問ではっきりと願っています。 お願いします。

答えて

0

最初のルール:スクリプトレットを避ける。スクリプトレット以外のソリューションがないという事実は、設計上の問題を示しています。コントローラはビ​​ューのモデルを準備する必要があります。ビューはDAOを直接呼び出すべきではありません。これがコントローラの責任です。

ユーザーをセッションに格納するか、コントローラからの各要求でユーザーをロードすることは、パフォーマンスと古いデータの問題です。

ユーザーがセッション全体で変更されない(または変更可能なデータのみが含まれていて、このセッションからのみ必要なときにデータを更新できるようにする)データが含まれている場合は、セッションに保存します。セッションスコープのあるデータを保存することがその目標です。

ユーザーのデータを変更する外部セッションまたはプロセスがあり、最新のデータを常に表示したい場合は、リクエストごとにリロードしてください。

+0

この状況で 'UserDAO'を使用しないと、特定のJSPページの' User'オブジェクトを取得する別の方法がありますか? – Asif

+0

私はあなたがUserDAOを使用すべきではないと言っていませんでした。私はそれがビュー(JSP)から呼び出されるべきではないと言った。これはコントローラ(サーブレット)によって呼び出され、JSPにディスパッチする前にセッションまたは要求に格納する必要があります。 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Example –

関連する問題