建立一個簡單的SpringMVC架構

來源:互聯網
上載者:User

標籤:參數   model   int   4.0   pack   開始   流行   alt   pattern   

  昨天寫了一個單個Mybatis架構的小例子,今天來寫一個SpringMVC架構的小例子。來複習一下架構的一些知識。主要是理解架構的執行流程。下面就直接開始吧。

  SpringMVC架構是現在比較流行的MVC架構,類似於Struts2,它的好處有很多,最重要的大概就是它是Spring的衍生產品,屬於SpringFrameWork的後續產品,所以不需要特別的jar包,直接就可以和Spring整合,另外SpringMVC架構的設計思想是:控制器是基於方法的攔截,不是Struts2基於執行個體的攔截,所以SpringMVC對於伺服器的記憶體的消耗要小於Struts2。剩下的優點我可能不太瞭解,歡迎大家補充。

  實現SpringMVC的小例子比較簡單,和前面Mybatis的例子一樣,也需要幾個步驟。

  1.匯入jar包,因為SpringMVC是SpringFrameWork的後續產品,所以需要的jar包和Spring沒有什麼區別,下面就舉出本次小例子需要的jar包。

  2.編寫Controller類。Controller類相當於Struts2中的Action,只不過Action是執行個體攔截使用者請求的,Controller是方法攔截使用者請求的。因為SpringMVC設定檔比較少,只有一個核心設定檔,所以大部分的配置都是需要註解來完成的。代碼如下:

package com.psq.springmvctrain.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class HelloWorld {/** * hello方法 */@RequestMapping("hello")public ModelAndView hello() {System.out.println("hello world");//模型視圖,springMVC內建的ModelAndView mav = new ModelAndView();//設定的模型資料,用於傳遞到jsp頁面mav.addObject("msg", "hello springmvc...");//設定開啟的視圖名字mav.setViewName("/WEB-INF/jsp/hello.jsp");return mav;}}

   3.配置SpringMVC核心設定檔springmvc.xml。這個檔案主要是配置SpringMVC中的bean對象,還有就是配置映射器,適配器,視圖解析器(SpringMVC三大組件)。一些細節的問題代碼中都有注釋,都有詳細的介紹。代碼如下:

<?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:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">        <!-- 配置@Controller處理器,包掃描器 -->    <context:component-scan base-package="com.psq.springmvctrain.controller" />        <!-- springmvc三大組件,處理器映射器,處理器適配器,視圖解析器 -->    <!--                     映射器與適配器必需配套使用,如果映射器使用了推薦的RequestMappingHandlerMapping,                    適配器也必需使用推薦的RequestMappingHandlerAdapter。      -->    <!-- 配置處理器映射器 -->    <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> -->        <!-- 配置處理器適配器 -->    <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->        <!-- 註解驅動配置,代替映射器與適配器的單獨配置,同時支援json響應(推薦使用) -->    <mvc:annotation-driven />        <!-- 配置視圖解析器 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">            <!-- 配置視圖響應的首碼 -->        <property name="prefix" value = "/WEB-INF/jsp/" />        <!-- 配置視圖響應的尾碼 -->        <property name="suffix" value = ".jsp" />        </bean></beans>

   4.編寫jsp頁面,提供測試。這個頁面寫什麼無所謂,主要就是 測試使用,hello world即可。沒有什麼難度。要注意的就是jsp檔案夾的位置要在WEB-INF目錄下,可以防止使用者的直接存取。

  5.配置前端控制器,在web.xml中配置和SpringMVC相關的一些配置,沒有什麼要講的點,主要代碼如下:

  <!-- 配置前端控制器 -->  <servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <!-- 載入springmvc核心設定檔 -->    <init-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:springmvc.xml</param-value>    </init-param>  </servlet>  <!-- 配置攔截路徑 -->  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>*.action</url-pattern>  </servlet-mapping>

   6.測試。測試就是最後一步了,要注意在web.xml中配置了攔截的路徑,所以在訪問的時候要注意請求的地址是以.action為結束的。

  編寫的是一個小例子,甚至沒有串連資料庫,這裡也不再講和Mybatis的整合,大概在複習完Spring後,我會整合三個架構。我還是認為,最主要的學習是學習架構的思想和架構的具體流程,使用架構只是一個入門。剩下的就沒有什麼了。下面就說一說SpringMVC架構的具體流程。

  使用者請求一個地址,首先web.xml會先拿到地址,首先進行判斷,找到處理這個請求的servlet,在載入SpringMVC的核心設定檔。在核心設定檔中會載入所有的Controller類,因為springmvc.xml中聲明了包掃描器,會掃描所有的Controller類,在去對應的Controller類中找到和使用者請求相同的方法。處理請求後,在返回視圖。代碼執行的流程圖如下所示:

  

  以上就是代碼的執行流程圖,但是單看這個還是很難理解SpringMVC的執行流程,下面就在說說SpringMVC的架構。

  SpringMVC中最重要的就是三大組件。處理器映射器,處理器適配器,視圖解析器。三大組件的先後順序也是這樣,使用者請求先交給前端控制器,在調用處理器映射器,返回處理執行鏈。在調用處理器適配器,適配器決定由那個處理器處理,處理完成後返回一個模型和視圖,在交給視圖解析器決定返回的視圖。最後視圖解析器返回給前端控制器,前端控制器在響應使用者。最後完成。具體的結構圖如下:

  上面的兩個圖不是我的,如果有問題,聯絡我,我刪除。

  上面就是SpringMVC的一些具體流程,現在可以完成和理解本次的簡單的例子了,但是對於開發還是遠遠不夠,還是有很多問題,這裡也不再敘述,因為本部落格只是理解SpringMVC的思想和流程。但是還是列出具體的問題,防止自己忘記。

  首先是:在實際的開發中,Controller中會有一些參數要傳進去,如何傳參是個問題,SpringMVC支援request和response傳參,但是很麻煩,所以可以直接傳pojo類,基本類型,封裝的pojo類。具體的傳參還是要看個人的開發。

  其次是:映射器和適配器必須要配套使用,還有就是My Code本來使用映射器和適配器是過時的,所以進行了修改,具體的修改有些麻煩,不再敘述。提個醒,自己沒有忘就可以了。

  在其次就是:SpringMVC和Mybatis的整合問題,其實可以直接三個架構整合,因為SpringMVC是和Spring無縫整合的,所以後面會在寫一個部落格直接整合三個架構。

  最後就是:個人認為Spring-Boot和Maven雖然在一定程度上方便了開發,但是這些工具也在一定程度上提高了入門的門檻,工具的使用看自己的理解,菜鳥像我還是先慢慢寫,最後理解了在使用這些工具會更好。這是個人的理解,勿噴。

  結束。

 

建立一個簡單的SpringMVC架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.