私は Java Web 開発に不慣れで、頭の中に多くの混乱があります。Java で小さなプロジェクトを開発しようとしていますが、MVC パターンのコンポーネントをどのように接続すればよいかわかりません。
DB と対話する DAO があり、通常の CRUD 操作をかなりうまく行うことができます。DAO は、DB 内のテーブルを反映するパッケージ モデルで動作します。O反対側には、WEB-INFフォルダー内にJSPページがあります。
サーブレットhttps://stackoverflow.com/tags/servlets/infoに関するこの情報タグを読みましたが、うまくいきません。ここで説明したように: MVC パターンを使用して JSP/サーブレット Web アプリを開発する方法は?
MVC パターンは、
- モデル(Java クラス / Bean): DB データを反映します (プロパティ、getter/setter メソッドを使用)。
- ここで (JSP ページ)、私の HTML、プレゼンテーション レベルを表示します。
- URL を JSP ページにマップするコントローラー(サーブレット) ですね。
では、モデルが機能し、ビューが機能し、コントローラーは何をすべきでしょうか? 実際に私はこのエラーが発生します:
HTTP ステータス 404 - /crm/hello.jsp タイプ。状況報告メッセージ。/crm/hello.jsp の説明。要求されたリソースは利用できません。
しかし、WEB-INF 内のリソース (hello.jsp ファイル) は存在します。コードのスニペットは次のとおりです。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Preprocess request: we actually don't need to do any business stuff, so just display JSP.
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Postprocess request: gather and validate submitted data and display result in same JSP.
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
}
@WebServlet 表記を使用していますが、これは web.xml を置き換えるものですよね? 私も答えを読みました: Design Patterns web based applicationsとそこで説明されているように:
リクエスト (アクション) ベースの MVC: これは実装が最も簡単です。(ビジネス) モデルは、HttpServletRequest および HttpServletResponse オブジェクトと直接連携します。リクエストパラメーターを(ほとんど)自分で収集、変換、および検証する必要があります。ビューはプレーンなバニラ HTML/CSS/JS で表すことができ、リクエスト間で状態を維持しません。これは、Spring MVC、Struts、および Stripes がどのように機能するかです。
各 URL を JSP ページとリクエスト/レスポンスを含むサーブレットにマップする必要がありますか、それともすべてのリクエスト/レスポンスを処理するサーブレットが 1 つ必要ですか セッションをどこでトレースすればよいですか? クッキーはどこに設定すればよいですか? 業務フローはどこにすればいいですか?たとえば、Web フォームからデータベースにデータを挿入したり、DB データを JSP ページに表示したりしますか?
点をつなげようとしていますが、誰かが欠けています。問題は、モデルとビューがコントローラーとどのように対話するかです。例を挙げていただけますか?