複製鏈接
請複製以下鏈接發送給好友

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 MVC框架

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

spring MVC優點

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

spring MVC單元測試

關於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 類
@Controller
BeanController controller;
3、編寫測試數據
測試數據的文件名一定要與測試類的文件名相同,比如測試數據BeanControllerTest.xml ,測試類 BeanControllerTest。
4、注入測試數據
@Test
@DataSet
public void testBean(){}

spring MVC常用註解

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") –聲明URL
public 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";
}
}