国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringMVC框架概覽

IT那活兒 / 2004人閱讀
SpringMVC框架概覽

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!! 




主流的軟件設計思想——MVC


MVC(Model&View&Controller)是一種軟件設計的思想,它采用持久層模型(Model)-服務層視圖(View)-控制層控制器(controller)的方法把業務邏輯、數據與界面顯示分開。把眾多的業務邏輯聚集到一個個部件里面,MVC的理念就是把數據處理、數據展示(界面)和程序/用戶的交互三者分離開的一種編程模式。
  • Model(模型)

    又被稱為數據庫持久層,存儲項目所有的數據庫文件,獨立于視圖層和控制層。一個模型可以為多個視圖來提供數據,所以模型的代碼重復性比較低。

  • View(視圖)

    作用是呈現模型,視圖會從模型中拿到需要展現的狀態以及數據,對于相同的數據可以有多種不同的顯示形式(視圖)。

  • Controller(控制器)

    負責獲取前端頁面請求信息,進行解析并反饋給視圖層,通常情況下一個視圖具有一個控制器,控制器不會輸出也不會做出任何處理,只會接受請求并調用模型構件去處理用戶的請求,然后在確定用哪個視圖去顯示返回的數據。

 


Web程序中MVC模式的優點

 

1. 耦合性低:視圖(頁面)和業務層(數據處理)分離,一個應用的業務流程或者業務規則的改變只需要改動MVC中的模型即可,不會影響到控制器與視圖。
2. 部署快,成本低:MVC使開發和維護用戶接口的技術含量降低。使用MVC模式使開發時間得到相當大的縮減,它使開發人員集中精力于業務邏輯,前端開發人員集中精力于表現形式上。
3. 方便測試。MVC把一個應用程序按功能分為不同的層次,每個層次獨立性高,在測試時,可以根據不同層分開測試,大大增加了測試任務的邏輯性。
4. 快速定位錯誤。由于每層之間獨立性高,每層出現錯誤的原因也大不相同,可以根據錯誤報告迅速定位出哪一層出現錯誤。



Web程序中MVC模式的缺點


1. 不適合小型,中等規模的應用程序
在一個中小型的應用程序中,強制性的使用MVC進行開發,往往會花費大量時間,并且不能體現MVC的優勢,同時會使開發變得繁瑣。
2. 增加系統結構和實現的復雜性
對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。
3. 視圖與控制器間的過于緊密的連接并且降低了視圖對模型數據的訪問
視圖與控制器是相互分離,但卻是聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能 。



Spring MVC框架

 

現在MVC框架已經有很多了,Struts、Webwork,新興的MVC框架有Spring MVC、JSF等等。
Struts1.0是基于webwork的MVC框架,里面有很多類的繼承關系,耦合性太高,之后推出了struts2.0,但是這個MVC框架對于視圖的解析還是存在一些小的不妥之處,所以產生了Spring MVC。
Spring MVC簡介及特點
Spring MVC采用了松散耦合的可插拔組件結構,比其他的MVC框架更具有靈活性和擴展性,Spring MVC通過使用一套注解,使一個Java類成為前端控制器(Controller),不需要實現任何接口,同時,Spring MVC支持RESTFUL形式的URL請求,除此之外,Spring MVC在在數據綁定、視圖解析、本地化處理及靜態資源處理上都有許多不俗的表現。
Spring MVC圍繞DispatcherServlet(前端控制器)為中心展開,DispatcherServlet(前端控制器)是Spring MVC的中樞,和MVC的思想一樣,它負責從視圖獲取用戶請求并且分派給相應的處理器處理,并決定用哪個視圖去把數據呈現給給用戶。 



SpringMVC的九大組件

 

1. MultipartResolver(文件處理器),對應的初始化方法是initMultipartResolver(context),用于處理上傳請求。處理方法是將普通的request包裝成MultipartHttpServletRequest,后者可以直接調用getFile方法獲取File。
2. LocaleResolver(當前環境處理器),對應的初始化方法是initLocaleResolver(context),這就相當于配置數據庫的方言一樣,有了這個就可以對不同區域的用戶顯示不同的結果。
SpringMVC主要有兩個地方用到了Locale:一是ViewResolver視圖解析的時候;二是用到國際化資源或者主題的時候。
3. ThemeResolver(主題處理器),對應的初始化方法是initThemeResolver(context),用于解析主題。SpringMVC中一個主題對應一個properties文件,里面存放著跟當前主題相關的所有資源,如圖片、css樣式等。SpringMVC的主題也支持國際化。
4. HandlerMappings(處理器映射器),對應的初始化方法是initHandlerMappings(context),這就是根據用戶請求的資源uri來查找Handler的。在SpringMVC中會有很多請求,每個請求都需要一個Handler處理,具體接收到一個請求之后使用哪個Handler進行處理就需要處理器映射器來映射。
5. HandlerAdapters(處理器適配器),對應的初始化方法是initHandlerAdapters(context),從名字上看,它就是一個適配器。Servlet需要的處理方法的結構卻是固定的,都是以request和response為參數的方法。HandlerAdapters要做的事情是如何讓固定的Servlet處理方法調用靈活的Handler來進行處理。
6. HandlerExceptionResolvers(異常處理器),對應的初始化方法是initHandlerExceptionResolvers(context),在SpringMVC中就是HandlerExceptionResolver對異常情況進行處理。
7. RequestToViewNameTranslator(視圖名稱翻譯器),對應的初始化方法是initRequestToViewNameTranslator(context),有的Handler處理完后并沒有設置View也沒有設置ViewName,這時就需要從request獲取ViewName了,如何從request中獲取ViewName就是RequestToViewNameTranslator要做的事情了。
8. ViewResolvers(頁面渲染處理器),對應的初始化方法是initViewResolvers(context),ViewResolver用來將String類型的視圖名和Locale解析為View類型的視圖。View是用來渲染頁面的,也就是將程序返回的參數填入模板里,生成html(也可能是其它類型)文件。
9. FlashMapManager(參數傳遞管理器),對應的初始化方法是initFlashMapManager(context),用來管理FlashMap的,FlashMap主要用在redirect重定向中傳遞參數。

 


Spring MVC的執行步驟

 

  • 發起請求到前端控制器(DispatcherServlet)。

  • 前端控制器請求HandlerMapping查找 Handler,可以根據xml配置、注解進行查找。

  • 處理器映射器HandlerMapping向前端控制器返回Handler。

  • 前端控制器調用處理器適配器去執行Handler。

  • 處理器適配器去執行Handler。

  • Handler執行完成給適配器返回ModelAndView。

  • 處理器適配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一個底層對象,包括 Model和view。

  • 前端控制器請求視圖解析器去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp)。

  • 視圖解析器向前端控制器返回View。

  • 前端控制器進行視圖渲染,視圖渲染將模型數據(在ModelAndView對象中)填充到request域。

  • 前端控制器向用戶響應結果。

 


SpringMVC在IDEA中的配置

 

1. 首先,導入SpringMVC需要的jar包。
2. 添加Web.xml配置文件中關于SpringMVC的配置。
<servlet>
<servlet-name>springmvcservlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springmvc-servlet.xmlparam-value>
init-param>

servlet>

<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
3. 在resources下添加springmvc-servlet.xml配置文件。
<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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"
>


<context:component-scan base-package="test.SpringMVC"/>

<mvc:default-servlet-handler />

<mvc:annotation-driven />


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


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

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

beans>
4. 在WEB-INF文件夾下創建名為jsp的文件夾,用來存放jsp視圖。創建一個hello.jsp,在body中添加“Hello World”。
5. 建立包及Controller。
6. 編寫Controller代碼,如下所示:
@Controller
@RequestMapping("/mvc")
public class mvcController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}

 


SpringMVC的注解

 

@Controller
    負責注冊一個bean 到spring 上下文中。
@RequestMapping
    注解為控制器指定可以處理哪些 URL 請求。
@RequestBody
    該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。
@ResponseBody
    該注解用于將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。
@ModelAttribute    
    在方法定義上使用 @ModelAttribute 注解:Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標注了@ModelAttribute 的方法。
    在方法的入參前使用 @ModelAttribute 注解:可以從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數綁定到對象中,再傳入入參將方法入參對象添加到模型中。
@RequestParam 
    在處理方法入參處使用 @RequestParam 可以把請求參數傳遞給請求方法。
@PathVariable
    綁定 URL 占位符到參數。
@ExceptionHandler
    注解到方法上,出現異常時會執行該方法。
@ControllerAdvice
    使一個Contoller成為全局的異常處理類,類中用@ExceptionHandler方法注解的方法可以處理所有Controller發生的異常。

END



本文作者:朱凱方

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129476.html

相關文章

  • 貓頭鷹的深夜翻譯:為什么要使用Spring Boot?

    摘要:初次使用的人往往會困惑,不知道該使用哪種方法。目前來說,團隊推薦使用基于的方法來提供更高的靈活性。配置,從而在應用啟動時執行腳本來初始化數據庫。目前為止我們沒有任何消息需要配置,所以只在文件夾中創建一個空的文件。將配置為,它包含的上下文。 前言 spring是一個用于創建web和企業應用的一個很流行的框架。和別的只關注于一點的框架不同,Spring框架通過投資并組合項目提供了大量的功能...

    Jaden 評論0 收藏0
  • 兩年了,我寫了這些干貨!

    摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 評論0 收藏0
  • 不用 Spring Security 可否?試試這個小而美的安全框架

    摘要:寫在前面在一款應用的整個生命周期,我們都會談及該應用的數據安全問題。用戶的合法性與數據的可見性是數據安全中非常重要的一部分。 寫在前面 在一款應用的整個生命周期,我們都會談及該應用的數據安全問題。用戶的合法性與數據的可見性是數據安全中非常重要的一部分。但是,一方面,不同的應用對于數據的合法性和可見性要求的維度與粒度都有所區別;另一方面,以當前微服務、多服務的架構方式,如何共享Sessi...

    toddmark 評論0 收藏0
  • 手撕面試官系列(二):開源框架面試題Spring+SpringMVC+MyBatis

    摘要:跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什么要跳槽。切不可跟風,看到同事一個個都走了,自己也盲目的開始面試起來期間也沒有準備充分,到底是因為技術原因影響自己的發展,偏移自己規劃的軌跡,還是錢給少了,不受重視。 跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什么要跳槽。切不可跟風,看到同事一個個都走了,自己也盲目的開始面試起來(期間也沒有準備充分),到底是因為技...

    Flink_China 評論0 收藏0
  • springmvc簡介和快速搭建

    摘要:簡介和眾多其他框架一樣,它基于的設計理念,此外,它采用可松散耦合可插拔組件結構,比其他框架更具擴展性和靈活性。框架圍繞核心展開,是框架的總導演,總策劃,它負責截獲請求并將其分派給相應的處理器處理。 springmvc簡介 springmvc和眾多其他web框架一樣,它基于MVC的設計理念,此外,它采用可松散耦合可插拔組件結構,比其他MVC框架更具擴展性和靈活性。 springmvc通過...

    Sike 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<