SpringMVC(一)——流程框架總體介紹
SpringMVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程式的全功能MVC 模組,其功能和Strtus2,Struts1是類似的,只不過是實現的原理不同而已。其中Struts2是通過過濾器來實現路勁和action的對映等控制流轉功能,而Struts1和SpringMVC則是通過最傳統的servlet來實現對其程式碼封裝的。但是都是非常相似的MVC流程框架。簡單看一下SpringMVC框架中的知識點,這裡是從資料的流轉前後順序進行分的:
一,SpringMVC是一個MVC的流程框架,同樣適用在我們的表現層到
二,看一個它實現的原理圖吧:
和Struts2還是很相似的,有一個核心過濾器Dispatcher,和核心配置檔案springMVC-servlet.xml,通過過濾做一些固定的任務,到達指定的action進行相關業務的操作。看網上一篇文章吧,寫的挺詳細的:spring
MVC原理
三,初步使用:
1,由於SpringMVC是繼Spring後續開發的,它利用了Spring的jar包,這裡看一下需要匯入的jar包:
commons-logging.jar(日誌輸出)
spring-webmvc.jar(SpringMVC核心包)
spring.jar (Spring核心包)
2,編寫springMVC-servlet.xml檔案,存放到/WEB-INF/目錄下,基本編寫如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!-- VIEW DEFINITIONS ,檢視解析器,框架提供了好多解析器,這裡舉例其中的一種--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/spring/"/> <property name="suffix" value=".jsp"/> </bean> <!-- DEFINITIONS OF PUBLIC CONTROLLERS ,對映解析器--> <bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> </beans> <!-- 控制器類,name表示訪問的URI路徑,class表示對應的action類 --> <bean name="/hello.html" class="com.ljh.springmvc.controller.HelloWorldController"></bean>
3,在web.xml中增加對springMVC框架的支援,其實就是增加SpringMVC框架核心過濾器的servlet的配置:
<!-- SpringMVC的核心控制器(前端控制器) -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 指定配置檔案的全名,如果不指定,則為這裡的servlet-name的屬性SpringMVC+"-servlet.xml" -->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springMVC-servlet.xml</param-value>
</init-param>
<!-- 啟動伺服器時建立此serlvet核心物件 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
4,此種對應的action是有侵入性的,需要實現Contronller介面,當然也可以繼承實現此介面的父類,後邊介紹到:
public class HelloWorldController implements Controller {
/**
* 類似於Servlet的doGet(),doPost()方法
*/
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
//接收資料,這裡有request,response等,對於資料處理方便了很多
//呼叫服務層。
//判斷返回結果
//ModelAndView用於表示檢視:給予檢視層檔案的名稱。(根據框架的檢視解析器,增加字首,和字尾,查詢配置資源。)
//ModelAndView也可以表示模型物件,將資料傳遞給檢視層。(預設情況下是採用轉發方式進行跳轉。)
return new ModelAndView("success","username","zhangsan"); // /WEB-INF/jsp/spring/ + success + .jsp
}
}
這樣基本框架實現就算完成了,很多框架的搭建都是這些步驟,只不過需要我們注意其中的細節,配置檔案的編寫等等。
SpringMVC的總體認識就是這些,後邊會總結其中的一些知識點,這裡不再贅述!通過和Struts2對比著學習,來尋找一些異同,通過實踐來使自己理解的更加深刻。