- 浏览: 933115 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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
以注册过程为例,我们可能会选择继承AbstractController来实现表单的显示,
继承AbstractCommandController来实现表单的处理 ,这样是可行的,但必须要维护两个控制器。在这种情况下,我们应该使用SimpleFormController,他接受GET请求时显示表单,接受POST请求时处理表单;如果发生错误,控制器会知道重新显示这个表单,这样用户就可以修改错误,重新提交。
创建表单控制器
在web应用程序中,经常要处理表单。表单控制器既要为用户显示表单,又要处理表单提交。表单处理可能是件非常复杂且充满变数的任务。如果从头开始构建表单控制器,会牵涉到太多的表单处理细节。
Spring MVC提供的SimpleFormController类定义了基本的表单处理流程。它支持命令对象的概念,并且可以将表单域的值绑定到命令对象的同名属性上。通过扩展SimpleFormController类,控制器就可以继承处理表单的能力。
当HTTP GET请求SimpleFormController显示表单时, 它会将表单视图呈现给用户。当HTTP POST请求提交该表单时,SimpleFormController就会将表单域的值绑定到命令对象上,并调用onSubmit()方法,以这种方式来处理表单提交。如果表单处理成功,会呈现success视图。否则,呈现带错误信息的表单视图。
为了适应不同的表单需求,SimpleFormController允许你覆盖其中的生命周期方法,以此定制表单处理流程。
创建表单控制器
通过扩展SimpleFormController类,可以为这个控制器指定命令类(在本例中是User),然后表单域的值将被绑定到命令对象的同名属性中。你还可以指定视图要访问的命令对象的名称(在本例中是user),但这是可选的,默认名称为command。
package com.wy.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.wy.pojo.User;
/**
* 封装表单参数的后端控制类
*
* 如果只需在命令对象上执行一个动作,并在这个动作完成时返回成功视图,
* 可以覆盖doSubmitAction()方法,它的返回类型为void,默认呈现成功视图。
*
* @author Administrator
* @version 2011-10-5
*/
public class RegistrationController extends SimpleFormController{
/**
* @param registrationController
*/
@SuppressWarnings("deprecation")
public RegistrationController(){
setCommandClass(User.class); //为控制器类指定命名类
setCommandName("user"); //指定视图要访问的命名类对象的名称
}
protected Object formBackingObject(HttpServletRequest request) throws Exception{
System.out.println("formBackingObject方法执行-->01");
return super.formBackingObject(request);
}
/**
* 由于表单域的值都是作为字符串提交的,为了将这些绑定到命令对象上,表单控制器可能需要进行类型转换。
* 类型转换实际是由注册在这个控制器中的属性编辑器来执行的。
* Spring预先注册了几个属性编辑器,用来转换大家熟知的数据类型,如数字类型和布尔类型。
* 你必须为其他的数据类型注册定制的编辑器,,如java.util.Date。
* 定制的属性编辑器都被注册到initBinder()方法的ServletRequestDataBinder参数中。
* 在绑定表单域值时如果发生任何错误,SimpleFormController会自动呈现带有错误信息的表单视图。
*/
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
System.out.println("initBinder方法执行-->02");
}
protected void onBind(HttpServletRequest request, Object command) throws Exception{
System.out.println("onBind方法执行-->03");
}
protected void onBindAndValidate(HttpServletRequest request, Object command, BindException errors) throws Exception
{
System.out.println("onBindAndValidate方法执行-->04");
}
@Override
protected void doSubmitAction(Object command) throws Exception{
User user = (User)command;
System.out.println("doSubmitAction方法执行-->05");
//拿到封装的表单对象,可以和数据库操作
System.out.println("======SimpleFormController");
//默认呈现成功视图
}
}
由于表单域的值都是作为字符串提交的,为了将这些绑定到命令对象上,表单控制器可能需要进行类型转换。类型转换实际是由注册在这个控制器中的属性编辑器来执行的。Spring预先注册了几个属性编辑器,用来转换大家熟知的数据类型,如数字类型和布尔类型。你必须为其他的数据类型注册定制的编辑器,如java.util.Date。定制的属性编辑器都被注册到initBinder()方法的ServletRequestDataBinder参数中。
在绑定表单域值时如果发生任何错误,SimpleFormController会自动呈现带有错误信息的表单视图。如果一切顺利,则会
调用onSubmit()方法来处理表单提交。在 onSubmit()方法中,可以通过参数获取绑定了表单域值的命令对象。对于这个控制器而言,它是个User对象,因为你将命令类设置为 User。
onSubmit()方法的三个变体可供覆盖。为了访问符合你需要的方法参数,应该覆盖它们中最简单的那个。
protected ModelAndView onSubmit(Object command)throws Exception;
protected ModelAndView onSubmit(Object command,BindException errors)
throws Exception;
protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,
Object command,BindException errors)throws Exception;
在覆盖onSubmit()方法时,必须返回ModelAndView对象。如果只需在命令对象上执行一个动作,并在这个动作完成时返回成功视图,可以覆盖doSubmitAction()方法,它的返回类型为void,默认呈现成功视图。
在声明这个控制器时,为了进行预订,还需要一个指向服务层中的reservationService Bean的引用。此外,还必须为这个表单控制器设置表单视图和成功视图,分别是formView和successView属性。
<?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="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/register.do">registrationController</prop> </props> </property> </bean> <!-- 映射处理器 --> <bean id="registrationController" class="com.wy.controller.RegistrationController"> <property name="formView" value="login" /> <property name="successView" value="list" /> </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>
发表评论
-
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 1280一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2233使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55172基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8240Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31563一、准备校验时使用的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 8279基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
SpringMVC 生成JSON(一)
2011-12-04 19:37 3314本示例基于前面几篇文章的代码。 一、JSON-lib框 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6543一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1635上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2530在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1907一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5394一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1673<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之MultiActionController(一)
2011-10-07 21:07 2047创建处理多个请求的控制器 根据"每个请求一个 ...
相关推荐
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 概述** -...
1. **SpringMVC示例项目**:可能包含一个使用SpringMVC构建的实际应用,展示了如何配置SpringMVC、如何创建控制器、如何处理视图以及如何与数据库交互。 2. **JAX-RS示例**:可能提供了一个或多个使用JAX-RS创建的...
- 在`springmvc-servlet.xml`中配置处理器映射器、处理器适配器、视图解析器等相关组件。 通过这个简单的学习笔记,你可以理解Spring MVC的基本架构和工作流程,为进一步深入学习和实践打下基础。在实际开发中,你...
自己做的Spring+Mybatis+SpringMVC笔记------------------------------------------------------------------------------------------------------------------------ QQ:1017834057
springmvc-springioc-lib.rar springmvc-springioc-lib.rar
springmvc学习笔记
3. **SpringMVC**:作为Spring的一部分,SpringMVC是用于构建Web应用程序的模型-视图-控制器(MVC)框架。学习如何配置DispatcherServlet、Controller、ModelAndView、视图解析器等是SpringMVC的重点。 4. **...
个人学习spring框架时记录的笔记,纯手敲,SpringIOC+SpringMVC学习笔记,有兴趣的可以参考
这个资源包“SpringMVC精品资源--宜立方商城”提供了一个完整的电商项目案例,涵盖了从后端服务到前端展示的全方位开发内容,对于学习和理解SpringMVC的实际应用具有极高的价值。 首先,让我们深入了解SpringMVC的...
在SpringMVC中,前端控制器(DispatcherServlet)是整个流程的核心,负责调度请求到各个处理器(Controller)。 标题中的"LeeCX 开源后台管理系统"是一个基于SpringMVC的项目,其设计目标是提供一个完整的管理解决...
Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring MVC使得开发者能够轻松地处理HTTP请求,提供松耦合的组件,以及方便的依赖注入,从而提高代码的可测试性和可...
SpringMVC是一款轻量级且面向RESTful的Web框架,它是Spring框架的重要组成部分,主要用于构建后端服务。这个压缩包“SpringMVC精品资源--A lightweight and rest-oriented web framework”很可能包含了关于SpringMVC...
这种组合通常用于构建高效、可扩展的后端服务,因为SpringMVC提供了强大的路由和控制器功能,Spring处理服务层的事务管理和bean管理,而Mybatis则专注于数据访问,避免了传统ORM框架的一些复杂性。 【标签】为空,...