MVC第2週リリース
インフラストラクチャ-金英漢の
Spring完全征服シリーズの学習を参考にしました
https://www.inflearn.com/roadmaps/373
フロントエンドコントローラなし、100個のコントローラ...200個なら?
FrontController(Servlet)
POJO Controller (java)
管理が難しい.
共通の論理を含めることができます.
要求がある場合は、テンプレートは直接マッピングされません.
フロントエンドコントローラにすべてのサーバ要求を受信させ、コントローラに送信します.
以前、すべてのコントローラからサーブレットリクエストが受信されました.
残りのコントローラはトップボックスを使用する必要はありません.
フロントエンドコントローラを作成し、urlごとにコントローラをマッピングします.
要求に応じて値をジェネレータに挿入
コントローラからビューを返す代わりにMyViewというクラスを作成
サーブレットテクノロジーを使用しないコードもあります
既存のリクエスト.setAttribute()をモデルとして使用し、テンプレートの依存関係を解消するためにモデルを直接作成します.
モデルAndViewを作成して戻すのではなく、コントローラインタフェースにモデルを追加して、コントローラがビューの論理名のみを返すようにします.
コントローラをFront Controlにマッピングする方法をより柔軟に変更
supportsはhandleメソッド付きアダプタを導入
Spring BootはDispathCerServiceletを自動的に登録し、すべてのパスにマッピングします.
HttpServletを継承するFrameworkServletのサービス()メソッドを簡略化し、複数のメソッドを呼び出すときにDispathServletを呼び出す.doDispatch()メソッドを実行します.
FrameWorkService()の上書き方法
doDispatchでHandlerを取得する部分に入りましょう
RequestMappingHandleMappingをマップしました
このリクエストをマッピングできますか?
5つのプロセッサマッピング中に検索(nullではないため、プロセッサは現在のプロセッサを返します)
プロセッサアダプタを検索する
4つのプロセッサアダプタの実行可能アダプタを検索
RequestMappingHandleAdapterが見つかりました
Handlerマッピング、アダプタを見つけて要求を処理します.
Handlerメソッドを呼び出します(Javaのアプリケーションでは、コントローラのHandlerメソッドに関する情報が得られ、実行できます).
どうやってハンドルを見つけたらいいか分からない
ランキング0のrequestmappingHandlerMapping:プレゼンテーションベースのコントローラ@requestMappingがある場合、マッピング
スプリングシートに@ResquestMappingまたは@Controllerがある場合は、マッピング情報とみなされます.
1位BenNameUrlHandleMapping:スプリングシートの名前で一致
ハンドルアダプタ
0位RequestMappingHandleAdapter
第1位HttpRequestHandler処理
第2位単純Handler Controller
Spring boot-propertiesファイルにprefix、接尾辞を指定
Spring BootはInternalResourceViewResolverを自動的に登録しますmvc.view.prefix、接尾辞設定情報を使用して登録します.
DispatcherServlet
ViewResolverタイプのビンを探して、ArrayListに入れて遊ぶ.
なければ、基本戦略をもたらします.ここにInternalResourceViewResolverがあります.
基本ポリシーをインポートする部分
Dispathcer.propertiesに格納されるデフォルトポリシー
beanにコンテンツが保存されていない場合に使用される基本ポリシー
@Controller=スプリング空席+ハンドルマッピングとして認識可能
@RequestMappingがHandleMappingとして認識される方法
@Controller.class or @ReqeustMapping.クラス表現マッピング可能
Spring完全征服シリーズの学習を参考にしました
https://www.inflearn.com/roadmaps/373
Front Controlモード
フロントエンドコントローラなし、100個のコントローラ...200個なら?
FrontController(Servlet)
POJO Controller (java)
管理が難しい.
共通の論理を含めることができます.
要求がある場合は、テンプレートは直接マッピングされません.
フロントエンドコントローラにすべてのサーバ要求を受信させ、コントローラに送信します.
以前、すべてのコントローラからサーブレットリクエストが受信されました.
残りのコントローラはトップボックスを使用する必要はありません.
フロントエンドコントローラの導入(v 1)
フロントエンドコントローラを作成し、urlごとにコントローラをマッピングします.
要求に応じて値をジェネレータに挿入
分離ビュー(v 2)
コントローラからビューを返す代わりにMyViewというクラスを作成
public class MyView {
private String viewPath;
public MyView(String viewPath) {
this.viewPath = viewPath;
}
public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request,response);
}
コントローラからviewpathを転送する return new MyView("WEB-INF/views/members.jsp");
モデルの追加(v 3)
サーブレットテクノロジーを使用しないコードもあります
既存のリクエスト.setAttribute()をモデルとして使用し、テンプレートの依存関係を解消するためにモデルを直接作成します.
public interface ControllerV3 {
ModelView process(Map<String, String> paramMap); // v2의 인터페이스와다르게 서블릿 기술이 들어가지않았다.
}
v4
モデルAndViewを作成して戻すのではなく、コントローラインタフェースにモデルを追加して、コントローラがビューの論理名のみを返すようにします.
public class MemberSaveControllerV4 implements ControllerV4 {
..
@Override
public String process(Map<String, String> paramMap, Map<String,Object>model) {
...
// ModelView mv = new ModelView("save-result");
//mv.getModel().put("member", member);
//return mv;
model.put("member",member);
return "save-result";
}
}
v5
コントローラをFront Controlにマッピングする方法をより柔軟に変更
supportsはhandleメソッド付きアダプタを導入
スプリングMVC-構造を知る
ばねMVCの全体構造
Spring BootはDispathCerServiceletを自動的に登録し、すべてのパスにマッピングします.
DispatcherServiceletリクエストフロー
HttpServletを継承するFrameworkServletのサービス()メソッドを簡略化し、複数のメソッドを呼び出すときにDispathServletを呼び出す.doDispatch()メソッドを実行します.
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
DispatcherServiceletストリームをデバッグモードで表示
FrameWorkService()の上書き方法
doDispatchでHandlerを取得する部分に入りましょう
RequestMappingHandleMappingをマップしました
このリクエストをマッピングできますか?
5つのプロセッサマッピング中に検索(nullではないため、プロセッサは現在のプロセッサを返します)
プロセッサアダプタを検索する
4つのプロセッサアダプタの実行可能アダプタを検索
RequestMappingHandleAdapterが見つかりました
Handlerマッピング、アダプタを見つけて要求を処理します.
Handlerメソッドを呼び出します(Javaのアプリケーションでは、コントローラのHandlerメソッドに関する情報が得られ、実行できます).
Handlerマッピング、アダプタ
どうやってハンドルを見つけたらいいか分からない
ランキング0のrequestmappingHandlerMapping:プレゼンテーションベースのコントローラ@requestMappingがある場合、マッピング
スプリングシートに@ResquestMappingまたは@Controllerがある場合は、マッピング情報とみなされます.
1位BenNameUrlHandleMapping:スプリングシートの名前で一致
ハンドルアダプタ
0位RequestMappingHandleAdapter
第1位HttpRequestHandler処理
第2位単純Handler Controller
ビューマネージャの動作(デバッグモード)
Spring boot-propertiesファイルにprefix、接尾辞を指定
Spring BootはInternalResourceViewResolverを自動的に登録しますmvc.view.prefix、接尾辞設定情報を使用して登録します.
DispatcherServlet
ViewResolverタイプのビンを探して、ArrayListに入れて遊ぶ.
なければ、基本戦略をもたらします.ここにInternalResourceViewResolverがあります.
基本ポリシーをインポートする部分
Dispathcer.propertiesに格納されるデフォルトポリシー
beanにコンテンツが保存されていない場合に使用される基本ポリシー
スプリングMVC-起動
@Controller=スプリング空席+ハンドルマッピングとして認識可能
@RequestMappingがHandleMappingとして認識される方法
@Controller.class or @ReqeustMapping.クラス表現マッピング可能
Reference
この問題について(MVC第2週リリース), 我々は、より多くの情報をここで見つけました https://velog.io/@dudwls0505/MVC-2주차발표テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol