JavaWeb-MVCケース

3層の最適化:

MVCと3層構造の比較: 

1.3層アーキテクチャ

      これは、MVCデザインパターンの目標と一致しています。すべては、結合を理解し、コードの再利用を改善することです。

       違いは、2つはプロジェクトの理解に関して異なる視点を持っています。

2. 3層構成:

プレゼンテーション層(USL、ユーザー表示層、表示層)

                              a。フォアグラウンド:MVCのビューに対応します。これは、ユーザーと対話し、インターフェイスを表示するために使用されます。

                                          jsp js html css jqueryおよびその他のWebフロントエンドテクノロジーコードの場所:WebContent

                              b。背景:MVCのコントローラーの場合、ジャンプを制御し、ビジネスロジックレイヤーを呼び出すために使用されます

                                         サーブレット(SpringMVC Struts2)、xxxにあります。サーブレットパッケージ

ビジネスロジック層(BLL、ビジネスロジック層、サービス層)

                               a。プレゼンテーション層の要求呼び出しを受信します

                               b。データアクセス層の組み立て、論理演算(追加、削除、変更、削除:チェック+削除)、

                                      通常、XXX。サービスパッケージにあります(XXX。manager、XX。bllになることもできます

データアクセス層(DAL、データアクセス層、Dao層)

                                a。データベース操作、アトミック操作(追加、削除、変更、およびチェック)への直接アクセス

                                      通常、XXX.daoパッケージに含まれています

3. 3つのレイヤー間の関係:

上位層は要求を下位層に渡し、下位層はそれを処理して上位層に返します。

上位層は下位層に依存し、コードの理解、つまりメンバー変数を保持することに依存します。Aの前提にはBが必要です。

Daoレイヤーはデータベースがある場合にのみ可能であるため、Daoレイヤーはデータベースに依存します。

1.インターフェイス
    を追加するための推奨事項指向開発:最初のインターフェイス-次に実装クラス-
    サービス、dao結合インターフェイス
    -インターフェイスおよび実装クラス命名規則
        インターフェイス:インターフェイス、名前付きIエンティティクラスサービスIStudentService
                        IStudentDao    
        実装クラス:名前付きエンティティクラスを実装ServiceImpl
                        StudentServiceImplStudentDaoImpl
        インターフェイス:IエンティティクラスレイヤーIStudentServiceのパッケージ名
            、IStudentDao    インターフェイスが配置されているパッケージ:xxx.service xx.dao

        実装クラス:エンティティクラスレイヤーのパッケージ名はImpl StudentServiceImplで
            あり、StudentDaoImpl実装クラスが配置されているパッケージはxxx.service.implxx.dao.implです。

    将来、インターフェイス/実装クラスを使用する場合は、次のように記述することをお勧めし
    ます
    。interfacex = newimplementation class(); IStudentDao studentDao = new StudentDaoImpl();

2.Daoレイヤーのコード量を簡素化できるDBUtil汎用データベースヘルパークラス

ヘルプクラスは通常、xxx.utilパッケージで作成することをお勧めします


A
{

    a(){         B.connection     } }


B
{     静的接続接続= ..     b {     } }


        

メソッドのリファクタリング:複数のメソッドの共通コードを抽出し、それらをメソッドに個別に記述してから、メソッド
a()
{     ..     c();     .. }を導入します



    

b()
{     ..     c();     .. }



c()
{         [..     ..         ...             ..] }





Webデバッグ:
Javaコードを使用したデバッグの違い:起動方法が異なります

index.jsp-> index_jsp.java-> index_jsp.class 

jsp-> java-> class
JspはJavaに変換され、コンパイルされたクラスファイルはtomcatの作業ディレクトリに存在します


10000

ページネーション:5つの変数(属性)

1.総データ数(xxxからcount(*)を選択、データベースを確認)
2。ページサイズ(ページ容量、各ページに表示されるデータ項目数)(ユーザー定義)
3。総ページ数(自動計算)
    800:10 =
    合計80ページ=合計データ/ページサイズ

    802:10 = 800/10 +1;
    総ページ数=データの総数/ページサイズ+1;

    ->一般式
    総ページ数=総データ数%ページサイズ== 0?総データ数/ページサイズ:総データ数/ページサイズ+1;

注:自動計算のタイミング:データの総数とページサイズが割り当てられると、ページの総数が自動的に計算されます。


4.現在のページ番号(ユーザー定義)

5.エンティティオブジェクトコレクション(現在のページのデータ収集):データベースに依存します(データベースを確認します)
    前提条件:ページあたり10アイテム(ページサイズ= 10)

select * from student where id> = start and id <= end;


開始ページ数と終了ページ数開始と終了の同等の書き込み
11-10(ページ数-1)* 10 + 1-ページ数* 10
2 11-20
3 21-30


データのページの開始と終了:

    (ページ数-1)* 10 + 1-ページ数* 10

select * from student where sno> =(number of pages-1)* 10 + 1 and sno <= number of pages * 10;
この種のページングSQLは、snoのデータに厳密に依存します。ギャップ(クラック)が発生すると、 snoでは、すべてを満足させることはできません。

->このSQL変換:1。rownumがあります2
rownum> xx変換のコアを持つことはできません:rownumを疑似列から一時テーブルの通常の列に変換します。

select * from 

    select rownum r、t。* from
    (selects 。* from student s order by sno asc)t   
 
)where r> =(页数-1)* 10 +1およびr <=页数* 10;            


最適化:

select * from(
    select rownum r、t。* from
    (selects 。* from student s order by sno asc)t
    where rownum <= page number * page size            
 
)where r> =(page number-1)* page size + 1 ;                
  

1
2
3

6
7
8
9

...
11
12
13
..
21
22
23
.。

    

    

daoとDBUtilの違い:
daoは、特定のクラスを処理するデータベース操作クラスです
。DBUtilは、一般的なデータベース操作クラスです。

おすすめ

転載: blog.csdn.net/Qmilumilu/article/details/86484161