控制器是mvc模式中非常重要的部分。
Spring中org.springframework.web.portlet.mvc 包有10种controller :
Spring中org.springframework.web.servlet.mvc包有13种controller :
一 :Controller接口
Spring中最基本的是org.springframework.mvc.Controller接口。





这个接口非常的简单,只有一个可以返回适当Model和View的请求处理方法。除了这个接口Spring还提供了一些该接口的实现,包括了一些常用的功能方法。
二 :抽象类 AbstractController









AbstractController 提供了一个构建Controller的基础。AbstractController继承了WebContentGenerator并实现了 Controller接口。这样,在AbstractController中就具备了以下的功能。
如果你使用AbstractController来做为一个基类的话(不推荐),你需要override一下handleRequestInternal方法,填充你的代码,返回一个ModelAndView对象。例如:








return mav;





三 :类 ParameterizableViewController



ParameterizableViewController,根据指定的View名称,返回View。





四 :类 UrlFilenameViewController



UrlFilenameViewController,从请求URL中得到FileName。





































五 :类 MultiActionController
这个Controller在一个独立的包中,org.springframework.web.mvc.multiaction。






你可以把多个动作集中到这个Controller中。当你需要大量公用的功能在一个Controller中时,这个Controller是很好的选择。你可以子类化MultiActionController,也可以使用MethodNameResolver。
MethodNameResolver :
当接受请求的时候MultiActionController需要调用一个处理该请求的方法,你可以自己定义个解决方法,通过配置文件中指定的参数名称找到这个方法,方法定义必需使用以下格式:

此外你也可以自己定义一个异常类来处理异常,格式为:

Spring提供了MethodNameResolver的三种方式:
1 : ParameterMethodNameResolver,这个可以根据请求的参数来确定一个需要调用的方法。
例如,http://www.sf.net/index.view?testParam=testIt,这个请求会调用名称为testIt的处理方法。
2 : InternalPathMethodNameResolver,这个可以根据请求的路径名称来调用相应的方法。
例如,http://www.sf.net/testing.view,这个请求会调用testing方法。
3 : PropertiesMethodNameResolver,这个可以根据一个URLs 映射列表来调用相应的方法。
例如,如果定义了/index/welcome.html=doIt,那么当请求为/index/welcome.html时,会调用doIt方法。在定义URLs时可以使用通配符。/**/welcom?.html
例1 :










SampleDelegate.java 代码











例3 :














六 :抽象类 BaseCommandController



这个控制器简化了struts中的操作,可以直接和数据对象进行交互。例如把HttpServletRequest得到的参数动态绑定到dataobject上。
AbstractCommandController,通过这个可以创建你自己的Command Comtroller。它继承了BaseCommandController,可以设置commandObject来保存数据,可以指定验证类。
转自:http://www.blogjava.net/liuwentao253/archive/2007/02/02/97544.html