标题：spring MVC
框架
Spring MVC属于SpringFrameWork的后续产品，已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构，可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口，Spring 框架是高度可配置的，而且包含多种视图技术，例如 JavaServer Pages（JSP）技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图，所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色，这种分离让它们更容易进行定制。
优点
Lifecycle for overriding binding, validation, etc.；易于同其它View框架（Titles等）无缝集成，采用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 类
@SpringBeanByType
BeanController controller;
3、编写测试数据
测试数据的文件名一定要与测试类的文件名相同，比如测试数据BeanControllerTest.xml ，测试类 BeanControllerTest。
4、注入测试数据
@Test
@DataSet
public void testBean(){}
常用注解
MVC已经是现代Web开发中的一个很重要的部分，下面介绍一下Spring MVC的一些使用心得。
之前的项目比较简单，多是用JSP 、Servlet + JDBC 直接搞定，在项目中尝试用 Struts(Struts MVC)+Spring+Hibernate, 严格按照分层概念驱动项目开发，因项目需求一直不断变化，功能不断扩充、增强，技术构建也几经改变到目前有个稳定的应用，体会了很多感受，这次先对 Spring MVC 层进行一些个人总结。
MVC作为WEB项目开发的核心环节，正如三个单词的分解那样，C（控制器）将V（视图、用户客户端）与M（模块，业务）分开构成了MVC ，这边不去讨论项目中是否应用MVC ，也不针对MVC的实现原理进行讲解，而是探讨实践中如何从应用SSH, 到Spring 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 
publicclass PersonControl extends BaseController { 
@Autowired –业务接口注入 
private personServices personServices; 
/** 
* 获得人员列表 
* @param request 
* @param response 
* @throws Exception 
*/ 
@RequestMapping(params = "method=geList") --即处理/person.do? method=geList方法 
publicvoid getnodeList(HttpServletRequest request, 
HttpServletResponse response) throws Exception { //处理请求 
//处理响应 
} 
} 
可以看出，在代码上加入注解可以省去我们上面说的多个配置文件的工作，达到简便的 MVC 处理请求响应。
在配上简单的配置文件声明，即可轻松处理项目的全部请求控制工作。
Spring MVC Web页面乱码问题
在使用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>*</url-pattern>
</filter-mapping>