Spring MVC 介紹

前言前端

Spring MVC 基於模型-視圖-控制器(Model-View-Controller,MVC)模式實現,它可以幫你構建像 Spring 框架那樣靈活和鬆耦合
的 Web 應用程序。

目錄java

一、Spring MVC 工做流程
二、搭建 Spring MVC

1、Spring MVC 工做流程web

    下圖展現了 Spring MVC 所經歷的流程spring

一、請求旅程的第一站是 Spring 的 DispatcherServlet。與大多數基於 Java 的 Web 框架同樣, Spring MVC 全部的請求都會
經過一個前端控制器 Servlet。前端控制器是經常使用的 Web 應用程序模式,在這裏一個單實例的 Servlet 將請求委託給應用程序的
其餘組件來執行實際的處理。 在 Spring MVC 中, DispatcherServlet就是前端控制器
二、DispatcherServlet 的任務是將請求發送給 Spring MVC 控制器(controller)。控制器是一個用於處理請求的 Spring 組件。
在典型的應用程序中可能會有多個控制器,DispatcherServlet 須要知道應該將請求發送給哪一個控制器。因此 DispatcherServlet 會
查詢一個或多個處理器映射(handle mapping)來肯定請求的下一個站點在哪裏,處理器映射會根據請求所攜帶的 URL 信息來進行決策。
三、一旦選擇了合適的控制器,DispatcherServlet 會將請求發送給選中的控制器。到了控制器,請求會卸下其負載(用戶提交的信息)
並耐心等待控制器處理這些信息。(實際上,設計良好的控制器自己及處理不多甚至不處理工做,而是將業務邏輯委託給一個或多個服務
對象進行處理。)
四、控制器在完成邏輯處理後,一般會產生一些信息,這些信息須要返回給用戶並在瀏覽器上顯式。這些信息被稱爲模型(model)。不過僅
僅給用戶返回原始的信息是不夠的——這些信息須要以用戶友好的方式進行格式化,通常會是 HTML。因此,信息須要發送給一個視圖(view),
一般會是 JSP。
   控制器所作的最後一件事就是將模型數據打包,而且標出用戶渲染輸出的視圖名。它接下來會將請求連同模型和視圖名發送
回 DispatchserServlet。
五、這樣控制器就不會與特定的視圖耦合,傳遞給 DispatcherServlet 的視圖名並不直接表示某個特定的 JSP。實際上,它甚至並
不能肯定視圖就是 JSP。相反,它僅僅傳遞了一個邏輯名稱,這個名字將會用來查找產生結果的真正視圖。 DispatcherServlet 將
會使用視圖解析器(view resolver)來將邏輯視圖名匹配爲一個特定的視圖實現,它多是也可能不是 JSP。
六、既然 Dispatcher Servlet 已經知道由哪一個視圖渲染結果,那請求的任務基本上也就完成了。它的最後一站是視圖的實現(多是JSP),
在這裏它交付模型數據。請求的任務就完成了。視圖將使用模型數據渲染輸出,這個輸出會經過響應對象傳遞給客戶端。

2、搭建 Spring MVC瀏覽器

    web.xml配置以下(其餘配置省略):mvc

<?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_2_5.xsd"
   version="2.5">
  
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:application-context.xml</param-value>  <!--設置根上下文配置文件位置-->
   </context-param>
   
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  <!--註冊 ContextLoaderListener-->
   </listener>
   
   <servlet>
      <servlet-name>appServlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   <!--註冊 DispatcherServlet-->
      <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:mvc/springmvc-servlet.xml</param-value>  <!--設置 DispatcherServlet 配置文件位置-->
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet-mapping>
      <servlet-name>appServlet</servlet-name>
      <url-pattern>/</url-pattern>        <!--將 DispatcherServlet 映射到「/」-->
   </servlet-mapping>

</web-app>
相關文章
相關標籤/搜索