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)通過注解實現實體類和數據庫表的綁定
- 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