[SpringMVC] HelloSpringMVC-開発の概要と詳細なコンポーネント

SpringMVCを理解する

従来のMVCは、モデルモデル/ビュービュー/コントローラーコントローラーであり、それぞれJavaBean / JSP /サーブレットに対応します。(MVCの知識とイラストの詳細については、ここをクリックしてください

従来のMVC開発モデルでは、重要なのはコントローラーの準備、つまりサーブレットを1つずつ準備することです。これらのサーブレットは、サーブレットインターフェイスを直接または間接的に実装し、doGet / doPostメソッドを書き直す必要があります...ビジネスロジックがより複雑になると、サーブレットがますます増え、作成と保守が面倒になることを想像してみてください。

SpringMVCフレームワークでは、設計者は多くのサーブレットの公開動作をパッケージ化されたDispatcherServletに巧みに抽出しました。各サーブレットの固有の動作は、インターフェイスを実装する必要のないクラスで記述できます。

次の図は、理解に役立つ場合があります。

ここに画像の説明を挿入

 
 

SpringMVCの開発手順とコードの実装

まず第一に、SpringMVCによって実装される要件は、クライアント要求の受信、ビジネスロジックの処理、およびページビューへのジャンプであることは明らかです。

長い話を短くします:

①SpringMVC関連の座標をインポートする

②SpringMVCコアコントローラーDispathcerServletを構成します(web.xml内)

③コントローラークラスとJSPビューページを作成し、アノテーションを使用してアドレスマッピングを構成します

④SpringMVCコア構成ファイルspring-mvc.xmlを構成します(コンポーネントスキャン専用)

⑤クライアントがリクエストを開始します(テスト)

コード:

①SpringMVC関連の座標をインポートする

<!-- 仅供参考 -->
<!-- 关键是spring-webmvc -->

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.5.RELEASE</version>
</dependency>
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.5.RELEASE</version>
</dependency>
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
</dependency>
<dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.2.1</version>
</dependency>

②SpringMVCコアコントローラーDispathcerServletを構成します(web.xml内)

<!-- 配置SpringMVC前端控制器 -->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 告诉SpringMVC框架配置文件的位置 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!-- web项目启动时加载一次 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

③コントローラークラスとJSPビューページを作成し、アノテーションを使用してアドレスマッピングを構成します

@Controller
public class UserController {
    
    

    @RequestMapping("/hello")
    public String sayHi() {
    
    
        System.out.println("Hello >_<");
        return "index.jsp";
    }

}

④SpringMVCコア構成ファイルspring-mvc.xmlを構成します(現在はコンポーネントスキャンのみ)

<!-- 组件扫描(只扫描controller包即可) -->
<context:component-scan base-package="com.samarua.controller" />

⑤クライアントがリクエストを開始します(テスト)

>>> 浏览器URL输入:http://localhost:8080/hello

 
 

@RequestMappingアノテーションについて

作用:
	建立资源路径到某个类的某个方法的映射(代替了之前学的每个Servlet上的url注解)

位置:
	- 类上。
	- 方法上。
	-"多级目录"的思想,类上的一级目录与方法上的二级目录进行"拼接",组成完整的资源路径

参数:
	- value: 资源路径,这是一个字符串
	- method: 请求的方式,常见的有RequestMethod.GET/POST/PUT/DELETE
	- param: 用于指定参数需要满足的条件,这是一个表达式数组

举例:
	@RequestMapping(value = "/hello", method = RequestMethod.GET, params = {
    
    "username", "!sex", "isLoli=true", "age!=12"})

 
 

spring-mvc.xmlのビューパーサーのサフィックスとサフィックスの構成について

<!-- 配置视图解析器前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views" />
    <property name="suffix" value=".jsp" />
</bean>

<!-- 默认前缀为"redirect:" -->

 
 

SpringMVCコードフロー図

ここに画像の説明を挿入

サーバー側エンジンの主な機能は、要求リソースパスを解析すること、つまりHttpプロトコル要求/応答オブジェクトの要求/応答情報変換することです。

 
 

SpringMVCのコンポーネントとプロセス

イラスト
ここに画像の説明を挿入

プロセス

①ユーザーがフロントコントローラーDispatcherServlet(ディスパッチコア)にリクエストを送信します

②DispatcherServletは、HandlerMappingプロセッサマッパーを呼び出す要求を受け取ります

③プロセッサマッパーは特定のプロセッサを見つけ、プロセッサに到達する実行チェーンを生成し、それをDispatcherServletに返します。

④DispatcherServletはHandlerAdapterプロセッサアダプタを呼び出します

⑤HandlerAdapterは、実行チェーンに従って特定のプロセッサを検索します

⑥プロセッサが実行されると、ModelAndView(モデルとビュー)に戻ります。

∥HandlerAdapterはプロセッサの実行結果ModelAndViewをDispatcherServletに返します

⑧DispatcherServletはModelAndViewをViewResloverビューパーサーに渡します

⑨ViewResloverは、解析後に特定のビューに戻ります

⑩DispatcherServletは、ビューに従ってビューをレンダリングします(つまり、モデルデータをビューに入力します)

⑪最終応答

コンポーネント

フロントコントローラー:DispatcherServlet

ユーザーリクエストがフロントコントローラーに到達すると、MVCパターンでCに到達するのと同じです。DispatcherServletは、プロセス制御全体の中心であり、他のコンポーネントを呼び出してユーザー要求を処理します。DispatcherServletの存在により、コンポーネント間の結合が減少します。

プロセッサマッパー:HandlerMapping

HandlerMappingは、ユーザーリクエストによって提供されたリソースパスに従って実際のプロセッサにマッピングし、この実行チェーンを返すことができます

プロセッサーアダプター:HandlerAdapter

HandlerAdapterを介したプロセッサの実際の実行

プロセッサー:ハンドラー

つまり、コントローラー、つまりコントローラー、つまり特定の処理ロジックです。

ビューリゾルバー:ビューリゾルバー

View Resolverは、最初に論理ビュー名を物理ビュー名、つまり特定のページアドレスに解析し、次にビュービューオブジェクトを生成し、最後にビューをレンダリングして、ページを通じてユーザーに結果を表示します。

表示:表示

jstlView、freemarkerView、pdfViewなどを含め、最も一般的に使用されるビューはjspです。

 
 
 
 

 
 
 
 

 
 
 
 

もっと> _ <

おすすめ

転載: blog.csdn.net/m0_46202073/article/details/114265394