`
envy2002
  • 浏览: 153892 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring SimpleFormController流程

 
阅读更多

最近在学习spring mvc.

网上了收集了一下SimpleFormController的流程,大都是这样说的:

url请求来到时,这样处理: get 方法
    a) 请求传递给一个controller对象 
    b) 调用formBackingObject()方法,创建一个command对象的实例。 
    c) 调用initBinder(),注册需要的类型转换器 
    d) 调用showForm()方法,返回准备呈现给用户的视图 
    e) 调用referenceData()方法,准备给用户显示相关的数据。如用户登录需要选择的年度信息 
    f) 返回formView指定的视图 
表单请求来到时,这样处理: post 方法
    a) 调用formBackingObject()方法,创建一个command对象的实例。 
    b) 将请求传来的参数写入command对象 
    c) 如果设置为要求验证,则调用validator类进行数据验证 
    d) 调用onBindAndValidate()方法,该方法允许自定义数据绑定和校验处理 
    e) 调用onSubmit()方法,进行业务逻辑处理 

 

但是感觉 get 方法时,说的有误

看一下AbstractFormController的源码感觉不对,源码是这样的:

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		// Form submission or new form to show?
		if (isFormSubmission(request)) {
			// Fetch form object from HTTP session, bind, validate, process submission.
			try {
				Object command = getCommand(request);
				ServletRequestDataBinder binder = bindAndValidate(request, command);
				BindException errors = new BindException(binder.getBindingResult());
				return processFormSubmission(request, response, command, errors);
			}
			catch (HttpSessionRequiredException ex) {
				// Cannot submit a session form if no form object is in the session.
				if (logger.isDebugEnabled()) {
					logger.debug("Invalid submit detected: " + ex.getMessage());
				}
				return handleInvalidSubmit(request, response);
			}
		}

		else {
			// New form to show: render form view.
			return showNewForm(request, response);
		}
	}

 

	protected boolean isFormSubmission(HttpServletRequest request) {
		return "POST".equals(request.getMethod());
	}

 可以看到,当 方法为 get的时候,

    b) 调用formBackingObject()方法,创建一个command对象的实例。 
    c) 调用initBinder(),注册需要的类型转换器 

这两步是没有执行的。

分享到:
评论

相关推荐

    Spring MVC控制器之SimpleFormController使用

    虽然`SimpleFormController`在现代Spring MVC应用中不再推荐使用,但其设计理念对理解Spring MVC的流程和控制器角色很有帮助。现在,我们更倾向于使用`@Controller`注解的类,结合`@RequestMapping`来处理请求,以及...

    一个最简单的SimpleFormController使用

    8. **与现代Spring MVC的区别**:虽然`SimpleFormController`简化了许多处理流程,但在Spring 3.0之后,推荐使用基于注解的控制器(`@Controller`),配合`@RequestMapping`、`@ModelAttribute`等注解实现更灵活、更...

    Spring-WebFlow入门中文文档

    Spring MVC 提供了一些控制器,如 SimpleFormController 和 AbstractWizardController,但它们仍然没有完全解决页面流程的管理问题。 Spring Web Flow 提供了一种统一的方法来定义和实现页面流程,使得流程逻辑独立...

    SPRING WEB-FLOW入门教程

    Spring MVC虽然提供了表单控制器(如SimpleFormController和AbstractWizardController),但它们仍然局限在单个请求级别的控制。相比之下,Spring Web Flow提供了一种更高级别的解决方案,它允许开发者以声明式的...

    开源框架 Spring Gossip

    Spring 的 DAO 支持 DataSource 注入 DataSource 置换 JDBC 支援 Spring 在 JDBC 的使用上提供了几个类别,让您可以简化 JDBC 在使用时的流程。 使用 JdbcTemplate JdbcTemplate 执行与...

    使用 Spring 2.5 基于注解驱动的 Spring MVC.doc

    在 Spring 2.5 版本中,Spring MVC 带来了革命性的变化,引入了注解驱动的功能,极大地简化了开发流程,提高了开发效率。本文将深入探讨这些注解的使用,帮助开发者理解如何利用注解配置替代传统的基于 XML 的 ...

    外文翻译Spring地web MVC 构架模式.pdf

    控制器可以是简单接口的实现,如`ModelAndView handleRequest(request, response)`,也可以是更复杂的控制器类,如AbstractController、SimpleFormController等。Spring的数据绑定机制非常灵活,可以处理校验错误,...

    外文翻译-Spring的web MVC 构架模式.pdf

    Spring提供了多种控制器基类,如`AbstractController`、`AbstractCommandController`、`MultiActionController`、`SimpleFormController`和`AbstractWizardFormController`,以适应不同层次的控制需求。与Struts不同...

    外文翻译-Spring的web-MVC-构架模式讲解学习.pdf

    - **Controllers**:控制器是业务逻辑与视图之间的桥梁,可以是AbstractController、AbstractCommandController、SimpleFormController等基类的实例,它们处理请求并返回ModelAndView对象,定义了业务逻辑和视图...

    Spring培训资料

    通过简单的“Hello World”示例,让开发者快速了解PAFA的基本用法和流程。 #### 三、PAFA应用的整体结构 **3.1 开发目录布局** PAFA应用通常包含以下目录结构: - `src/main/java`:存放Java源代码。 - `src/main...

    Spring-Validator-开源

    Spring-Validator为`SimpleFormController`提供了通用验证器,使得开发者无需从头编写验证逻辑,可以直接应用预定义的验证规则或自定义验证规则,确保输入数据的有效性。 Spring-Validator的工作原理如下: 1. **...

    springmvc非注解controller控制器

    在Spring MVC早期版本中,Controller通常通过实现Spring的`Controller`接口或者继承`SimpleFormController`、`AbstractCommandController`等基类来创建。然而,随着框架的发展,注解驱动的编程方式逐渐成为主流,如`...

    在一个form表单里同时上传多个文件和文本信息的解决方案

    import org.springframework.web.servlet.mvc.SimpleFormController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class...

    java学习文档

    - **改进目的**:优化异常处理流程,提供统一的异常处理机制。 - **单元测试支持** - **改进目的**:增强对单元测试的支持,提高测试效率。 - **EL表达式支持** - **改进目的**:支持EL表达式的使用,提高页面...

Global site tag (gtag.js) - Google Analytics