快速业务通道

Spring MVC的表单控制器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
t; /> ①表单录入页面(逻辑视图名,下同) <property name="successView" value="registerSuccess" /> ②成功页面 </bean>

Spring MVC的表单控制器(2)

时间:2011-03-14 陈雄华

通过formView属性指定表单录入页面对应的逻辑视图名,而successView属性表示成功页面的视图逻辑名。通过代码清单 2前后缀视图解析器的处理,它们将分别对应WEB-INF/jsp/register.jsp和WEB-INF/jsp/registerSuccess.jsp的JSP页面。

代码清单 2 前后缀视图解析器

… <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> ①前缀 <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> ②后缀 <value>.jsp</value> </property> </bean>

一般情况下表单录入页面需要通过Spring表单标签绑定表单对象,以便根据表单对象初始值生成表单页面,在校验失败后能够重现提交前的表单数据。让我们看看这个register.jsp用户注册页面的内容:

代码清单 3 register.jsp:用户注册页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <head> <title>宝宝淘论坛用户注册</title> </head> <body> ①Spring MVC表单标签,可以直接和/registerUser.html控制器 绑定(fromView),无需通过action指定提交的目标地址。 <form:form> 用户名:<form:input path="userName" /> <br> 密 码:<form:password path="password" /> <br> Email:<form:input path="email" /> <br> <input type="submit" value="注册" /> <input type="reset" value="重置" /> </form:form> </body> </html>

在①处,应用Spring的表单标签定义了一个能够和表单对象绑定的页面表单。和Struts不同的是作为表单标签的<form:form>元素无需设定提交地址(在Struts中必须指定表单标签的action属性),Spring MVC能够自动根据控制器的formView属性获知该表单页面的提交地址。使用过Struts Action开发表单提交功能的读者也许会知道开发Struts处理表单功能是比较麻烦,因为可能会为了开发一个表单设计多个Action:一个用户初始化表单,另一个用于提交表单。而Spring的SimpleFormController的高明之处在于,它已经将表单处理工作流程编制到控制器中,我们仅需要在子类中复写开放出方法就可以充分享受预定义工作流程的好处。我们应该如何有选择地覆盖父类方法,以便正确地影响表单工作流程呢?这回答这个问题需要对SimpleFormController的工作流程有一个详细的了解。

表单控制器完整工作流程

使用SimpleFormController时,你无需为初始化表单编写额外的控制器,当你通过GET请求访问表单控制器时,表单控制器自动将请求导向到表单录入页面。而当你通过POST请求访问表单控制器时,表单控制器执行表单提交的业务,根据处理成功与否,或导向到成功页面,或导向到表单录入页面(当发生异常时导向到错误页面)。

SimpleFormController的工作流程比较复杂,我们通过下面的流程图对此进行描述:

1.当表单控制器接收到GET请求时,它调用formBackingObject()方法,创建表单对象。该方法可以被子

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号