MVCが実際にどのように機能するかについて少し混乱しています。
これまでのところ、これは私が持っているタイプのものです:
- 静的 JSP ページには、コントローラ サーブレットにポストするフォームがあります。
- コントローラーは、データベース アクセス オブジェクトを使用してデータベースから適切な情報を取得し、それを Java Bean に格納します。
- その Java Bean をリクエスト属性として設定し、他の JSP ページに転送して表示します。
私が混乱しているのは、アクセスしている最初のjspページが静的ではなく、コントローラーに投稿して取得するフォームを持たずに表示用のJava Beanを取得する必要がある場合の対処方法です。
JSP ページ内から必要な Java Bean を生成するためにデータベース アクセス オブジェクトを呼び出すと、MVC に反するように思えます。
だから私の質問は、これをどのように処理する必要がありますか? この場合、MVC の原則に従いながら、必要な Java Bean を取得するにはどうすればよいですか?
ありがとう!
編集:より明確にするためにいくつかのコードを追加します:
現時点では、ホテルのリストを表示することになっている owner.jsp というページがあります。そのページ内で、次のようなホテルのリストを取得しています。
<%
HotelDAO hotelDAO = new HotelDAO();
List<HotelBean> hotels = hotelDAO.getHotels();
pageContext.setAttribute("hotels", hotels);
%>
次に、EL を使用して、forEach ループを使用して各ホテルを表示します。
これはコントローラーをまったく通過しません。これを MVC モデルで動作させるにはどうすればよいでしょうか?
"hotels" Bean が設定されているかどうかをチェックしてコントローラ ページに転送し、コントローラ ページが "hotels" Bean を設定して owner.jsp ページに転送するのは論理的ではないように思えます。
このような場合、MVC はユーザーが常にコントローラーを通過することをどのように確認しますか? 以前に書いた他のページはすべて静的で、何らかのフォームを送信したときにのみコントローラーに送られ、いくつかの Bean が設定され、表示のためにいくつかのページに転送されました。