8日目: 春のMVC

1.mvc

コンセプト:

MVCとは、Model(モデル)、View(ビュー)、Controller(コントローラー)の略で、ソフトウェアの設計仕様です。ビジネスロジック、データ、表示を分離してコードを整理する方法です。MVC の主な機能は、ビューとビジネス ロジックの間の双方向の結合を減らすことです。MVC はデザイン パターンではなく、MVC はアーキテクチャ パターンです。もちろん、MVC ごとに違いがあります。

モデル:

データモデルは表示されるデータを提供するため、ドメインモデルまたは JavaBean コンポーネントと見なすことができるデータと動作が含まれています。

意見:

モデルの表示に責任を負います。これは通常、私たちが見るユーザー インターフェイスであり、顧客が見たいものです。

コントローラ:

ユーザーのリクエストを受け取り、モデルに処理を委任し (状態の変更)、返されたモデル データを処理後にビューに返します。ビューは表示を担当します。つまり、コントローラーはディスパッチャーの役割を果たします。

2. サーブレットを確認する

Web ブラウザーまたは他の HTTP クライアントからの要求と、HTTP サーバー上のデータベースまたはアプリケーションとの間の中間層として機能する、Web サーバーまたはアプリケーション サーバー上で実行されるプログラム

2.1: 例:

1. 新しい Maven プロジェクトを作成し、pom の依存関係を導入する

2. moudle を作成し、Web サポートを追加し、サーブレットと jsp jar の依存関係をインポートします。

3. ユーザー要求を処理するサーブレット クラスを作成する

4. WEB-INF ディレクトリに新しい jsp フォルダを作成し、新しい hello.jsp を作成します。

5.web.xmlにサーブレットを登録する

6. テスト

localhost:8080?method=add

2.2: MVC フレームワークの機能:

  1. URL を Java クラスまたは Java クラスにマップするメソッド。
  2. ユーザーが送信したデータをカプセル化します。
  3. 処理要求 - 関連する業務処理の呼び出し - 応答データのカプセル化。
  4. 応答データをレンダリングする jsp/html などのプレゼンテーション層データ。

3.SpringMvc

Spring MVC は、Java ベースの MVC に基づく軽量の Web フレームワークです。

3.1: 機能:

1.軽量で習得が容易

2. 効率的な要求応答ベースの MVC フレームワーク

3. スプリングとの相性が良く、シームレスに一体化

4. 設定より規約

5.強力な機能

6. 簡潔

3.2: 原則:

リクエストが開始されると、フロントエンド コントローラーによってリクエストがインターセプトされ、リクエスト パラメータに従ってプロキシ リクエストが生成され、リクエストに対応する実際のコントローラーが検出され、コントローラーがリクエストを処理し、データ モデルを作成し、アクセスします。コントローラは、モデルとビューを使用してビューの結果をレンダリングし、結果を中央コントローラに返し、結果をリクエスタに返します。

 3.3: SpringMVC の実行原理:

図は、SpringMVC の比較的完全なフローチャートを示しています。実線は、開発者が実装する必要のない SpringMVC フレームワークによって提供されるテクノロジを示し、点線は、開発者が実装する必要があることを示します。

実装プロセス:

1. DispatcherServlet はフロント コントローラーを表し、Spring MVC 全体のコントロール センターです。ユーザーがリクエストを行い、DispatcherServlet がリクエストを受け取り、リクエストをインターセプトします。

2.HandlerMapping はプロセッサ マッピングです。DispatcherServlet は HandlerMapping を呼び出し、HandlerMapping はリクエスト URL に従って Handler を見つけます

3. HandlerExceution は特定の Handler を表し、URL に従って対応するコントローラーを見つけるために使用されます。

4.HandlerExceution は、解析された情報を DispacherServlet に渡します。

5. HandlerAdapter はプロセッサ アダプタを表し、ルールに従って Handler を実行します。

6. Handler は具体的に Controller に実行を要求します

7. コントローラーは、ビューの論理名またはモデルを HandlerAdapter に返します。

8. HandlerAdapter は、ビューの論理名またはモデルを DispatcherServlet に返します。

9. DispatcherServlet は、ビュー リゾルバー (ViewResolver) を呼び出して、HandlerAdapter によって渡されたビューの論理名を解決します。

10. ビュー リゾルバー (ViewResolver) は、解析されたビューの論理名を DispatcherServlet に渡します。

11. DispatcherServlet は、解析されたビューの結果に基づいて特定のビューを呼び出します

12. ビューをユーザーに提示する

4.Spring MVC プログラミング

4.1: 構成バージョン

web.xml の構成、DispatcherServlet の登録

新建springmvc-servlet.xml,添加 处理映射器,添加 处理器适配器,添加 视图解析器

 

新建Controller,返回一个ModelAndView,装数据,封视图

注册bean

跳转的jsp页面,显示ModelandView存放的数据

启动测试:

localhost:8080/hello

4.2:注解版

配置web.xml:

修改springmvc-servlet.xml配置文件:

创建Controller控制类:

创建视图:

添加lib(不添加会接口找不到):

启动测试:

localhost:8080/hello

4.3:小结

步骤:

  1. 新建一个web项目
  2. 导入相关jar包
  3. 编写web.xml , 注册DispatcherServlet
  4. 编写springmvc配置文件
  5. 接下来就是去创建对应的控制类 , controller
  6. 最后完善前端视图和controller之间的对应
  7. 测试运行调试.

使用springMvc必须注册:处理器映射器、处理器适配器、视图解析器;其中视图解析器需要手动配置,其他只需要开启注解。

5.RestFul风格

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

功能:

使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作

请求类型:

@GetMapping("/hello") //处理get请求

@PostMapping("/hello") //处理post请求,更倾向于添加信息

@PutMapping("/hello") //与post相同,更倾向于更新信息

@DeleteMapping("/hello") //处理delete请求

@PatchMapping("/hello") //Patch方式是对put方式的一种补充,put方式是可以更新.但是更新的是整体.patch是对局部更新

接收参数:

@RequestParam

取得方法:http://localhost:8080/hello?param=10

@パス変数

取得方法:http://localhost:8080/hello/101

@RequestBody

6. 転送とリダイレクト

転送とリダイレクトの最大の違いは、リダイレクトによってブラウザが機能し、転送によってサーバーが機能することです。

リダイレクトは任意の URL にできますが、転送は現在の URL である必要があります。

Forward (forward: 転送要求 (接頭辞と接尾辞を削除)):

mv.setViewName("str");

str="forward: path" リクエストは jsp に転送されます

str="forward: コントローラーのマッピング" リクエストがコントローラー メソッドに転送される

リダイレクト (リダイレクト: リダイレクト):

mv.setViewName("str");

str="redirect: path" リクエストは jsp に転送されます

str="redirect: controller mapping" リクエストはコントローラー メソッドに転送されます

例:

たとえば、Xiao Ming が KFC の A 窓口に家族用のバケットを買いに行きましたが、A 窓口のウェイターはもうないことに気づきましたが、B 窓口にはまだありました。その後、B 窓口からそれを持ってきました。これは転送と呼ばれます。 ; リダイレクトと呼ばれます。

8. 文字化け問題

文字化けの問題は、開発において非常によくある問題です。

解決:

1.文字化けの問題はフィルターによって解決され、SpringMVCはweb.xmlで構成できるフィルターを提供します

注: ここに /* を書きます / を書くと、jsp ページのフィルタリングができなくなり、文字化けが解決できなくなります

しかし、いくつかの極端なケースでは、このフィルターが get well をサポートしていないことがわかりました。

2. Tomcat 構成ファイルを変更し、エンコーディングを設定します。

3. カスタムフィルター (ユニバーサル):

通常であれば、SpringMVC のデフォルトの文字化け処理は非常にうまく解決できます。次に、このフィルターを web.xml で構成します。

平時は文字化けの問題にもっと注意が必要で、できるだけエンコーディングを設定できるところは統一エンコーディングUTF-8に設定!

9.インターセプター

インターセプター:主にユーザーリクエストを傍受し、それに応じて処理するために使用されます

フィルターとインターセプターの違い: インターセプターは AOP アイデアの特定のアプリケーションです。

フィルター

サーブレット仕様の一部であり、どの javaweb プロジェクトでも使用できます

/* を url-pattern に設定すると、アクセスするすべてのリソースを傍受できます

インターセプター

インターセプターは SpringMVC フレームワークそのものであり、SpringMVC フレームワークを使用するプロジェクトのみが使用できます

インターセプターはアクセスされたコントローラー メソッドのみをインターセプトし、アクセスが jsp/html/css/image/js の場合はインターセプトされません。

例:

1. インターセプターを記述 (HandlerInterceptor インターフェースが実装されている必要があります)、preHandle メソッドはインターセプト処理を実行し、他の 2 つのメソッドは書き換える必要はありません (処理ログ)

springmvc の構成ファイルでインターセプターを構成します。

テスト: http://localhost:8080/t1

おすすめ

転載: blog.csdn.net/qq_35056891/article/details/126947700