我们可以在MultiActionController中定义一个PropertiesMethodNameResolver类型的成员变量“propertiesMethodNameResoler”。和定义一个Properties类型的成员变量“urlMethodmappings”在MultiActionController的bean进行配置的时候把urlMethodmappings的值作为propertiesMethodNameResoler的mapping的值。然后再调用MultiActionController的setMethodNameResolver()方法,把propertiesMethodNameResoler设置为MultiActionController的methodNameResolver的属性值。要做到这一些还应该实现InitializingBean接口。
public class MultiMethodController extends MultiActionController implements InitializingBean ...{ private Properties urlMethodmappings; public void afterPropertiesSet() throws Exception ...{ if (urlMethodmappings != null && !urlMethodmappings.isEmpty()) ...{ PropertiesMethodNameResolver propertiesMethodNameResolver = new PropertiesMethodNameResolver(); propertiesMethodNameResolver.setMappings(urlMethodmappings); this.setMethodNameResolver(propertiesMethodNameResolver); if (this.logger.isInfoEnabled()) ...{ this.logger.info("binding success...... "); } } else ...{ logger.info("no 'urlMethodmappings' set on MultiMethodController"); } } /**//** * @return Returns the urlMethodmappings. */ public Properties getUrlMethodmappings() ...{ return urlMethodmappings; } /**//** * @param urlMethodmappings * The urlMethodmappings to set. */ public void setUrlMethodmappings(Properties urlMethodmappings) ...{ this.urlMethodmappings = urlMethodmappings; } }
|
在afterPropertiesSet中,
PropertiesMethodNameResolver propertiesMethodNameResolver = new PropertiesMethodNameResolver();
|
创建一个默认的PropertiesMethodNameResolver的实例
propertiesMethodNameResolver.setMappings(urlMethodmappings);
|
把urlMethodmappings作为propertiesMethodNameResolver的mapping属性值
this.setMethodNameResolver(propertiesMethodNameResolver);
|
调用父类方法,把propertiesMethodNameResolver注入MethodNameResolver属性中。
注意,在这里我命名为MultiMethodController是为了与MultiActionController区别。
通过这样的代码,简化了原本复杂的配置。
4.2通过一个commandName属性,可以让用户自由决定绑定对象的名称
MultiActionController的getCommandName如下:
public static final String DEFAULT_COMMAND_NAME = "command"; protected String getCommandName(Object command) ...{ return DEFAULT_COMMAND_NAME; }
|
MultiActionController并没有一个setCommandName的方法,所以我们需要一个setCommandName的方法,然后重写getCommandName(Object command)方法
private String commandName =DEFAULT_COMMAND_NAME; public String getCommandName() ...{ return commandName; } public void setCommandName(String commandName) ...{ this.commandName = commandName; } protected String getCommandName(Object object) ...{ return this.getCommandName(); }
|
如果没有设置commandName属性,默认值为“command”,通过setCommandName方法就可以自由的去决定comamnd对象的名称了。
分享到:
相关推荐
Spring MVC MultiActionController---多动作控制器 博客介绍: http://blog.csdn.net/sunshine_love/article/details/8842261 更换web.xml中web-config.xml即可尝试不同方法解析器,如有问题,请博客回复。欢迎交流...
3. **配置Spring MVC DispatcherServlet**: 在`web.xml`中,你需要配置`DispatcherServlet`来处理所有请求,并指向Spring MVC的配置文件,如`mvc-dispatcher-servlet.xml`。 ```xml <!-- 配置DispatcherServlet --...
springMVC3学习(五)--MultiActionController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988091
创建一个MultiActionController需要继承`org.springframework.web.servlet.mvc.MultiActionController`基类。然后,你可以定义多个处理方法,每个方法对应一个特定的请求。例如: ```java public class Test...
#### 一、Spring架构简介及特点 Spring是一个轻量级的开源Java应用框架,最初由Rod Johnson创建,并由Juergen Hoeller等人继续开发和完善。Spring框架的设计目的是简化企业级应用的开发,提供了一整套的解决方案,...
13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与...
第一个 Spring 程式 BeanFactory、 ApplicationContext Type 2 IoC、Type 3 IoC 属性参考 自动绑定 集合物件注入 Bean 的生命周期 Bean 进阶管理 理想上对于 Bean 来说,它不...
PropertyMultiActionController可能是MultiActionController的一个变种,它可能通过属性(property)来决定调用哪个处理方法,增强了灵活性。不过,随着Spring MVC的发展,这种方式已经被注解驱动的Controller所取代...
尽管在现代Spring MVC应用中,我们通常会推荐使用基于注解的@Controller或@RestController,但理解MultiActionController的工作原理仍然对学习Spring MVC的历史和演进有所帮助。 **1. MultiActionController介绍** ...
Spring 的 Web MVC 构架模式是 Spring 框架中的一种重要部分,它提供了一个基于模型-视图-控制器(MVC)架构的 Web 应用程序开发模式。这种模式使得开发者可以更容易地开发和维护大型 Web 应用程序。 1. 介绍 ...
13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...
本代码使用了Spring MVC框架(spring2.5架包) 演示了(Controller接口的试用方法)和 MultiActionController多动作控制器 数据库连接试用Spring JDBC 并且着重介绍了MultiActionController多动作控制器的两种方法名...
在3.0.6.RELEASE中,Spring Data Access层增强了对JPA2的支持,提供了更好的事务管理策略,并且支持动态SQL查询,使数据库操作更为简便。 五、消息支持 Spring 3.0.6.RELEASE提供了全面的消息传递支持,包括JMS...
为了适应复杂的应用场景,Spring提供了多种抽象控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController和AbstractWizardFormController,允许开发者按需选择。...
2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. ...
10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...
13.3.3. MultiActionController 13.3.4. 命令控制器 13.4. 处理器映射(handler mapping) 13.4.1. BeanNameUrlHandlerMapping 13.4.2. SimpleUrlHandlerMapping 13.4.3. 拦截器(HandlerInterceptor) 13.5. ...
2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. ...
10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 模型简介 10.7.2 模型封装 10.8 小结 第十一章 ...
3. **配置请求映射**:在Spring的配置文件中,你需要为每个处理方法指定一个请求映射,通常是通过`<bean>`标签的`property`属性来完成的,例如`<property name="mapping" value="/addUser.htm" />`。 4. **执行逻辑*...