(Subms)スーパーマーケット注文管理システム
- テクノロジーjava、サーブレット、(JSP、js、jquery、css)を紹介なしで使用、Tomcatサーバー
主な演習は、MVC 3層アーキテクチャをより深いレベルで理解する方法です。スーパーマーケットの注文管理システムは、実際には追加、削除、変更、および調査の項目です。主に内部のビジネスロジックとアーキテクチャのアイデアのいくつかについて
話します。3層MVCアーキテクチャについて簡単に話します。
まず第一に、3層アーキテクチャはMVCの目標と一致しています。どちらも、コードの再利用を分離して改善するためのものです。MVCはデザインパターンであり、3層アーキテクチャはソフトウェアアーキテクチャです。
3層アーキテクチャは、プレゼンテーション層(UIl)(Web層)、ビジネスロジック層(BLL)(サービス層)、データアクセス層(DAL)(dao層)、およびエンティティクラスライブラリ(モデル)に分かれています。
1.エンティティクラスライブラリ(モデル)、Javaでは、エンティティエンティティクラスと呼ばれることがよくあります。データベースはデータを格納するために使用され、通常、特別なクラスを使用してデータテーブルの構造を抽象化することを選択します。クラスの属性は、テーブルの属性に1対1で対応します。
・一般的に、モデルエンティティクラスライブラリレイヤーは、DALレイヤー、BILレイヤー、およびUIレイヤーによって参照される必要があります。
2.データアクセス層(DAL)は、主にデータ型へのアクセス、つまりデータベースの追加、削除、変更、更新などの基本的な操作を格納するためのものです。DALは、ビジネス要件、SQLステートメントの作成、パラメーターの作成、ヘルパークラスの呼び出し、および結果の取得に基づいています。DALレイヤーはBILレイヤーによって呼び出されます。
3.ビジネスロジック層(BLL) BLL層はブリッジのようなもので、UIプレゼンテーション層をDALデータアクセス層に接続します。責任があるのは、データベースを呼び出してアクセスする前にデータを処理および判断するなど、ビジネスロジックに関連する問題に対処することです。
各レイヤーの参照関係は下図のようになります
。mvcと3層アーキテクチャーの関係を次の図に示します。
次に、このプロジェクトを3層アーキテクチャーについて簡単に説明します。
プロジェクト建設
- MavenWebプロジェクトをビルドする
- Tomcatを構成する
- プロジェクトが実行されているかどうかをテストします
- プロジェクトで検出されるjarパッケージをインポートします;
.. jsp、サーブレット、mysqlドライバー、jstl、スタンド、、、(依存関係)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!--standard-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.36</version>
</dependency>
<!-- jstl标签注解依赖-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- servlet 依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<!-- jsp依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!-- mysql依赖 我的数据库版本是8.0.23版本不同的去官网换新的-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
-プロジェクトパッケージ構造を作成します
- リンクリストマッピングの上に導入されたエンティティクラスを作成することは、データベース内のフィールドを属性にカプセル化し、各フィールドにgetとsetを追加することです。
- 基本的なパブリッククラスを記述し
、データベース構成ファイルであるresourcesの下にdb.propertiesファイルを作成します。構成は次のとおりです。
#数据源
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?ServerTimezone=UTC
username=root
password=123456
1.Dao操作データを空のパブリッククラスに書き込む
パブリッククラス終了
- 文字化けしたコードがページに表示されないようにするために、フィルターを使用して文字化けしたコードをフィルタリングします
-
このフィルターを登録することを忘れないでください
2.ログイン機能(パスワード検証、ログアウト、フィルター最適化)
最初に、ユーザーユーザーの操作データベースレイヤーとビジネスレイヤーのインターフェイスと、インターフェイス実装クラスの名前を最初にリストします(インターフェイスのメソッドは、トラブルシューティングと最適化を向上させるために、実装クラスのメソッドに対応します)。
- UserDao(Daoレイヤーインターフェイス)
- UserDaoImpl(Daoレイヤーインターフェイス実装クラス)
- UserService(ビジネス層インターフェース)
- UserService(ビジネス層インターフェース実装クラス)
アカウントを確認
UserDao
UserDaoImpl
UserServiceの
UserserviceImpl
フロントエンド層とサーブレット層の相互作用
ログアウト機能
ログアウト機能は、サーブレット実行アドレスがjspページのタグの後に配置されることであり、サーブレットコードロジックのみをリストします。
フィルタの最適化
ログインせずにメインページにアクセスできないように最適化されました。メインページにアクセスするにはログインする必要があるためです。誰かがメインページのURLをコピーして、ログインせずに直接アクセスしても、爆発することはありません。
3.パスワードを変更します
パスワードページの変更
UserDao
UserDaoImpl
ユーザーサービス
UserserviceImpl
サーブレット層
総括する
1.実際、それだけです。将来の関数は無意味です。アーキテクチャの考え方を深める必要があります。これで使用されるさまざまなレイヤーは、実際には非常に複雑です。SQLを実行するクエリメソッドは、パブリッククラスで記述されます。結果なので、Daoレイヤーに作成する必要があります。メソッドの追加、削除、および変更は、Prepareメソッドを記述しないため、自分で作成する必要があります。
2.また、(接続接続)はDaoレイヤーのメソッド本体に追加されますが、Daoレイヤーには実装されていません。存在するかどうかはDaoレイヤーのみにあり、存在する場合はダウンします。
3.私の理解では、このプロジェクトのサービスビジネスレイヤーでは、パブリッククラスのデータを接続するconnection =メソッドのみが書き込まれ、次にDaoレイヤーが再度呼び出され、接続およびその他の属性が渡されて達成されます。別のプロセス。
4.このプロジェクトを書いたとき、不注意でたくさんのバグを作成しました。最も重要なことは、ログイン検証が実装されると、実装クラスsmbms_userのオブジェクトがカプセル化されているため、Daoレイヤーに作成されることです。 。getsetメソッドが使用されるため、クエリのすべてのプロパティをこのオブジェクトに配置してから戻ります。重要なのは、このオブジェクトをサーブレット層のsetAttributeに配置することです。これにより、各サーブレットのパラメーター(getArrribute)を簡単に取得できます。
5.この記述の意味は、MVC 3層アーキテクチャのアイデアについて詳しくお知らせすることです。そのため、内部のコードを詳細に説明するときにフロントエンドjspを使用しませんでした。ここに、このプロジェクトについて簡単に説明する画像アーキテクチャ