SpringMVC從入門到精通之第二章
這一章原本我是想寫一個入門程序的,但是後來仔細想了一下,先從下面的圖中的組件用代碼來介紹,可能更效果會更加好一點。
第一節:開發準備
介紹之前先說下我的開發調試環境:
JDK 1.7的64位 、Eclipse Kepler(J2EE) 64位的、Tomcat 7.0.42 mysql 5.1、SQLyog(這是我的標配)
springmvc 版本 3.2(這個大家可以到網上自行下載最好要有源碼)
第二節:開發與配置
springmvc org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext-servlet.xml 1 springmvc *.action
工程結構圖:
到這裡前端配置器就算配置完了,目前這個配置足夠我們學習springmvc了。
你需要知道的是:前端控制器的作用,如何配置,以及攔截什麼樣的請求。對於restful風格的請求我會在後面講到。
第三節 Handler的開發
開發之前先說一說處理器適配器。說之前就得說一說適配器模式我們就拿生活中的例子來解釋一下適配器模式,現在只有一個三相的插座,但是現在卻有一個三相插頭的洗衣機和一個二相插頭的電視機,那麼洗衣機當然沒有問題,可以插到三相插座上,但是電視機卻沒辦法插了,於是人們想出了一個適配器,這個適配器一頭插在這個三相插座上,另外一端放出一個二相插座,然後電視就插在了這個適配器的二相插座上了,最後洗衣機,電視機都可以使用了。總結起來就是一句:將一個類的介面適配成用戶所期待的。
加上之前說的,想要看清3D電影,就必須帶上3D眼鏡。
springmvc中也是這樣要求處理器實現多種介面才能被處理器適配器執行。
下面來介紹幾個處理器適配器,以及他們能夠執行的處理器。
第一個:
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter簡單的處理器適配器,此適配器能夠執行實現org.springframework.web.servlet.mvc.Controller介面的處理器,來看下源碼:
public class SimpleControllerHandlerAdapter implements HandlerAdapter { public boolean supports(Object handler) { //該類支持Controller類型的處理器 return (handler instanceof Controller); } public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return ((Controller) handler).handleRequest(request, response); } public long getLastModified(HttpServletRequest request, Object handler) { if (handler instanceof LastModified) { return ((LastModified) handler).getLastModified(request); } return -1L; }}
既然要求這個適配器支持的類型是Controller類型的,那我們就實現這個介面
代碼如下:
package hanson.springmvc.web.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;/** * * @ClassName: ItemsController1 * @Description: TODO(簡單的處理器適配器支持執行實現Controller介面的處理器) * @author: Hanson * @date: 2016年1月14日 下午11:59:06 * */public class ItemsController1 implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { return null; }}
第四節
ModelAndView對象封裝了模型數據和視圖對象,有一個組件叫視圖解析器,就是用來解析這個對象的,它可以把這個對象解析成兩部分一個為Model另一個為View然後將model渲染到View上面(簡單點就是將model裡面的數據放到頁面),最終返回給用戶。
我用靜態數據模擬一下這個實現。
@Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // 商品列表 List itemsList = new ArrayList(); Items items_2 = new Items(); items_2.setName("蘋果手機"); items_2.setPrice(6088f); items_2.setDetail("iphone6s蘋果手機!"); itemsList.add(items_2); // 創建modelAndView:填充數據、設置視圖 ModelAndView modelAndView = new ModelAndView(); // 填充數據 modelAndView.addObject("itemsList", itemsList);// 類似request.setAttribute("","") // 視圖:邏輯名稱 modelAndView.setViewName("jsp/itemsList");// request.getRequestDispatcher("url").forward(request, response); return modelAndView; }
jsp中代碼:
重點:到這裡你應該知道處理器適配器(簡單的處理器適配器、處理器適配器執行處理器,處理器應該具備那些要求才能被執行,視圖解析器、以及ModelAndView對象)
第六節
疑問?前端控制器要怎麼才能根據URL找到處理器呢?
本節知識點:處理器映射器
前端控制器會去調用處理器映射器找到處理器。
現在來介紹一下處理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping:
表示將定義的Bean名字作為請求的url,需要將編寫的controller在spring容器中進行配置, 且指定bean的name為請求的url,且必須以.action結尾(web.xml配置)。
結束語:這一章要求對上一章理解比較透徹。
有疑問的歡迎留言。
※Java程序員的職業生涯學習 建議
※你不知道的java基礎再 回顧
TAG:java學習吧 |
※Spring與SpringMVC的容器關係分析
※SpringMVC如何與Servlet3整合在一起
※SpringMVC流程架構
※SpringMVC(輕量級Web框架)
※SpringMVC接收Form表單中的數組數據
※Spring SpringMVC配置Druid數據源(資料庫連接池)
※淺談SpringMVC和MyBatis在應用方面的優勢
※Spring4+hibernate+SpringMvc整合
※搭建SpringMVC(非web.xml文件方式)
※SpringMVC,Spring,Hibernate框架自動生成器
※SpringMVC + security模塊 框架整合詳解
※SpringMVC筆記(3):數據綁定
※SpringMVC工程的web.xml以及其他配置文件
※SpringMVC國際化與文件上傳
※netty整合springMVC,實現高效的HTTP服務請求
※SpringMVC常用配置3
※SpringMVC 開發 — 使用 Swagger 搭建介面請求頁面
※探索SpringMVC4中靜態資源的訪問鏈路
※「SpringMVC」上傳並顯示圖片
※深入底層,仿SpringMVC自己寫框架