1. 程式人生 > >Struts2 和 springMVC 的區別

Struts2 和 springMVC 的區別

Struts2: (通過過濾器來攔截所有的請求,交友struts2 dispather 處理)

  工作流程:

    1客戶端瀏覽器發出HTTP請求

    2根據web.xml配置,該請求被FilterDispatcher(過濾器排程員)接收

    3根據struts.xml配置,找到需要呼叫的Action類和方法,並通過IOC(控制反轉)方式,將值注入給Action

    4Action呼叫業務邏輯元件處理業務邏輯

    5Action執行完畢,根據struts.xml中的配置找到對應的返回結果result,並跳轉到相應的頁面

    6返回HTTP響應到客戶端瀏覽器

  struts2配置過程:

 1 <!--配置struts2過濾器-->
 3 <!--<filter>標籤配置Filter名稱,實現類以及初始化的引數。可同時配置多個初始化引數-->
 4 <filter>
 5     <filter-name>struts2Filter</filter-name>
 6     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 7 </filter>
 9 <filter-mapping>
11     <filter-name>struts2Filter</filter-name>
13 <url-pattern>/*</url-patten>
14 </filter-mapping>

     2:配置struts.xml;在src目錄下建立struts.xml檔案,這裡主要是配置Action。

 1 <package name="user" namespace="/user" extends="struts-default">
 2         <action name="list" class="action.UserAction" method="list">
 3             <result name="success">/list.jsp</result>
 4         </action>
 5         <action name="add" class="action.UserAction" method="add">
 6             <result name="success">/add.jsp</result>
 7         </action>
 8         <action name="delete" class="action.UserAction" method="delete">
 9             <result name="success">/delete.jsp</result>
10         </action>
11         <action name="update" class="action.UserAction" method="update">
12             <result name="success">/update.jsp</result>
13         </action>
14 </package>

SpringMVC:(通過servlet 命名和定製url來交由springmvc處理)

  Spring MVC主要由DispatcherServlet、處理器對映、處理器(控制器)、檢視解析器、檢視組成。

    1.DispatcherServlet:主要負責接受HTTP請求,協調springmvc各個組成部分工作。其主要功能:

      1).截獲符合特定格式的URL請求。

      2).初始化DispatcherServlet上下文對應WebApplicationContext,並將其與業務層、持久化層的WebApplicationContext建立關聯。

      3).初始化Spring MVC的各個組成元件,並裝配到DispatcherServlet中。

    2:處理器對映(HandlerMapping):能夠完成客戶請求到Controller的對映。

    3:處理器(控制器Controller):功能和struts2的action功能是一樣的,當Controllert處理完使用者請求後,則返回ModeAndView給DispatcherServlet前端控制器。

    4:檢視解析器(ViewResolver):spring提供檢視解析器在WEB應用中查詢View物件,從而將結果渲染給客戶。

  SpringMVC配置過程:

    1:配置web.xml,主要在配置中設定springmvc-context.xml的路徑

 1   <servlet>
 2         <servlet-name>appServlet</servlet-name>
 3         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 4         <init-param>
 5             <param-name>contextConfigLocation</param-name>
 6             <param-value>classpath:META-INF/spring/springmvc-context.xml</param-value>
 7         </init-param>
 8         <load-on-startup>1</load-on-startup>
 9     </servlet>
10     <servlet-mapping>
11         <servlet-name>appServlet</servlet-name>
12         <url-pattern>/</url-pattern>
13     </servlet-mapping>

    2:配置spring-context.xml檔案,這一部分主要是開啟註解功能、配置試圖解析器

 1   <!-- ①:對web包中的所有類進行掃描,以完成Bean建立和自動依賴注入的功能 -->
 2     <context:component-scan base-package="com.zs" />
 3 
 4     <!-- 這兩個類用來啟動基於Spring MVC的註解功能,將控制器與方法對映加入到容器中 -->
 5     <beans:bean
 6         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
 7     <beans:bean
 8         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
 9 
10     <!-- 這個類用於Spring MVC檢視解析 -->
11     <beans:bean id="viewResolver"
12         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
13         <beans:property name="prefix" value="/WEB-INF/pages/" />
14         <beans:property name="suffix" value=".jsp" />
15     </beans:bean>

複製程式碼

 Struts2和SpringMVC的區別:

  1:Struts2的核心是基於Filter,即StrutsPreparedAndExcuteFilter。

    SpringMVC的核心是基於Servlet,即DispatcherServlet(前端控制器)。

  2:Struts2是基於類開發的,傳遞的引數是通過類的屬性傳遞,所以只能設定為多例模式。

    SpringMVC是基於類的開法開發的,也就是一個url對應一個方法,傳遞的引數是傳到類的形參上,即可設定為單例模式也可設定為多例模式。

  3:Struts2是採用值棧儲存請求以及響應資料,OGNL存取資料。

    SpringMVC是request來解析請求,然後其內部的getParmater方法來給方法形參賦值,然後在把處理後的資料通過ModeAndView儲存,Mode儲存資料,View儲存返回的頁面,再把物件通過request傳輸到頁面去。

  4:攔截器機制不同:SpringMVC是獨立的AOP實現的,而Struts2有自己的interceptor機制。

  5:Spring MVC和Spring是無縫(無縫:無須資料格式轉換,直接訪問來自資料來源資料格式)的。從這個專案的管理和安全上也比Struts2高;