【Spring】—Spring MVC 入門

Spring MVC の概要

1. Spring MVCの概要

Spring MVC は、Spring が提供する軽量の Web フレームワークであり、Web MVC 設計パターンを実装します。Spring MVC は、別のフレームワーク Struts2 よりも使用方法とパフォーマンスの点で優れています。

Spring MVCには以下のような特徴があります。

  • これは Spring フレームワークの一部であり、Spring が提供する他の機能を簡単に利用できます。
  • 柔軟性があり、他のフレームワークと簡単に統合できます。
  • フロント コントローラーの DispatcherServlet が提供されるため、開発者は追加のコントローラー オブジェクトを開発する必要がありません。
  • ユーザー入力を自動的にバインドし、データ型を正しく変換できます。
  • ユーザー入力を検証するために、共通のバリデーターが組み込まれています。検証が失敗した場合は、入力フォームにリセットされます。
  • 国際化に対応しており、ユーザーの地域に応じて複数の言語を表示できます。
  • JSP、Velocity、FreeMarker やその他のビュー テクノロジなど、さまざまなビュー テクノロジをサポートします。
  • XML ベースの構成ファイルを使用すると、編集後にアプリケーションを再コンパイルする必要がありません。

2. ケース - 最初の Spring MVC アプリケーション

1. プロジェクトを作成し、JAR パッケージをインポートします

Chapter11 という名前の Web プロジェクトを作成し、Spring MVC プログラムの実行に必要な JAR パッケージをプロジェクトの lib ディレクトリに追加して、クラスパスに公開します。

ここに画像の説明を挿入

4 つのコア JAR パッケージ、commons-logging JAR パッケージ、および 2 つの Web 関連 JAR パッケージがプロジェクトに追加されます。これら 2 つの Web 関連 JAR パッケージは、Spring MVC フレームワークに必要な JAR パッケージです。

2. フロントコントローラーの設定

Spring MVCのフロントコントローラーDispatcherServletをweb.xmlで設定します。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <servlet>
    <!--配置前端过滤器-->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化时加载配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
            <!--表示容器在启动时立即加载Servlet -->
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 </web-app>

主に構成<servlet>と要素です。<servlet- mapping>Spring MVC フロントエンド コントローラー DispatcherServlet はで構成され、 Spring MVC 構成ファイルの場所は<servlet>そのサブ要素によって構成されます。要素内の1 は、コンテナー開始時にすぐにサーブレットをロードすることを意味します。<init-param><load-on-startup><servlet-mapping><url-pattern>

3. コントローラークラスを作成する

src ディレクトリに com.ssm.controller パッケージを作成し、そのパッケージ内にコントローラ インターフェイスを実装する必要があるコントローラ クラス ControllerTest を作成します。

package com.ssm.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ControllerTest implements Controller {
    
    
    @Override
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1)throws Exception{
    
    
        //创建ModelAndView对象
        ModelAndView m = new ModelAndView();
        //向模型对象中添加一个名称为msg的字符串对象
        m.addObject("msg","第一个spring MVC程序");
        //设置返回的视图路径
        m.setViewName("/WEB-INF/jsp/welcome.jsp");
        return m;
    }
}

handleRequest() は、Controller インターフェイスの実装メソッドです。ControllerTest クラスは、このメソッドを呼び出してリクエストを処理し、ビュー名、またはビュー名とモデルを含む ModelAndview オブジェクトを返します。この場合、msg という名前の文字列オブジェクトがモデル オブジェクトに追加され、返されるビュー パスは WEB-INF/jsp/welcome.jsp に設定されるため、リクエストは welcome.jsp ページに転送されます。

4. Spring MVC設定ファイルを作成し、コントローラーのマッピング情報を設定する

srcディレクトリに設定ファイルspringmvc-config.xmlを作成し、そのファイル内にコントローラ情報を設定します。

springmvc-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--  配置处理器Handle,映射"controllerTest"请求  -->
    <bean name="/controllerTest" class="com.ssm.controller.ControllerTest" />
    <!--  处理器映射,将处理器Handle的name作为url进行查找  -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!--  处理器适配器,配置对处理器HandleRequest()方法的调用  -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!--  视图解析器  -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>

まず、「/ControllerTest」という名前の Bean が定義され、コントローラー クラスの ControllerTest を「/ControllerTest」リクエストにマップします。次に、プロセッサ マッパー BeanNameUrlHandlerMapping とプロセッサ アダプター SimpleControllerHandlerAdapter が構成され、プロセッサ マッパーは名前に使用されます (つまり、プロセッサ Bean 内の URL) でプロセッサが検索され、プロセッサ アダプタを使用して、ControllerTest プロセッサの handleRequest() メソッドの呼び出しが完了します。最後に、ビュー リゾルバ InternalResourceViewResolver が結果ビューを解決するように設定され、結果がユーザーに表示されます。

知らせ

Spring の古いバージョンでは、ハンドラー マッパー、ハンドラー アダプター、およびビュー リゾルバーを構成ファイルで構成する必要がありました。ただし、Spring 4.0 以降では、プロセッサ マッパー、プロセッサ アダプタ、およびビュー リゾルバが設定されていない場合、Spring 内のデフォルト設定が使用され、対応する作業を完了します。ここで示されている設定プロセッサ マッパー、プロセッサ アダプタ、ビューは、パーサーによってリーダーが許可されるようになります。 Spring MVC のワークフローをより明確に理解するため。

5. 表示ページを作成する

WEB-INF ディレクトリの下に JSP フォルダーを作成し、そのフォルダー内にページ ファイル welcome.jsp を作成し、このページで EL 式を使用して msg 内の情報を取得します。

<%@ page contentType="text/html; charset=UTF-8" language="java"
    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>入门程序</title>
</head>
<body>
    ${
    
    msg}
</body>
</html>

6. プロジェクトを開始してアプリケーションをテストします

Chapter11 プロジェクトを Tomcat サーバーに公開し、サーバーを起動します。ブラウザで http://localhost:8080/chapter11/controllerTest にアクセスすると、表示されるページの効果は図のとおりです。ブラウザ上にモデルオブジェクト内の文字列情報が表示されており、最初のSpring MVCプログラムが正常に実行されたことがわかります。

ここに画像の説明を挿入

導入事​​例の学習を通じて、Spring MVC プログラムの実行プロセスを要約できます。

(1) ユーザーがブラウザを通じてサーバーにリクエストを送信すると、リクエストは Spring MVC のフロントエンド コントローラー DispatcherServlet によってインターセプトされます。

(2) DispatcherServlet はリクエストをインターセプトした後、HandlerMapping プロセッサ マッパーを呼び出します。

(3) プロセッサ マッパーは、リクエスト URL に従って特定のプロセッサを見つけ、プロセッサ オブジェクトとプロセッサ インターセプタ (存在する場合) を生成し、それを DispatcherServlet に返します。

(4) DispatcherServlet は、情報を返して適切な HandlerAdapter (プロセッサ アダプタ) を選択します。

(5) HandlerAdapter は、Handler (プロセッサ) を呼び出して実行します。プロセッサは、プログラムに記述されたコントローラ クラスであり、バックエンド コントローラとも呼ばれます。

(6) コントローラーが実行されると、ビュー名、またはモデルとビュー名を含む ModelAndView オブジェクトが返されます。

(7) HandlerAdapter は、ModelAndView オブジェクトを DispatcherServlet に返します。

(8) DispatcherServlet は ModelAndView オブジェクトに従って適切な ViewResolver (ビュー リゾルバー) を選択します。

(9) ViewResolver が解決されると、特定の View (ビュー) が DispatcherServlet に返されます。

(10) DispatcherServlet はビューをレンダリングします (つまり、モデル データをビューに埋め込みます)。

(11) ビューのレンダリング結果は、表示のためにクライアントのブラウザに返されます。

上記の実行プロセスでは、DispatcherServlet、HandlerMapping、HandlerAdapter、および ViewResolver オブジェクトの作業がフレームワーク内で実行されます。開発者は、これらのオブジェクトの内部実装プロセスを気にする必要はなく、フロント コントローラー (DispatcherServlet) を次のように設定するだけで済みます。コントローラーの業務処理でタスクを完了し、対応する情報をビュー (View) に表示します。

おすすめ

転載: blog.csdn.net/weixin_45627039/article/details/131233755