1.インターセプター
Spring MVC のインターセプター (Interceptor) は、Java サーブレットのフィルター (Filter) に似ています。以前、Java Web のフィルターについて少し学習しました。
インターセプターの機能は、ユーザーのリクエストをインターセプトし、それに応じて処理することです。たとえば、JSP でフォーム データをコントローラーに送信する場合、まずインターセプターのクラスに送信されます。たとえば、権限の検証、ログインするかどうか、そしてそれを処理のためにコントローラーに渡します。
アプローチ: インターセプター クラスを構成する必要があります。インターセプタークラス。
次に、Springmvc.xml ファイルにインターセプター クラスを登録する必要があります。そしてインターセプターが動作するパスを設定します。
インターセプタクラスはあまり使われず、springmvc ではログイン許可の判定やデータ検証クラスがよく使われます。
2. データ検証(メモリが必要)
データ検証はエンタープライズ アプリケーションで広く使用されていますが、通常は統合例外処理と組み合わせて処理されます。次に、データ検証の方法について説明します。
その機能は、入力データを期待どおりにすることです。そうでない場合は、入力データの形式を求めるプロンプトが表示されます。
ここでは、Spring フレームワークに付属する検証コンポーネントについて学びます。スプリングバリデータ:
バリデーターインターフェース:(自己完結型)
2 つのメソッド (自己完結型) があります: boolean support(Class<?> klass)
void validate(オブジェクト オブジェクト,エラー エラー)
エラーメッセージの保存方法はrejectまたはrejectValueです。
アプリケーションのトレーニング:製品を追加するためのフォームを作成します。
要件: 1. 製品名と製品の詳細を空白にすることはできません。
2.商品価格は0〜100の間です
3. 作成日をシステム日付より後にすることはできません。
コード分析:
ステップ 1: 依存関係をインポートします (前の依存関係と同じです。Spring 独自のバリデーターには追加のインポート パッケージは必要ありません)
ステップ 2: 前と同じように web.xml ファイルを構成します
ステップ 2.5: Validator クラス (validator クラス) とエラー メッセージのプロパティ ファイル (error.properties など、このファイルは springmvc に登録する必要があります) を設定します。
このクラスはカスタムですが、Validator クラスを継承します。そして、その 2 つのメソッドをオーバーライドします。最後に、POJOの属性に応じて、属性ごとに判定(データ検証。上記の要件を満たすことができます)を行います。
ステップ 3: POJO、サービス層、およびコントローラー層を構成します。やり方は前回とほぼ同じです。
違いは、Controller レイヤーがレイヤー 2.5 で定義された Validator (バリデーター クラス) を使用できることです。
ステップ 4: [表示] ページを設定します。データ入力ページaddGoods,jspを作成します。(前に学習したデータ バインディングを使用して、POJO タイプをバインドします。)
JSP とコントローラーは相互に変換できる、つまり、JSP の作成をコントローラーの作成前に配置できることに注意してください。
ステップ 5: Spring.mvc を構成します。以前と同じです。
ただし、さらに多くの構成メッセージ プロパティ ファイル (つまり、手順 2.5 で作成された Validator クラス) と登録形式コンバーターがあります。
コード分析の最適化:
上記のように段階的に書いていくと、Validateクラスの問題によりプロジェクト全体に問題が発生しやすくなります。最初にデータ バインディングの方法でコードを記述することをお勧めします。データバインディングが渡されると、最終的に商品の詳細ページが表示されます。次に、コードを変更してデータ検証メソッドを追加します。
データ バインディングの手順について少し説明します: (データ バインディングの最終的な概要を取得するには、この方法をさらに実践することをお勧めします)
最初に、データ バインディングをブラインド書き込みします。遭遇する問題の 1 つは、POJO クラスへのデータ バインディング用の JSP ページを最初に作成するか、コントローラー クラスを最初に作成するかということです。
コードステップを記述するための提案:
POJO クラスが最初に記述されます。
次にServiceクラス(ビジネスロジック層、そのメソッドは一般的に判定型(追加が成功したかどうかを判定する)、コレクション型(データベースのコレクションを偽装し、POJOデータをまとめて収集する))を記述します。このサービス層の記述には注意が必要で、強力な抽象ロジックが必要です。インターフェースと実装クラスに分かれています。コントローラーでどのようなデータを取得する必要があるかを考え、取得したデータをサービス層で抽象メソッドで表現する必要があります
次に、Controller クラスを作成します (サービス インジェクションとサービス メソッドを使用します。たとえば、条件を判断し、ページを返すことを選択します。たとえば、model.Attribute を使用して、サービス層によって取得されたデータをモデル型でカプセル化します。)。最後にJSPページを書きます。
少し洞察を追加します。
これはControllerクラスを制御するもので、Goodsタイプ(POJOクラス)であることをgoodsを使って示し、実際にJSPクラスに渡します。
まとめ:
そこで、Controllerクラスのmodel.Addribute("name"、サービス層のメソッド)を取得します。
2 つの方法があります。1 つ目は、最も一般的に使用される EL 式です: ${name}
2 つ目は、form 要素の modelAttribute="name" です。
概要: データを検証するには、追加の Spring バリデータ クラスを作成し、そのクラスを構成して登録する必要があります。
3. 統一例外処理(キー部分)
例外処理処理の違いを判断するには、データ検証の方法を組み合わせてください。
例外処理メソッドはデータ検証メソッドよりもよく使用され、例外処理メソッドがデータ検証メソッドの代わりに使用される場合もあります。したがって、統一された例外処理の知識点を習得する必要があります。
主にカスタム例外クラスを紹介します。Dao、サービス、コントローラー層だからです。すべて例外をスローできます。このため、例外クラスの実装は例外パッケージに単独で格納されますが、これらの層でスローされる例外については、主に練習用に 2 つのメソッドを紹介し、よく使われるのはこの 2 つのメソッドです。
最初のタイプ: HandlerExceptionResolver インターフェースの実装。
これはシステムに付属するクラスです。例外クラスを定義し、実装を継承する必要があります。メソッドがあり、メソッドを書き換えることができます。
ただし、このシステムには例外クラスが付属しています。これを使用する場合は、springmvc.xml ファイルに移動して構成を登録する必要があります。
一般的には、次のような文になります: <bean class="Exception.custom class"/>
2 番目のタイプ: アノテーションを通じて例外クラスを宣言します。@ExceptionHandler (ただし、実際には、この省略はほとんど関係ありません) (これが最も一般的に使用されるメソッドです)
この例外クラスはカスタムであり、継承関係はありません。
ただし、コントロール層で例外処理が必要なControllerクラスを継承してカスタマイズする必要があります。例:
@コントローラ
パブリック クラス TestExceptionController extends BaseController { }
まだ例はありません。
4. SSM フレームワークの統合 (この JavaEE 学習の最終目標は非常に重要です)
この研究の最終目標は、SSM フレームワークの統合を達成できるようにすることです。
前回の学習の前編では Spring と MyBatis の統合について説明し、後編では SpingMVC のフレームワークについて学びました。次に、これら 3 つのフレームワークを組み合わせて使用します。SSM は実際には 3 つの主要なフレームワーク (Spring、Spring MVC、MyBatis) を統合したものです。
アプリケーション プロジェクトを例として、調査のこの部分を実行します。
プロジェクト: ユーザー名に基づいたユーザー情報のあいまいクエリ。
問題分析:
最初の質問:
原因: java.lang.UnsupportedClassVersionError: org/mybatis/spring/SqlSessionFactoryBean は、より新しいバージョンの Java ランタイム (クラス ファイル バージョン 61.0) によってコンパイルされています。このバージョンの Java ランタイムは、52.0 までのクラス ファイル バージョンのみを認識します (鏃犳硶杞藉叆鐨�.绫� [org.mybatis.spring.SqlSes sionFactoryBean])
原因:org.mybatis.spring.SqlSessionFactoryBean
クラスは現在の Java ランタイム (クラス ファイル バージョン 61.0) より新しいバージョンでコンパイルされており、現在の Java ランタイムはバージョン 52.0 までのクラス ファイルのみを認識します。
エラー修正: pom.xml ファイルで、mybatis のバージョンを変更します。mybatis のバージョンを下げるか、mysql のバージョンを上げます。
2番目の質問:
3 番目の質問: (もっと練習してください。)
Daoデータを取得するかテストします。(テストが行われていないため、データが取得できているかどうかは不明です。そのため、今後はSSMフレームワークのテストと、データベースから抽出したデータのテストを行う予定です。)
試験方法:
ControllerにTestControllerクラスのメソッドとTestクラスのテストを書きます。
TestController クラスのメソッド: テストで使用されるデータを書き込みます。(Daoクラスのメソッドが呼び出されます)
テストクラス: applicationContext.xml ファイルのクラスメソッドを呼び出して、前のテストメソッドを呼び出します。
2 番目の問題を解決した後、コードは正常に実行でき、期待どおりであることがわかりました。!!ジュエジュジ
SSM フレームワークをさらに練習してください。最初に spring+mybatis のフレームワーク統合を練習し、次に spingmvc のフレームワークを追加する、組み合わせた演習を行うことをお勧めします。
mybatis のフレームワークでは、データベースに接続した後、データ取得をテストすることがわかったため、springmvc が POJO をどのようにバインドするかを理解する必要があります。これは POJO タイプ、つまり setName="特定の文字列" に対するものであり、そのような設定を追加した後でのみテストを実行できます。
ただし、springmvc フレームワークではそのような設定を行う必要はありません。(POJO クラスにどのようにバインドされているかを理解するには、この場所をさらに練習する必要があります)
演習: ファクトリーパターン思考を使用する練習をする
ログイン、登録、クエリの3つの機能を実現します。