2012-03-24 5 views
0

JSP /サーブレット/ MVCを初めて使用し、レシピに関する情報を表示するJSPページ(サーブレットとMVCパターンを使用)を作成しています。JSPのインクルードとMVCのパターン

サーブレットの場合、doGet()ではすべての必要な情報をModel POJOに取り込み、要求をJSPビューに転送してレンダリングします。それはうまく働いています。

私は「コメント」部分を別々のJSPにしたいのですが、RecipeView.jspではこれらのビューを分けることができます。だから私はそれを作ったが、今はちょっと立ち往生している。 CommentOnRecipe.jsp内のフォームは、コメントの記録を処理するCommentActionサーブレットに投稿します。レシピページをリロードすると、私が作成したコメントが表示されます。

私がしたい:

  • は(今のところ何のAJAX)をコメントしない後に自動的にページを再読み込み
  • ブロック1日の時間枠の上に各レシピに複数のコメントを作るから、ユーザ(経由クッキー)。だから、ユーザーがコメントを書く度にプロダクトIDを示すクッキーが保存されるので、後でチェックすることができます。 MVCコンテキストではどのように動作しますか?
  • は、彼らはすでに彼らは私がこれを達成するためにどのようにJSPをなどを含む/豆を使用する方法について困惑している

にコメントしている彼らは1 を訪問レシピにコメントしているユーザーにメッセージを表示します。

私はASP.NETの土地で知っているのは、私がページに配置するUseControl、またはASP.NET MVCであれば、何らかの並べ替えのPartialViewになります。私はJSP /サーブレット/ MVCコンテキストでこれが動作する方法とちょっと混乱しています。あなたが新しいページにリダイレクトするか、同じページを更新するjavax.servletのresponse.sendRedirect()または前方のAPIを使用することができます

答えて

1

(豆/データがリフレッシュされますように、同じページ/パスにリダイレクト)

1日あたり1つのコメントに制限することができます - はい、Cookieを使用できますが、ユーザーが別のブラウザタイプ(chrome、FF、Safari)を使用し、複数のコメントを付けることができるという問題があります。 モデル/永続ストアにlastCommentTimeを格納し、それをユーザー情報に結びつけるのが理想的です。この方法で、モデルオブジェクトは最後のコメント時刻を確認し、ユーザーがコメントできるかどうかによってtrue/falseを返すAPIを公開できます。 サーブレット/ JSPでこのAPIを使用してコメントボタンの表示/非表示やメッセージの表示などを行うことができます。

+0

ありがとうございました。ユーザーはサイトに登録する必要はありません。それはすべて比較的匿名ですので、特定のレシピ/コメントをユーザーIDに結びつけることはできません。だから、これに照らして、私のModelクラス(レシピと呼ばれる)は、ユーザーが既に投票したかどうかをチェックする機能を公開すべきですか?これを行うにはServiceクラスを使用すべきではありませんか?例えば。 RecipeService.HasVoted(recipeId)は、Cookieが設定されているかどうかを確認します。 – xingyu

+0

はありそうもありません。したがって、エンティティオブジェクト(この場合はレシピ)には、通常、あまりにも多くのビジネスロジックが存在しません。エンティティオブジェクトを使用するサービスレイヤは、そのようなロジックを配置するのに適しています。実際にMVCはEntity/POJOモデルオブジェクト - > Service Objects - > Servlets/viewmodel/viewHelpers-> View/JSP/HTMLのように見えます。だから、RecipeService.userHasVoted(userid)はそれを置くのに良い場所です...続きを読む –

+0

唯一の問題は、この状態があなたの機能の制限のためにビューに保存されているからです。あなたが実際にそれをクッキーに保管しているときは:)クッキーをチェックするためにあなたのサービス層にアドバイスしません。サーブレットがクッキーをチェックし、サービス層のAPIを呼び出して状態を設定します(そして、別のAPIを使用して状態を読み込みます)。これは、ユーザー情報の保存をサポートしていれば、 、それは簡単に変更するようになります –

関連する問題