この記事では、SpringMVC ワークフローについて詳しく説明します (コード付き)。必要な方は参考にしていただければ幸いです。
SpringMVC ワークフロー:
SpringMVC ワークフローの説明
1. ユーザーからサーバーへの送信時最初のステップ 2 の詳細図に示すように、リクエストは Spring フロントエンド コントローラー DispatcherServlet によって取得されます。DispatcherServlet はリクエスト URL を解析します (たとえば、次の URL でリクエストを送信します)。 http://localhost:8080/SpringMVC/hello.action) を実行すると、リクエストのリソース識別子 (URI、上記の hello.action に相当) が取得されます。次に、URI に従って、ハンドラー マッパー (HandlerMapping) が呼び出されて、ハンドラーによって構成されたすべての関連オブジェクト (Handler オブジェクトと Handler オブジェクトに対応するインターセプターを含む) を取得し、最終的に HandlerExecutionChain オブジェクトの形式で返されます。 3.DispatcherServlet は、上記で返された Handler を取得し、適切な HandlerAdapter を選択します。 (注: HandlerAdapter が正常に取得されると、この時点でインターセプターの preHandler(...) メソッドの実行が開始されます。) 4. 適切な HandlerAdapter を選択すると、Handler の実行が開始されます。実行されました。ハンドラーのパラメータを入力するプロセス中に、Spring は設定に応じて追加の作業を行います (私たちがそれを処理する必要はありません): EG:HttpMessageConveter : メッセージ ( Json 、 xml 、その他のデータなど) をオブジェクトにリクエストし、そのオブジェクトを指定された応答情報に変換します。#データ変換: リクエスト メッセージをデータに変換します。たとえば、String は Integer、Double などに変換されます。
データの急進化: リクエスト メッセージのデータをフォーマットします。文字列を書式設定された数値や書式設定された日付に変換するなど。
データ検証: データの有効性 (長さ、形式など) を検証し、検証結果を BindingResult または Error に保存します
5 ハンドラーの実行が完了すると、ModelAndView オブジェクト (ビュー名またはビュー名とモデルを含む) が DispatcherServlet に返されます。
6 返された ModelAndView オブジェクトに基づいて、選択します。
7. ViewResolver は、Model と View を結合してビューをレンダリングします。
##8 最後に、ビューのレンダリング結果をクライアントに返します。 # コンポーネント名詞の説明:1. DispatcherServlet: フロントエンド コントローラー
は、プロセス全体の中心であり、他のコントローラーを呼び出します。コンポーネント
2.
web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!-- 让servlet随服务启动 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
注: すべてのインターセプトを /* に設定することはできません。アクションが要求されたときに、アクションが jsp インターセプトにジャンプすると、再度ブロックされます。例外が発生しました: マッピング アドレス
3 が、jsp パスに従って見つかりません。Settingsspringmvc 構成ファイル <servlet>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/springmvc.xml</param-value>
</init-param>
</servlet>
public class Hello implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { List list = new ArrayList<>(); list.add("one"); list.add("two"); ModelAndView mv = new ModelAndView(); mv.addObject("list",list); return mv; } }
5.在springmvc.xml中配置、
<!-- 配置适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 处理器映射器 --> <!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 配置处理器 --> <bean name="/hello.action" class="com.mt.controller.Hello"></bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
6.视图开发 ,jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> asdfadfadfa ${list } </body> </html>
测试结果: 开启服务器后, 发送 http://localhost:8080/SpringMVC/hello.action的请求
页面显示:
对应理解springMVC 的流程即可。
以上がSpringMVC ワークフローの詳細な紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。