データダウンロードリンク
導入
サーブレット フレームワークに基づく管理システムの 簡潔なバージョン 。
ログイン 、 登録 、 追加 、 削除 、 変更 、 問い合わせを実現します 。
フロントエンド、検証、その他の機能などを継続的に改善および追加できます。
サーブレット プロジェクト開発演習の基本モデルとして使用できます 。
カリキュラム設計 、 卒業設計 開発の基礎。
複雑なフレームワークはどれも単純な知識の組み合わせと拡張であり、基本を学ぶことが最も重要です。
このプロジェクトはシンプルで基本原則を理解しやすく、サーブレット、SSH、SSM などの複雑なプロジェクトの開発の基礎を築きます。
環境整備
開発プラットフォーム: Idea 2019
データベース: MySQL 5.0.22
サーバー: Tomcat 9.0.37
注: IDEA 開発プラットフォーム、MySQL データベース、Tomcat サーバーをインストールする必要があります。バージョンは完全に同じではない可能性があります。バージョン適応型構成で適切に実行してください。
プロジェクト構造
1. データベースおよび Java コード ファイル
2. Jsp およびその他のフロントエンド コード
3.Tomcatサーバーの設定と操作
4.MySQLデータベース
基本的
1. 関連概念
サーブレットは、動的 Web ページを開発するためのテクノロジーであり、データを対話的に参照および変更し、動的 Web コンテンツを生成するために使用されます。現在、Web アプリケーションの開発に Java Web 開発でサーブレットが使用されることはほとんどなく、統合フレームワーク開発が多くなっています。実際、ほとんどのフレームワークは、Struts はサーブレットとフィルターのカプセル化、Hibernate は JDBC のカプセル化など、基本的なツールに基づいてカプセル化されています。したがって、どのようなフレームワークを学ぶ場合でも、そのフレームワークで生じる問題を合理的に理解して解決するには、まず基礎知識を深く理解する必要があります。
2. 基本事項
2.1 ワークフロー
-
Web クライアントが HTTP リクエストをサーブレット コンテナ (Tomcat) に送信します。
-
サーブレットコンテナがWebクライアントからリクエストを受信
-
サーブレット コンテナは HttpRequest オブジェクトを作成し、Web クライアントによって要求された情報をこのオブジェクトにカプセル化します。
-
サーブレットコンテナはHttpResponseオブジェクトを作成します
-
Servlet コンテナは、HttpServlet オブジェクトのサービス メソッドを呼び出し、HttpRequest オブジェクトと HttpResponse オブジェクトをパラメータとして HttpServlet オブジェクトに渡します。
-
HttpServlet は、HttpRequest オブジェクトの関連メソッドを呼び出して、HTTP リクエスト情報を取得します。
-
HttpServlet は、HttpResponse オブジェクトの関連メソッドを呼び出して応答データを生成します。
-
サーブレット コンテナは、HttpServlet の応答結果を Web クライアントに送信します。
2.2 処理要求処理
-
ユーザーがリンクをクリックすると、静的ページではなくサーブレットが表示されます。
-
コンテナはリクエストがサーブレットであることを「認識」するため、HttpServletRequest と HttpServletResponse という 2 つのオブジェクトを作成します。
-
コンテナはリクエスト内の URL に従って正しいサーブレットを見つけ、リクエスト用のスレッドを作成または割り当て、リクエストと応答のオブジェクトをサーブレット スレッドに渡します。
-
コンテナはサーブレットの service() メソッドを呼び出します。リクエストのタイプに応じて、service() メソッドは doGet() メソッドまたは doPost() メソッドを呼び出します。これは、 doGet() メソッドが呼び出されることを前提としています。
-
doGet() メソッドは動的ページを生成し、このページを応答オブジェクトに「詰め込みます」。コンテナには応答オブジェクトへの参照も含まれていることに注意してください。
-
スレッドが終了すると、コンテナは応答オブジェクトを HTTP 応答に変換し、クライアントに送り返し、要求オブジェクトと応答オブジェクトを削除します。
2.3 動作原理
1. まず、サーブレットが顧客のリクエストを受信して応答するプロセスを簡単に説明します。まず、顧客がリクエストを送信し、サーブレットはそのリクエストに応答するために service() メソッドを呼び出します。ソース コードからわかるように、 service() メソッド内のリクエストのメソッド 一致した後、doGet、doPost、およびその他のメソッドを呼び出すことを選択し、対応するメソッドを入力してロジック層のメソッドを呼び出し、顧客への応答を実現します。Servlet インターフェースや GenericServlet には doGet()、doPost() などのメソッドはありません。これらのメソッドは HttpServlet で定義されていますが、いずれもエラー情報を返します。そのため、Servlet を定義するたびに doGet を実装する必要があります。または doPost などのこれらのメソッド。
2. すべてのカスタム サーブレットはサーブレット インターフェイスを実装する必要があります。サーブレット インターフェイスには 5 つのメソッドが定義されており、サーブレットのライフサイクルに関係する 3 つの最も重要なメソッドは、前述の init()、service()、destroy です。 () 方法。GenericServlet は、どのプロトコルにも固有ではない汎用的なサーブレットであり、サーブレット インターフェイスを実装します。HttpServlet は GenericServlet を継承するため、HttpServlet は Servlet インターフェイスも実装します。したがって、Servlet を定義するときは、HttpServlet を継承するだけで済みます。
3. Servlet インターフェイスと GenericServlet はどのプロトコルにも固有ではありませんが、HttpServlet は HTTP プロトコルに固有のクラスであるため、service() メソッドは HttpServlet に実装され、リクエストの ServletRequest と ServletResponse は HttpRequest と HttpResponse に強制されます。
2.4 サーブレットのライフサイクル
サーブレット プログラムは Web サーバーによって呼び出され、Web サーバーはサーブレットのライフ サイクルの管理を実装します。アプリケーションがサーブレットをロードして使用すると、サーブレットの初期化から破棄までの一連のイベントが発生します。これらのイベントは、サーブレット ライフ サイクル イベント (またはメソッド) と呼ばれます。
サーブレットのライフサイクルは次のように要約できます。
サーブレットのロード ---> インスタンス化 ---> サービス ---> 破棄
サーブレットのライフ サイクルは、サーブレットのロード、初期化方法、およびリクエストの受信方法、リクエストへの応答方法、およびサービスの提供方法を定義します。
1. サーブレット インスタンスの作成 Web コンテナはサーブレットのロードを担当します。Web コンテナの起動時、またはサーブレットが初めて使用されるとき、コンテナはサーブレット インスタンスの作成を担当しますが、ユーザーは場所を指定する必要がありますサーブレットが存在するクラスの名前であるデプロイメント記述子 (web.xml) を介してサーブレットのロードが成功すると、Web コンテナはリフレクションを通じてサーブレットをインスタンス化します。 2. WEB コンテナはサーブレットの init() メソッドを呼び出してサーブレットを初期化します。 サーブレットがインスタンス化された後、サーブレット コンテナは init() メソッドを呼び出してオブジェクトを初期化し、主にサーブレット オブジェクトが処理前にいくつかのタスクを完了できるようにします。データベース接続の確立、構成情報の取得などの初期化作業。各サーブレット インスタンスに対して、init() メソッドは 1 回だけ呼び出すことができます。init() メソッドには ServletConfig タイプのパラメータがあり、サーブレット コンテナはこのパラメータを通じて構成情報をサーブレットに渡します。サーブレットは、ServletConfig オブジェクトを使用して、Web アプリケーションの構成情報から名前と値のペアの形式で提供される初期化パラメータを取得します。さらに、サーブレットでは、サーブレットの動作環境を記述する ServletContext オブジェクトも ServletConfig オブジェクトを通じて取得でき、このオブジェクトを使用して、サーブレットはサーブレット コンテナと通信できます。サーブレットにアクセスするクライアントの数に関係なく、init() が繰り返し実行されることはありません。 3. サーブレットは初期化されると常にコンテナ内に存在し、service() がクライアントのリクエストに応答します。 ① クライアントが GET リクエストを送信すると、コンテナはサーブレットの doGet メソッドを呼び出してリクエストを処理し、応答します。 ②クライアントが POST リクエストを送信し、コンテナがサーブレットを呼び出します。 doPost メソッドがリクエストを処理して応答します。 ③ または、一律に service() メソッドを使用してユーザー リクエストを処理し、応答します。 service () はサーブレットの中核であり、顧客のリクエストに応答する役割を果たします。クライアントが HttpServlet オブジェクトをリクエストするたびに、オブジェクトの Service() メソッドが呼び出され、「リクエスト」 (ServletRequest) オブジェクトと「レスポンス」 (ServletResponse) オブジェクトがパラメータとしてこのメソッドに渡されます。Service() メソッドは HttpServlet にすでに存在します。デフォルトのサービス関数は、HTTP リクエストのメソッドに対応する do 関数を呼び出します。service() メソッドがコンテナによって呼び出される前に、init() メソッドが正しく完了していることを確認する必要があることに注意してください。コンテナは、クライアントのリクエスト情報を表すリクエスト オブジェクト (ServletRequest 型) と、クライアントに応答するための応答オブジェクト (ServletResponse 型) を、service() メソッドのパラメータとして構築します。service()メソッドでは、ServletオブジェクトはServletRequestオブジェクトを通じてクライアントの関連情報とリクエスト情報を取得し、リクエストを処理した後、ServletResponseオブジェクトのメソッドを呼び出してレスポンス情報を設定します。 4. WEB コンテナがサーブレットの破棄を決定すると、まずサーブレットの destroy() メソッドを呼び出し、通常は Web アプリケーションを閉じる前にサーブレットを破棄します。 destroy() は 1 回だけ実行され、このメソッドはサーバーが停止してサーブレットがアンロードされるときに実行されます。サーブレット オブジェクトをサービスから削除する必要があることをコンテナが検出すると、コンテナはオブジェクトの destroy() メソッドを呼び出し、サーブレット オブジェクトが使用するリソースを解放し、データを永続ストレージ デバイスに保存できるようにします。たとえば、データをメモリに保存します。データベースへの接続、データベースへの接続の終了など。メモリを解放する必要がある場合、またはコンテナが閉じられる場合、コンテナはサーブレット オブジェクトの destroy() メソッドを呼び出します。サーブレット コンテナが destroy() メソッドを呼び出す前に、service() メソッドで実行中の他のスレッドがある場合、コンテナはこれらのスレッドの実行が完了するか、サーバーによって設定されたタイムアウト値が到着するまで待機します。Servlet オブジェクトの destroy() メソッドが呼び出されると、コンテナは他のリクエストをオブジェクトに送信しません。クライアントに再度サービスを提供するためにサーブレットが必要な場合、コンテナはクライアントのリクエストを処理するためにサーブレット オブジェクトを再生成します。destroy() メソッドが呼び出された後、コンテナはサーブレット オブジェクトを解放し、その後、オブジェクトは Java のガベージ コレクタによってリサイクルされます。 注意 ① 通常、サーブレットの初期化は1回のみ、処理サービスの呼び出しは複数回、破棄も1回のみですが、サーブレットは長期間使用されないと自動的に破棄されます。コンテナーによって再使用される必要がある場合、初期化の操作は時間になると再初期化されます。つまり、特殊な場合には、初期化が複数回実行され、破棄も複数回実行されることがあります。 。 ② サーブレット インスタンスの作成後、サーブレットが顧客のリクエストにサービスを提供できるようになる前に、コンテナはサーブレット インスタンスの init() メソッドを呼び出します。初期化コードがある場合は、サーブレット クラスの init() メソッドをオーバーライドする必要があります。そうでない場合は、GenericServlet の init() メソッドが呼び出されます。そして、クライアントのリクエストごとに (同一人物であるかどうかに関係なく、そのリクエストに対してのみ)、コンテナはリクエストとレスポンスのオブジェクトの新しいペアを作成し、新しいスレッド/スタックを作成します。1 つの特殊なケース (SingleThreadModel) を除いて、サーブレット クラスのインスタンスが複数存在することはありません。 ③ サーブレットのライフサイクルの 4 つのサイクルは次のように要約されます: a. サーブレットのインスタンス化とロードのプロセス (新しい) b. init (ServletConfig) の初期化。 c. リクエストを処理するには、サーブレットのサービス、doget、および dopost メソッドを呼び出して、リクエストとレスポンスをパラメータとして渡します。 d. サービスを終了し、destroy メソッドを呼び出してリソースを解放します。
ページ表示
1. ログインページ
2. 登録ページ
3. ホームページ
4. ページを表示する
5. 新しいページを追加する
6. ページの削除
7. ページを変更する