- 浏览: 111267 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Inmethetiger:
yixiandave 写道能不能在Validation注解的m ...
Spring验证小结和问题 -
yixiandave:
Inmethetiger 写道yixiandave 写道如果用 ...
Spring验证小结和问题 -
Inmethetiger:
yixiandave 写道如果用JSR303的话,可以引入hi ...
Spring验证小结和问题 -
yixiandave:
如果用JSR303的话,可以引入hibernate-valid ...
Spring验证小结和问题 -
jackytang520:
貌似用了这么久,没有碰到过这个问题..
idea属性文件中文乱码
首发地址:http://inmethetiger.iteye.com/blog/1678785
MultiActionController身兼数值,主要处理一组逻辑上相似的web请求,比如针对一个对象的CRUD操作或者针对同一个对象或者多个对象的一组查询操作。我们可以将这些web请求交个MultiActionController来同意处理。
主要功能:
1:请求参数到Command对象的绑定。
2:通过Validatator的数据验证
3:细化的异常处理方法
实例代码:
public class MyMultiActionController extends MultiActionController{
public Map list(HttpServletRequest request,HttpServletResponse response){
return new HashMap();
}
public ModelAndView delete(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView();
}
public ModelAndView update(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView();
} ..
MultiActionController知道具体的Web请求进来之后,将由MethodNameResolver处理。即:MethodNameResolver帮助MultiActionController决定当前web请求应该交给哪个方法来处理。
1:InternalPathMethodNameResolver:
如果没有为MultiActionController明确指定任何MethodNameResolver,InternalPathMethodNameResolver将做为默认的MethodNameResolver实现。(类似于HandlerMapping中的BeanNameUrlHandlerMapping)(下面有用InternalPathMethodNameResolver与BeanNameUrlHandlerMapping组合实现的例子)
处理方法:
提取URL最后一个(/)之后的部分,并去掉扩展名,作为返回的方法名称
/xxxx/admin/admincontroller/login.do。交给login方法。
2:PropertisMethodNameResolver,和InternalPathMethodNameResolver类似,但是可以在配置文件中进行灵活配置来确定web请求到具体方法处理之间的映射。(类似于SimpleUrlHandlerMapping)(下面有用PropertisMethodNameResolver与SimpleUrlHandlerMapping组合实现的例子)。
------------------------------------------------------------------实例-----------------------------------------------------
InternalPathMethodNameResolver与BeanNameUrlHandlerMapping组合实现的例子
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class MyMutilActionController extends MultiActionController {
public ModelAndView listing(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("list");
return mv;
}
public ModelAndView delete(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("delete");
return mv;
}
public ModelAndView update(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("update");
return mv;
}
public ModelAndView insert(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("insert");
return mv;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- HandlerMapping -->
<!-- 帮助DispatchServlet进行web请求的url到具体处理类的匹配,默认为BeanNameUrlHandleMapping -->
<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/listing.do">myMutioActionController</prop>
<prop key="/delete.do">myMutioActionController</prop>
<prop key="/update.do">myMutioActionController</prop>
<prop key="/insert.do">myMutioActionController</prop>
</props>
</property>
</bean>
<!-- MethodNameResolver -->
<!-- 解决MultiActionController决定web请求交给哪个方法 -->
<!-- <bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
</bean> -->
<!-- Controller -->
<!-- 控制器,自己实现,收集参数,绑定参数到命令对象,调用业务对象,选择视图模型,返回视图,模型,数据 -->
<!-- MutiActionController需要指定方法名解析器,因为我选用的不是默认的 -->
<bean name="myMutioActionController" class="org.spring.controller.MyMutilActionController">
</bean>
<!-- ViewResover -->
<!-- DispatcherServlet根据Controller中指定的逻辑视图查找相应的视图实现 -->
<bean id="defaultViewResover"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
注意注释,在控制器中并没有指明MethodNameResolver,所以,Spring mvc自动使用InternalPathMethodNameResolver。所以,控制器中的方法名必须和映射名一致。
刚开始HandlerMapping想使用默认的,但是试了一下,可是可以,但是不实际。因为,BeanNameUrlHandlerMapping,需要控制器的name和web请求一致,这就需要将同一个
控制器,声明四次配置方法如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Controller -->
<!-- 控制器,自己实现,收集参数,绑定参数到命令对象,调用业务对象,选择视图模型,返回视图,模型,数据 -->
<!-- MutiActionController需要指定方法名解析器,因为我选用的不是默认的 -->
<bean name="/listing.do" class="org.spring.controller.MyMutilActionController">
</bean>
<bean name="/insert.do" class="org.spring.controller.MyMutilActionController">
</bean>
<bean name="/delete.do" class="org.spring.controller.MyMutilActionController">
</bean>
<bean name="/update.do" class="org.spring.controller.MyMutilActionController">
</bean>
<!-- ViewResover -->
<!-- DispatcherServlet根据Controller中指定的逻辑视图查找相应的视图实现 -->
<bean id="defaultViewResover"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
将InternalPathMethodNameResolver和BeanNameUrlHandlerMapping都已经省略。甚至可以将ViewResover都省略。只是这样的话,增删改查这四个jsp文件得放到WebContext下,而且控制器中返回的视图名称为xxx.jsp或者,jsp文件依然放在原来的位置,但是在控制器中将返回WEB-INF/view/xxx.jsp
-------------------------------------------------------------------------------------------------------------
PropertisMethodNameResolver+SimplUrlHandlerMapping+MultiActionController组合实现简单实例
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class MyMutilActionController extends MultiActionController {
public ModelAndView listObject(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("list");
return mv;
}
public ModelAndView deleteObject(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("delete");
return mv;
}
public ModelAndView updateObject(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("update");
return mv;
}
public ModelAndView insertObject(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mv = new ModelAndView();
mv.setViewName("insert");
return mv;
}
}
注意控制器中的方法,和上面的不同,因为 PropertiesMethodNameResolver更灵活,只需在配置文件中指定
dispatch-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- HandlerMapping -->
<!-- 帮助DispatchServlet进行web请求的url到具体处理类的匹配,默认为BeanNameUrlHandleMapping -->
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/listing.do">myMutioActionController</prop>
<prop key="/update.do">myMutioActionController</prop>
<prop key="/insert.do">myMutioActionController</prop>
<prop key="/delete.do">myMutioActionController</prop>
</props>
</property>
</bean>
<!-- MethodNameResolver -->
<!-- 解决MultiActionController决定web请求交给哪个方法 -->
<bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/listing.do">listObject</prop>
<prop key="/update.do">updateObject</prop>
<prop key="/insert.do">insertObject</prop>
<prop key="/delete.do">deleteObject</prop>
</props>
</property>
</bean>
<!-- Controller -->
<!-- 控制器,自己实现,收集参数,绑定参数到命令对象,调用业务对象,选择视图模型,返回视图,模型,数据 -->
<!-- MutiActionController需要指定方法名解析器,因为我选用的不是默认的 -->
<bean name="myMutioActionController" class="org.spring.controller.MyMutilActionController">
<property name="methodNameResolver" ref="propertiesMethodNameResolver"></property>
</bean>
<!-- ViewResover -->
<!-- DispatcherServlet根据Controller中指定的逻辑视图查找相应的视图实现 -->
<bean id="defaultViewResover" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean></beans>
发表评论
-
Spring验证小结和问题
2014-07-27 16:36 4985因为从云笔记中粘贴过来的,代码格式就没有了。格式稍好点的地 ... -
在spring中使用Ehcache
2014-06-18 16:07 1088前提: 使用环境:详细页面 依赖包: ... -
Spring MVC 3.0版本和3.1版本的一点小区别
2013-06-12 00:57 2773先上代码: 主要是控制器: @Controller ... -
在Maven下的springJpa多模块开发引起的问题
2013-02-21 22:33 3170最近的项目搭建中,出现了一个问题。 ... -
spring 事务二:注解springmvc+注解or声明式事务
2012-11-23 08:42 2279前面讲了两大类,四种spring事务的方式。这篇主要记录基于注 ... -
spring 事务一:非注解springmvc+注解or声明式事务
2012-11-22 15:47 2558前两天一人问我,在使用spring mvc (基于注解) 的时 ... -
在spring中使用mybatis
2012-11-14 21:59 3721今天在使用mybatis的时候,发现dao的实现竟然可以不需要 ... -
@Controller中的@RequestMapping参数
2012-11-07 09:56 3865转载自:http://blog.sina.com.cn/s/b ... -
三种连接池的配置
2012-09-28 10:00 1196用spring默认的连接池性能效率不高, 如果数据库重启 ... -
spring jdbc之query详细实例2
2012-09-27 16:45 1950首发地址: http://inmethetiger.iteye ... -
spring jdbc之query详细实例1
2012-09-27 16:15 3273首发:http://inmethetiger.iteye. ... -
spring jdbc之最简单的增删改查
2012-09-27 10:10 2127首发地址: http://inmethetiger.iteye ... -
spring的实例化方式
2012-09-26 17:48 1887首发地址: http://inmethetiger.iteye ... -
Spring Aop(一)
2012-09-26 16:06 796这是一个简单的spring aop的例子。 一:定义目 ... -
spring mvc表单标签和@ModelAttribute
2012-09-20 21:05 9178首发地址:http://inmethetiger.iteye ... -
spring相关资料的URL(持续更新)
2012-09-20 13:34 1238首发地址http://inmethetiger.iteye.c ... -
Spring mvc注解之实现MultiActionController功能
2012-09-16 16:38 1697首发地址http://inmethetiger.iteye.c ... -
spring mvc 之注解版基础
2012-09-14 17:28 971首发地址:http://inmethetiger.iteye ... -
Spring MVC的开发流程--附带实例
2012-09-12 18:05 2617首发地址: http://inmethetiger.i ...
相关推荐
Spring MVC MultiActionController---多动作控制器 博客介绍: http://blog.csdn.net/sunshine_love/article/details/8842261 更换web.xml中web-config.xml即可尝试不同方法解析器,如有问题,请博客回复。欢迎交流...
尽管如此,理解`MultiActionController`的配置和工作原理对于理解Spring MVC的历史以及如何向更现代的实践迁移仍然是有益的。 `MultiActionController`是Spring MVC中的一个抽象类,它继承自`AbstractController`。...
本资源"spring-ext-handler-mapping"着重于扩展Spring的地址映射功能,使得开发者在使用Spring MVC进行Web开发时能够更加灵活和高效。 1. **扩展Spring HandlerMapping** Spring MVC默认提供了一些内置的...
【Spring的Web MVC构架模式】是Spring框架中的核心组件之一,主要负责处理Web应用程序的模型、视图和控制器的交互。Spring MVC以其高度模块化和可配置性,为开发者提供了一种优雅的方式来构建Web应用。 1. **构架...
Spring框架的Web MVC架构模式以其灵活性、可扩展性和强大的功能特性而著称。相较于Struts和WebWork等早期框架,Spring提供了更多样的选择和更简洁的开发方式,极大地提高了开发效率和代码质量。无论是对于初学者还是...
- Spring MVC提供多种类型的控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController等,帮助开发者处理不同复杂度的控制逻辑。 - 与Struts相比,Spring MVC允许...
尽管在现代Spring MVC应用中,我们通常会推荐使用基于注解的@Controller或@RestController,但理解MultiActionController的工作原理仍然对学习Spring MVC的历史和演进有所帮助。 **1. MultiActionController介绍** ...
【Spring的Web-MVC构架模式】是Spring框架的核心组件之一,主要负责处理Web应用程序的请求和响应。本文档是对Spring Web MVC模式的外文翻译,深入解析了Spring如何在Web开发中提供灵活且可扩展的架构。 1. **Spring...
### Spring MVC 框架详解 ...同时,Spring MVC 提供了丰富的扩展性和定制能力,使得开发者能够根据项目需求灵活选择合适的实现方式。无论是新手还是有经验的开发人员,Spring MVC 都是一个值得深入研究和使用的框架。
Spring MVC的设计理念是提供一种灵活且可扩展的架构,让开发者能够更好地分离业务逻辑和表示层,从而提高代码的可重用性和可测试性。 1. **组件介绍** - **DispatcherServlet**: Spring MVC的核心组件,它作为一个...
然而,随着Spring MVC的发展,`MultiActionController`逐渐被更现代、更灵活的`@Controller`注解和基于方法的映射所取代。现在,我们通常推荐使用`@RequestMapping`来定义请求映射,它可以更精确地控制HTTP方法(GET...
本代码使用了Spring MVC框架(spring2.5架包) 演示了(Controller接口的试用方法)和 MultiActionController多动作控制器 数据库连接试用Spring JDBC 并且着重介绍了MultiActionController多动作控制器的两种方法名...
这与传统的实现 `org.springframework.web.servlet.mvc.Controller` 接口或者继承 `SimpleFormController` 或 `MultiActionController` 不同,`@Controller` 注解使得我们的类变成了一个纯粹的 POJO,无需额外的接口...
本示例将深入探讨`SimpleFormController`和`MultiActionController`这两种控制器在Spring MVC中的应用。 首先,`SimpleFormController`是Spring MVC早期版本中提供的一个抽象控制器,主要用于处理表单提交。它内置...
2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 ...
springMVC3学习(五)--MultiActionController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988091
Spring的Web MVC构架模式是其核心特性之一,它为构建基于Java的Web应用程序提供了一种强大而灵活的解决方案。本文将深入探讨Spring Web MVC框架的设计理念、特点以及与Struts和WebWork等其他框架的区别。 1. Spring...