Spring MVC 學習筆記(整理)


SpringMVC學習

1、概述

      Spring MVC是一種基於Java實現MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行解耦,基於請求-響應模型幫助我們簡化日常web系統的開發。

     Spring MVC框架就是一種MVC框架。其前端控制器是DispatcherServlet主要用於控制流程;應用控制器為Handler Mapping-處理器映射器進行處理器管理和View Resolver-視圖解析器進行視圖的解析;頁面控制器/動作跳轉處理器為Controller接口;支持本地化解析、文件上傳等;提供了十分靈活的數據校驗、格式化和數據綁定機制;采用約定優於配置的契約式編程方式。

      Spring MVC框架圍繞DispatcherServlet這個核心展開,DispatcherServlet的作用是截獲請求並組織一系列組件共同完成請求的處理工作。

2、Spring MVC的特點

l  容易設計清爽干凈的web層。

l  與Spring框架集成(IOC容器、AOP等)。

l  提供約定優於配置的契約式編程支持。

l  更加快捷、簡單的單元測試。

l  靈活的URL到控制器的映射。

l  支持Rest風格。

l  ...........................

3、Spring MVC體系結構

      Spring MVC框架也是一個基於驅動的MVC框架,通過實現Model-View-Controller模式很好的將數據、業務、展現進行分離。Spring Web MVC的設計是圍繞前端控制器DispatcherServlet來展開的,DispatcherSerlvet負責將請求根據映射規則分發給相應控制器 (Controller),根據可配置的Handler mappings處理請求並轉到相應的視圖。Spring MVC的整體處理流程如下:

 

圖3-1 Spring MVC處理流程

 

由上圖可知,Spring MVC大致的執行流程如下:

1、首先瀏覽器發送請求給前端控制器DispatcherServlet,DispatcherSerlvet根據請求信息,基於一定的原則選擇合適的控制器進行處理並把 請求委托給它。

2、頁面控制器接收到請求之后進行功能處理,首先需要收集、綁定請求參數到一個對象(命令對象),並進行驗證,然后將該對象委托給業務對象進行處理(service層);業務對象處理之后控制器將返回一個ModelAndView(模型數據和邏輯視圖名);

 3、DispatcherServlet根據返回的邏輯視圖名,選擇合適的視圖進行渲染(界面展示、資源加載),並把模型數據傳入以便視圖渲染。

4、前端控制器將響應返回個客戶端瀏覽器。

4、Spring MVC版本的helloworld

1)准備jar包

 

2)文件結構

 

3)web.xml

在web.xml文件中配置DispatcherServlet,在web.xml文件中添加如下片段:

 

4)Spring配置文件 hello-servlet.xml

在這個文件中可以定義各種各樣的Spring MVC需要使用的Bean。

5)控制器類HelloController

 

首先通過@Controller注解標示這個類是一個控制器,接下來通過@RequestMapping注解為制定方法sayHello處理哪些請求,在這個例子中,sayHello方法僅僅處理GET類型的/hello請求。

sayHello方法接收一個org.springframework.ui.Model類型的參數model,SpringMVC會自動將請求參數封裝進model中,我們可以簡單的把model理解為一個Map。我們在方法中從model中取出參數person的值並且打印出來,接下來往 model中添加一個屬性msg,值為"Hello,World!",然后返回視圖名稱hello。

6)在Spring MVC配置文件中配置一個視圖解析器

 

添加了mvc名稱空間,接下來啟用了spring的自動掃描,並且設置了默認的注解映射支持。

這里需要重點解釋的是配置文件中的那個bean。它的類型是是Spring MVC中最常用的一種視圖解析器,當然還有很多其他的類型。

 其中prefix屬性是指視圖前綴,suffix是視圖后綴,這里配置的是.jsp,我們在控制器的方法 sayHello中返回的是hello,再結合這里的配置,對應的完整的視圖是:/WEB-INF/jsp/hello.jsp。

7)hello.jsp

 

 

8)演示

 

5、SSH:Spring MVC+Spring+hibernate

1)准備jar包

此處略

2)文件結構

 

3)web.xml

 

配置字符集略

 

4)spring-bean.xml


5)spring-common.xml

 

6)后台實現

Dao、entity、manager包下的類實現略。

UserController.java代碼實現如下:

   

   

7)index.jsp

 

8)通過注解實現實體類和數據庫表的綁定

  1. User Bean

 

2、spring-common.xml


6、Spring MVC 配置詳解

 

 

以上4個方法示例,是一個Controller里含有不同的請求url,也可以采用一個url訪問,通過url參數來區分訪問不同的方法

 

 其實RequestMapping在Class上,可看做是父Request請求url,而RequestMapping在方法上的可看做是子Request請求url,父子請求url最終會拼起來與頁面請求url進行匹配,因此RequestMapping也可以這么寫:

 

      在SpringMVC中常用的注解還有@PathVariable,@RequestParam,@PathVariable標記在方法的參數上,利用它標記的參數可以利用請求路徑傳值,看下面一個例子

 

7、AJAX+JSON

a) 頁面顯示

 

b) 響應事件

 

c) 效果演示

 

d) 后台實現

 

e)         所需jar包

 

注:此筆記內容參考了網上部分文章,因距此筆記內容編寫時間較長,具體出處已忘,若原作者見此文章感覺侵權,請聯系我,我會把參考鏈接掛上。over


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM