1. 程式人生 > >【使用SSM框架開發企業級應用】Spring MVC體系結構和處理請求控制器

【使用SSM框架開發企業級應用】Spring MVC體系結構和處理請求控制器

Spring MVC體系結構和處理請求控制器

MVC設計模式

檢視(View)-對應元件:JSP或者HTML檔案

控制器(Controller)-對應元件:Servlet

模型(Model) -對應元件:JavaBean

JSP Model1

JSP Model2

JSP:負責生成動態網頁

Servlet:負責流程控制

JavaBean:負責業務邏輯處理

MVC 處理過程

MVC整體處理過程:

  1. 首先檢視提供系統與使用者互動的介面,併發送使用者輸入給控制器
  2. 控制器接收使用者的請求,並決定應該呼叫哪個模型來進行處理
  3. 模型根據使用者請求進行相應的業務邏輯處理,並返回處理結果(資料)
  4. 控制器根據返回的處理結果,呼叫相應的檢視格式化模型返回的資料,並通過檢視呈現給使用者結果

MVC 優點

多檢視共享一個模型,大大提高程式碼的可重用性

MVC三個模組相互獨立,鬆耦合架構

控制器提高了應用程式的靈活性和可配置性

有利於軟體工程化管理

完美的系統架構 = 鬆耦合+高重用性+高擴充套件性

MVC 缺點

原理複雜

增加了系統結構和實現的複雜性

檢視對模型資料的低效率訪問

Spring MVC框架介紹

Spring MVC

結構最清晰是Spring框架中用於web應用開發的一個模組,是Spring提供的一個基於MVC設計模式的優秀web開發框架,它本質上相當於Servlet,在mvc設計模式中,Spring MVC

作為控制器(Controller)來建立模型與檢視的資料互動,是結構最清晰的MVC Model2實現,可稱為最典型的MVC框架

【注意】

Spring MV

框架採用鬆耦合可插拔的元件結構,具有高度可配置性,比起其他MVC框架更具擴充套件性和靈活性.此外,Spring MVC 的註解驅動和對REST風格的支援,也是它最具特色的功能,無論是在框架設計,還是擴充套件性、靈活性等方面都已經全面超越了Struts2等MVC框架,並且它本身就是Spring框架的一部分,與Spring框架整合可以說是無縫整合,效能方面具有天生的優越性,對於開發者來說,開發效率也高於其他的Web框架,在企業中的應用越來越廣泛,稱為主流的mvc框架

Spring MVC環境搭建

Spring MVC框架搭建步驟

下載jar檔案並匯入工程

spring-web-3.2.13.RELEASE.jar

spring-webmvc-3.2.13.RELEASE.jar

配置檔案

在web.xml中配置Servlet

建立Spring MVC的配置檔案

建立Controller-處理請求的控制器

BeanNameUrlHandlerMapping

建立View-JSP

部署執行

註解驅動控制器

基於註解的處理器

<context:component-scan />

  • @Controller:標註一個普通的JavaBean成為可以處理請求的控制器
  • @RequestMapping:通過請求URL進行對映

<mvc:annotation-driven />

  • 一鍵式配置,通過註解的方式進行Spring MVC開發
  • DefaultAnnotationHandlerMapping
  • AnnotationMethodHandlerAdapter

Spring MVC請求處理流程

Spring MVC體系結構

DispatcherServlet(前端控制器)

  1. Spring MVC最核心的類
  2. web.xml中配置

Handler(處理器):對應MVC中C(Controller層)

  1. 型別:Object
  2. 作用:實際處理請求
  3. 標註了@RequestMapping的所有方法都可以看作是一個Handler

ModelAndView

  1. 邏輯檢視名
  2. 模型物件

核心元件

HandlerMapping(處理器對映)

  1. BeanNameUrlHandlerMapping(預設)
  2. 將請求URL對映到同名的控制器Bean上
  3. DefaultAnnotationHandlerMapping
  4. 將請求對映到標註@RequestMapping註解的控制器和處理方法上
  5. RequestMappingHandlerMapping

HandlerAdapter(介面卡)

  1. AnnotationMethodHandlerAdapter
  2. RequestMappingHandlerAdapter

ViewResolver(檢視解析器)

  1. InternalResourceView

Spring MVC框架特點

  • 清晰地角色劃分
  • 靈活的配置功能
  • 提供了大量的控制器介面和實現類
  • 真正做到與View層的實現無關(JSP、Velocity、Xslt等)
  • 國際化支援
  • 面向介面程式設計
  • Spring提供了Web應用開發的一整套流程,不僅僅是MVC,他們之間可以很方便的結合一起

引數傳遞(View to Controller)

Controller方法中引數前加@RequestParam進行直接入參

部署執行

http://localhost:8090/SMBMS_C09_03/welcome?username=admin

http://localhost:8090/SMBMS_C09_03/welcome

@RequestMapping

  1. 標註在類定義處
  2. 標註在方法定義處
  3. 對映規則
  • 通過請求URL進行對映
  • 通過請求引數進行對映
  • 若選擇方法引數直接入參的話,方法入參名必須與請求中引數名保持一致
  • 通過請求方法進行對映
  • GET
  • POST

注意: @RequestMapping對映的請求資訊必須保證全域性唯一

@RequestParam

  1. Value:引數名
  2. Required:是否必需,預設true,表示請求中必須包含對應的引數名,若不存在將丟擲異常
  3. defaultValue:預設引數名,不推薦使用

ModelAndView

  1. 包含檢視資訊和模型資料資訊
  2. 常用方法
  • 新增模型資料
  • ModelAndView addObject(String attributeName,                                               Object attributeValue);
  • ModelAndView addAllObjects(Map<String,?> modelMap);
  • 設定檢視
  • void setView(View view);指定一個具體的檢視物件
  • void setViewName(String viewName);指定一個邏輯檢視名。

Model

  1. 資料結構:Map型別
  2. 常用方法:新增模型資料

Model.addAttribute(String attributeName,Object attributeValue);

  1. 處理方法的入參為Model型別

注意:在Model中增加模型資料,若不指定key,

則預設使用物件的型別作為key

作為Spring MVC的標準用法,推薦使用Model

檢視解析器

檢視解析器-ViewResolver

將邏輯檢視名與JSP等檢視技術進行匹配

InternalResourceViewResolver

prefix

suffix

<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

<property name="prefix" value="/WEB-INF/jsp/"/>

<property name="suffix" value=".jsp"/>

</bean>

本章總結

  • MVC設計模式在各種成熟框架中都得到了良好的運用,它將view、Controller、model三層清晰的劃分開、搭建一個鬆耦合,高重用性、高可適用性的完美架構
  • Spring MVC框架是典型的MVC框架,是一個結構最清晰的jsp Model2實現。他基於Servlet,DispatcherServlet是整個框架的核心
  • Spring MVC的處理器對映(HandlerMapping)可配置為支援註解式處理器,只配置<mvc:annotation-driven/>標籤即可
  • Spring MVC的控制器的處理方法返回的ModelAndView物件內包括資料模型和檢視資訊
  • Spring MVC通過檢視解析器來完成檢視解析工作,把控制器的處理方法返回的邏輯檢視名解析成一個真正的檢視物件

內容就到這,

我是陳恰恰.77