SpringMVC学習ノート

9661 ワード

一.SpringMVCの概要
Springmvc:struts 2と同様に、springのサブプロジェクトの1つ(springモジュールの1つ)であるweb(表現)層フレームワークです.スプリングとの統合は必要ありません(統合パッケージを提供する必要はありません).
二.SpringMVCの原理
自分でつなぎ合わせた小さな図:
4つのコンポーネントがあります.
  • フロントエンドコントローラ
  • プロセッサマッパー
  • プロセッサアダプタ
  • ビュー解析器(ViewResolver)
  • 三.クイックスタート
    1.webを構成する.xml
        <servlet>
            <servlet-name>springDispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath*:/spring-mvc.xml</param-value>
            </init-param>
            <!--          -->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springDispatcher</servlet-name>
            <!--      -->
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    2.springMVCの構成xml
    構成内容:
  • 配置スキャナ
  • プロセッサマッパ
  • の構成
  • プロセッサアダプタ
  • の構成
  • ビュー解析器
  • を構成する
    注:2~3ステップでは、注釈ドライバの構成を使用して代替できます.
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
        <!-- 1.     ,  @Controller -->
        <context:component-scan base-package="online.bendou.springmvc.controller" />
    
        <!-- 2.         <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 3.         <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->
    
        <!--       ,  2,3   -->
        <mvc:annotation-driven />
        <!-- 4.        -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--            -->
            <property name="prefix" value="/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
    
        <!--        -->
        <mvc:resource location="/js" mapping="/*" />
    </beans>

    3.コントロールの作成
    @Controller
    @RequestMapping("/user")    //     
    public class UserController{
    
        @RequestMapping("/toIndex")  //     
        //        
        public String toIndex(){
            //         springMVC         
            //   :      ${baseurl}/jsp/index.jsp
            return "index";
        }
    
        @RequestMapping("/getNames")
        public String getNames(Model model){
            List<String> names = new ArrayList<>();
            names.add("  ");
            names.add("  ");
            model.addAttribute("names", names);
            return "getNames";
        }
    
        @RequestMapping("/getAges")
        public ModelAndView getAges(){
            List<Integer> userList = new ArrayList<Integer>();
            userList.add(19);
            userList.add(25);
            //   ModelAndView  ,              
            ModelAndView modelAndView = new ModelAndView("getAges");
            modelAndView.addObject("userList",userList);
            return modelAndView;
        }
    }

    四.SpringMVCメソッドパラメータのModelとModelAndViewオブジェクトの違い
    Model:
    Modelはインタフェースであり、ModelMapはその実装クラスである.Modelを直接使用するとspringMVCはModelをインスタンス化する.メソッドは文字列(ビュー名)を返します.
    ModelとModeMapを使用する効果は同じで、いずれもページにデータを送信する.次のようになります.
    Items item = itemService.findItemById(id);
    model.addAttribute("item", item);

    ページは${item.xxx}で値を取ることができます.
    ModelAndView:
    ページにデータを送信するだけでなく、戻るビュー名を設定することもできる.メソッドはModelAndViewオブジェクトを返します.
    五.SpringMVCの戻り値
  • ModelAndViewに戻る
  • 戻りデータ
  • を設定する.
  • ビュー名を返す
  • を設定する.
  • voidを返す
  • ajax非同期要求、void
  • を返す
  • はStringを返します
  • は、ビュー名
  • を返す.
  • は、model設定によりデータ
  • を返すことができる.
  • redirectを返します
  • リダイレクトreturn "redirect:queryUser;"
  • データは共有されず、2回request
  • はforwardを返します
  • 要求転送return "forward:queryUser";
  • データ共有

  • 六.SpringMVCとStruts 2の違い
  • springMVCはservletです.struts 2はfilterです.
  • springMVCは方法に基づく開発である.struts 2クラス
  • に基づく
  • springMVCは、メソッドのパラメータにデータをバインドする.struts 2はグローバル変数にバインドする.
  • springMVCは、controllerのパラメータを受信することによって、方法が完了し、パラメータデータが破棄されるため、単一の例で開発することができる.しかしstruts 2はモデル駆動によってデータをグローバル変数にバインドするため、struts 2は多例開発でなければならない.
  • springMVCは、返さなければならないデータをmodelに格納する.strutsは値スタックvaluestackに
  • 格納される.