- 浏览: 932976 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
创建处理多个请求的控制器
根据"每个请求一个控制器"的方法,给应用程序添加请求意味着必须在应用程序上下文中增加控制器。为了使配置更加简单,你想要将Spring MVC应用程序的控制器数量减到最少。Spring MVC提供的MultiActionController类允许你将多个相关的动作分组到一个控制器中。控制器可以扩展MultiActionController,并包含多个处理程序方法来处理多个动作。在多动作控制器中,可以用下面的形式,定义一个或者多个处理程序方法。
public (ModelAndView | Map | String | void) actionName(
HttpServletRequest,HttpServletResponse[,HttpSession][,CommandObject]);
处理程序方法的返回类型可以是ModelAndView(模型及视图名称,或者视图对象)、Map(只有模型)、String
(只有视图名称)或者void(方法本身直接处理HTTP响应)。
当请求通过处理程序映射被映射到多动作控制器时,它必须由该控制器内的某个特定的处理程序方法来处理。MultiActionController允许你用MethodNameResolver对象来配置方法映射。
HttpSession 必须在CommandObject之前。
扩展MultiActionController类,然后就可以在这个控制器内部声明多个处理程序方法了。
package com.wy.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import com.wy.pojo.User;
import com.wy.service.IUserService;
/**
* 在同一控制器类中处理多个请求
*
* @author Administrator
* @version 2011-10-7
*/
public class UserMultiActionController extends MultiActionController {
private IUserService userService;
public void setUserService(IUserService userService){
this.userService = userService;
}
/**
* 查询所有的人员
*
* @param request
* @param response
* @return ModelAndView
*/
public ModelAndView list(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mav = new ModelAndView("list");
List<User> userList = userService.getAlUsers();
mav.addObject("userList", userList);
request.setAttribute("userList", userList);
request.setAttribute("methodName", "list");
return mav;
}
/**
* 添加人员
*
* @param request
* @param response
* @return ModelAndView
*/
public ModelAndView add(HttpServletRequest request,
HttpServletResponse response, HttpSession httpSession, User user) {
ModelAndView mav = new ModelAndView("add");
userService.add(user);
return mav;
}
/**
* 修改人员信息
*
* @param request
* @param response
* @return ModelAndView
*/
public ModelAndView edit(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mav = new ModelAndView("edit");//redirect:edit.jsp 重定向
return mav;
}
}
对于add()处理程序方法,控制器将请求参数绑定到类型为User的命令对象中,因此声明将第四个方法参数声明为User类型。对于edit()和list()处理程序方法,则只要声明请求和响应参数就可以了。当edit()方法完成时,要将用户再次重定向到人员信息编辑页面。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 映射处理器 -->
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/list_Param.do">userMultiActionController_Param</prop>
<prop key="/*.do">userMultiActionController_Param</prop>
<prop key="/*_Proper.do">userMultiActionController_Proper</prop>
<prop key="/list.do">userMultiActionController_Internal</prop>
<prop key="/add.do">userMultiActionController_Internal</prop>
<prop key="/edit.do">userMultiActionController_Internal</prop>
</props>
</property>
</bean>
<!-- 具体调用的方法通过MethodNameResolver决定 -->
<!-- (1) InternalPathMethodNameResolver 从请求路径中获取文件名,并将其与Controller中方法名匹配 -->
<bean id="internalPathMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
</bean>
<bean id="userMultiActionController_Internal"
class="com.wy.controller.UserMultiActionController">
<property name="methodNameResolver"
ref="internalPathMethodNameResolver">
</property>
<property name="userService" ref="userService"></property>
</bean>
<!-- (2) PropertiesMethodNameResolver 使用用户自定义的属性(Properties)对象,将请求的URL映射到方法名 -->
<bean id="propertiesMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/list_Proper.do">list</prop>
<prop key="/add_Proper.do">add</prop>
<prop key="/edit_Proper.do">edit</prop>
</props>
</property>
</bean>
<bean id="userMultiActionController_Proper"
class="com.wy.controller.UserMultiActionController">
<property name="methodNameResolver"
ref="propertiesMethodNameResolver">
</property>
<property name="userService" ref="userService"></property>
</bean>
<!-- (3) ParameterMethodNameResolver 解析请求参数,并将它匹配Controller中的方法名 -->
<bean id="parameterMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="action" />
</bean>
<bean id="userMultiActionController_Param"
class="com.wy.controller.UserMultiActionController">
<property name="methodNameResolver"
ref="parameterMethodNameResolver">
</property>
<property name="userService" ref="userService"></property>
</bean>
<!-- 视图解析策略和视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
将URL映射到处理器方法
默认情况下,MultiActionController利用InternalPathMethodNameResolver按名称将URL映射到处理程序方法上。然而,如果想要给被映射的方法名称添加前缀或者后缀,就必须显式地配置这个解析器。
<bean id="userController"
class="com.apress.springrecipes.court.web.MemberController">
...
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction
.InternalPathMethodNameResolver">
<propery name="suffix" value="User"/>
</bean>
</property>
</bean>
然后,URL中扩展名前的最后部分路径将被映射到添加了User后缀的处理程序方法上。
/add.do --> addUser()
/edit.do--> editUser()
/list.do --> listUser()
你必须改变UserController中的方法名称,来测试这个解析器:
package com.apress.springrecipes.court.web;
...
public class UserController extends MultiActionController{
...
public ModelAndView addUser(HttpServletRequest request,
HttpServletResponse response,Member member)throws Exception{
...
}
public ModelAndView editUser(HttpServletRequest request,
HttpServletResponse response)throws Exception{
...
}
public ModelAndView listUser(HttpServletRequest request,
HttpServletResponse response)throws Exception{
...
}
}
此外,你也可以配置PropertiesMethodNameResolver,通过显式地指定映射定义,将URL映射到处理程序方法上。
具体配置参看上面的XML配置。
随后,根据映射定义中指定的名称,进行URL到处理程序方法的映射。
/add.do --> addUser()
/edit.do--> editUser()
/list.do --> listUser()
最后,可以配置ParameterMethodNameResolver,根据请求参数将URL映射到处理程序方法上,参数名称可以用paramName属性来定制。例如,如果将它设置为method,URL就会被映射到名称与请求参数method的值相同的处理程序方法。请注意,以下URL中的通配符可以与任何字符串相匹配。
/*.do?action=list ------ > list()
/*.do?action=add ------ > add()
/*.do?action=edit ------->edit()
发表评论
-
SpringMVC中内容协商【统一资源多种展现json xml html】
2013-09-12 15:58 3426在我们实际的开发中,往往需要SpringMVC ... -
Spring为某个属性注入值或为某个方法的返回值
2013-08-26 16:02 1490项目中用到需要初始化一些数据,Spring提供了filed的 ... -
SpringMVC 基础知识点小结
2013-08-23 15:26 2269参照:http://zachary-g ... -
使用SpringMVC Restful 开发思考
2013-03-18 14:23 1279一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2233使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55171基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8240Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31562一、准备校验时使用的JAR 说明: ... -
SringMVC 注解标记备忘录
2011-12-10 22:42 2136Spring MVC注解开发中常用标签,如下表: ... -
SpringMVC拦截器简单使用
2011-12-10 22:17 93574基于上一篇文章的基础上 一、拦截器的配置 1、 ... -
SpringMVC生成JSON(三)
2011-12-10 01:16 20641基于上一篇文章的代码基础上 一、准备工作 1、 下载依赖库 ... -
SpringMVC生成JSON(二)
2011-12-06 21:24 8278基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
SpringMVC 生成JSON(一)
2011-12-04 19:37 3312本示例基于前面几篇文章的代码。 一、JSON-lib框 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6542一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1634上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2529在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1906一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5393一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1673<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之CommandController、 FormController(三)
2011-10-07 16:09 2991另一种表单封装的参数的Controller是AbstractC ...
相关推荐
SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...
综上所述,SpringMVC精品资源--vans项目是一个基于SpringBoot的高效后端开发框架,它融合了SpringMVC的强大功能,为开发者提供了一个便捷的开发平台。通过对"ahao5"文件的深入学习,可以掌握项目结构,理解SpringMVC...
总结,SpringMVC-Activiti5.16-Shiro-EasyUI项目的整合是一个典型的Java Web应用实例,它结合了后端处理、工作流管理、权限控制和前端展示等多个方面,对于想要深入学习Java企业级开发的开发者来说,这是一个极好的...
《SpringMVC-Mybatis-Shiro-Redis:构建安全高效的Web应用》 在现代Web开发中,构建一个高效且安全的后端系统是至关重要的。本文将深入探讨一个基于SpringMVC、Mybatis、Shiro和Redis的Web应用架构,这四个组件共同...
基于SpringMVC Mybatis Shiro Redis 的权限管理系统,该系统已经部署到线上,线上访问地址:http://shiro.itboy.net,登录账号:admin 密码:sojson,,详细教程参考sojson.com/shiro
SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的模型-视图-控制器(MVC)架构。在本文中,我们将深入探讨SpringMVC的基本概念、配置和关键注解,以便更好地理解和应用这一强大的Web开发工具。 首先,...
本学习笔记将涵盖前端控制器、文件上传、异常处理以及开发过程中的心得小结。 1. **前端控制器(DispatcherServlet)** 前端控制器是SpringMVC的核心组件,负责接收所有HTTP请求,然后根据请求的类型和映射规则...
SpringMVC 作为 Spring 框架的一部分,主要用于处理 HTTP 请求,实现 MVC(模型-视图-控制器)设计模式。而 MyBatis 是一个轻量级的持久层框架,它提供了方便的 SQL 执行和结果映射功能。 1. **SpringMVC 概述** -...
- 在`springmvc-servlet.xml`中配置处理器映射器、处理器适配器、视图解析器等相关组件。 通过这个简单的学习笔记,你可以理解Spring MVC的基本架构和工作流程,为进一步深入学习和实践打下基础。在实际开发中,你...
1. **SpringMVC示例项目**:可能包含一个使用SpringMVC构建的实际应用,展示了如何配置SpringMVC、如何创建控制器、如何处理视图以及如何与数据库交互。 2. **JAX-RS示例**:可能提供了一个或多个使用JAX-RS创建的...
springMVC3学习(五)--MultiActionController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988091
自己做的Spring+Mybatis+SpringMVC笔记------------------------------------------------------------------------------------------------------------------------ QQ:1017834057
springmvc学习笔记
springmvc-springioc-lib.rar springmvc-springioc-lib.rar
个人学习spring框架时记录的笔记,纯手敲,SpringIOC+SpringMVC学习笔记,有兴趣的可以参考
SpringMVC笔记
3. **SpringMVC**:作为Spring的一部分,SpringMVC是用于构建Web应用程序的模型-视图-控制器(MVC)框架。学习如何配置DispatcherServlet、Controller、ModelAndView、视图解析器等是SpringMVC的重点。 4. **...
这个资源包“SpringMVC精品资源--宜立方商城”提供了一个完整的电商项目案例,涵盖了从后端服务到前端展示的全方位开发内容,对于学习和理解SpringMVC的实际应用具有极高的价值。 首先,让我们深入了解SpringMVC的...
在SpringMVC中,前端控制器(DispatcherServlet)是整个流程的核心,负责调度请求到各个处理器(Controller)。 标题中的"LeeCX 开源后台管理系统"是一个基于SpringMVC的项目,其设计目标是提供一个完整的管理解决...
Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring MVC使得开发者能够轻松地处理HTTP请求,提供松耦合的组件,以及方便的依赖注入,从而提高代码的可测试性和可...