spring MVC

spring MVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程式的全功能 MVC 模組。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發框架,如Struts1(現在一般不用),Struts 2(一般老項目使用)等。

基本介紹

  • 中文名:java框架
  • 外文名:Spring MVC
  • 原版:SpringFrameWork
  • 套用:分離了控制器、模型對象
  • 特點:易於同其它View框架無縫集成
  • 語言:Java
框架,優點,單元測試,常用註解,

框架

通過策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer Pages(JSP)技術、VelocityTilesiText和POI。Spring MVC 框架並不知道使用的視圖,所以不會強迫開發者只使用 JSP 技術。Spring MVC 分離了控制器、模型對象、過濾器以及處理程式對象的角色,這種分離讓它們更容易進行定製。

優點

Lifecycle for overriding binding, validation, etc,易於同其它View框架(Tiles等)無縫集成,採用IOC便於測試。
它是一個典型的教科書式的mvc構架,而不像struts等都是變種或者不是完全基於mvc系統的框架,對於初學者或者想了解mvc的人來說我覺得 spring是最好的,它的實現就是教科書!第二它和tapestry一樣是一個純正的servlet系統,這也是它和tapestry相比 struts所具有的優勢。而且框架本身有代碼,看起來容易理解。

單元測試

關於Spring MVC Controller 層的單元測試
測試準備工作:
1、搭建測試Web環境
@RunWith(UnitilsJUnit4TestClassRunner.class)@SpringApplicationContext({"classpath:*.xml","file:src/main/webapp/WEB-INF/spring-configuration/*.xml","file:src/main/webapp/WEB-INF/*.xml"})
2、注入Controller 類
@ControllerBeanControllercontroller;
3、編寫測試數據
測試數據的檔案名稱一定要與測試類的檔案名稱相同,比如測試數據BeanControllerTest.xml ,測試類 BeanControllerTest。
4、注入測試數據
@Test@DataSetpublicvoidtestBean(){}

常用註解

MVC已經是現代Web開發中的一個很重要的部分,下面介紹一下Spring MVC的一些使用心得。
之前的項目比較簡單,多是用JSP 、Servlet + JDBC 直接搞定,在項目中嘗試用 Struts(Struts MVC)+Spring+Hibernate, 嚴格按照分層概念驅動項目開發,因項目需求一直不斷變化,功能不斷擴充、增強,技術構建也幾經改變到目前有個穩定的套用,體會了很多感受,這次先對 Spring MVC 層進行一些個人總結。
MVC作為WEB項目開發的核心環節,正如三個單詞的分解那樣,C(控制器)將V(視圖、用戶客戶端)與M(javaBean:封裝數據)分開構成了MVC ,這邊不去討論項目中是否套用MVC ,也不針對MVC的實現原理進行講解,而是探討實踐中如何從套用SSH, 到Struts(Struts MVC)+Spring+Hibernate的演化過程。
先看 Struts 如何與 Spring 結合處理一次簡單的請求回響代碼,前台可以設為用 AJAX 調用:
1. 在 struts-config.xml 檔案中加入
<!--用於聲明GetPersonList。do請求委託Spring處理--><action path="/GetPersonList" scope="request"type="org.springframework.web.struts.DelegatingActionProxy"></action>
2.在 applicationContext.xml 檔案中加入
<!-- 指定GetPersonList處理的代碼,和注入實現業務的代碼 --><bean name="/GetPersonList" class="cn.base.GetPersonListAction"><property name="getPersonList" ref=" getPersonListServices"></property></bean>
3.cn.base.GetPersonListAction 實現請求回響代碼
可以看出一次請求需求如此多的步驟,在加上一個項目下來有很多這樣的請求回響,將給配置檔案管理帶來很大的麻煩。
經過對 Spring 的深入套用, Spring 本身提供的 URL 請求控制,對其天然支持可以讓我們不需要 applicationContext.xml 再次聲明一次 URL 請求 Bean ,即減少了 Struts 的聲明 URL ,達到減少些繁瑣的配置。但只是少了一些而已,同樣也會面臨著配置檔案的管理問題。
Spring 註解將給我們的工作帶來些輕鬆,利用反射機制原理出現的註解就是為了解決配置大量的配置問題。請看下處理一次簡單的請求回響代碼
@Controller --聲明控制器@RequestMapping("/person") –聲明URLpublic class PersonControl extends BaseController {@Autowired –業務接口注入private personServices personServices;/*** 獲得人員列表*@param request* @param response* @throws Exception*/@RequestMapping(params = "method=geList") --即處理/person.do? method=geList方法public void getnodeList(HttpServletRequest request,HttpServletResponse response) throws Exception { //處理請求//處理回響}}
可以看出,在代碼上加入註解可以省去我們上面說的多個配置檔案的工作,達到簡便的 MVC 處理請求回響。
再配上簡單的配置檔案聲明,即可輕鬆處理項目的全部請求控制工作。
Spring MVC亂碼問題
在使用Spring MVC 做java Web 項目時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有複雜的;如果加入了Spring框架之後就不一樣了,可以採用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解,配置方式如下:在web.xml檔案中filter的位置加上如下內容:
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>*.htm</url-pattern></filter-mapping>springmvc實現上傳檔案代碼片段<?xml version="1.0" encoding="UTF-8"?><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /></bean>@Controller@RequestMapping("/common")public class CommonController {@RequestMapping(value = "/upload")public @ResponseBody String upload(@RequestParam("file") MultipartFile file, HttpSession session) throws Exception {File localFile = new File("c:/test/a.rar");file.transferTo(localFile);return "success";}}

相關詞條

熱門詞條

聯絡我們