Spring MVC向导控制器

概述

假设某一个系统在用户注册模块中需要区别一般用户和高级用户,一般用户只要提供最简单的信息,通过一个小表单就可以搞掂了。但对于需要注册为高级用户的客户来说,论坛希望他们提供详细的注册信息,除了用户名、密码、Email这些最简单的信息外,还需要提供住址、电话以及兴趣爱好之类的调查信息。通过一张大表单让注册者一次性填写所有这些信息并不是一个好主意,大部分潜在的用户当看到这样面目狰狞的“超级表单”后都会毫不犹豫的放弃注册。这时通过一个向导式的表单让用户分步填写注册信息将是明智的方案,虽然需要填写的信息量不变,但心理学的经验告诉我们,用户会在第一感觉简单的心理暗示下慢慢进入我们设下的“麦田圈套”中。

高级用户注册所需填写的信息分解到3个表单中,并以向导方式分步完成:

1) 填写用户名、密码、Email等一般的信息;

2) 填写地址、电话等联系的信息;

3) 填写用户兴趣爱好的调查信息。

在其它MVC框架中开发向导式的表单并非易事,因为你需要考虑表单前进、后退、中途退出,表单分步骤校验,数据维护等诸多的问题。幸运的是,在Spring MVC中,你不必躬身考虑这种底层工作流程的细节,AbstractWizardFormController已经编制好了向导表单的工作流程并将那些需要你确定的步骤开放出来,你只需要通过扩展现成的AbstractWizardFormController通过很少的工作,一个功能强大的向导表单就大功告成了。

我们打算通过以下页面流程完成高级用户注册的操作:

图 1 注册高级用户向导页面流程

创建注册高级用户的向导控制器

我们构建一个向导控制器,它必须继承AbstractWizardFormController类,FullUserRegisterController负责为注册高级用户提供基本的向导控制器,其代码如下所示:

代码清单 1 FullUserRegisterController:向导控制器 

package com.baobaotao.web.user;

import org.springframework.web.servlet.mvc.AbstractWizardFormController;
public class FullUserRegisterController extends AbstractWizardFormController {
private String cancelView; ① 点击取消后转向的视图(逻辑视图名)
private String successView; ② 向导最终处理成功后转向的成功页面
private BbtForum bbtForum;
public void setBbtForum(BbtForum bbtForum) {
this.bbtForum = bbtForum;
}

③ 负责处理最后表单提交的动作

protected ModelAndView processFinish(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
FullUser fullUser = (FullUser) command;
bbtForum.registerFullUser(fullUser);
③-1转向welcome.jsp页面
return new ModelAndView(getSuccessView(), "fullUser", fullUser);
}
④负责处理取消的动作
protected ModelAndView processCancel(HttpServletRequest request, HttpServletResponse
response, Object command, BindException errors) throws Exception {
return new ModelAndView(getCancelView());④-1转向main.jsp页面
}
//省略get/setter
}

时间: 2024-11-03 22:02:58

Spring MVC向导控制器的相关文章

Spring 2.5:Spring MVC中的新特性

Spring框架从创建伊始就致力于为复杂问题提供强大的.非侵入性的解决方案.Spring 2.0当中为缩减XML配置文件数量引入定制命名空间功能,从此它便深深植根于核心Spring框架(aop.context.jee.jms. lang.tx和util命名空间).Spring Portfolio项目(例如Spring Security)和非Spring项目中(例如CXF). Spring 2.5推出了一整套注解,作为基于XML的配置的替换方案.注解可用于Spring管理对象的自动发现.依赖注入.

spring MVC 获取请求体

在spring  MVC中如何获取请求体呢? 在spring MVC中如何获取请求要素呢? 通过如下方法: Java代码   /**       * Compatible with GET and POST       *        * @param request       * @return : <code>String</code>       * @throws IOException       */       public static String getRe

AngularJS —— 使用 ngResource、RESTful APIs 和 Spring MVC 框架提交数据 【已翻译100%】

本文为开发者呈现了一些概念和相关的示例代码,介绍了用ngResource($resource)服务POST方式提交数据到和服务器端SpringMVC环境下的RESTFul APIs.示例代码可以在如下页面找到:http://hello-angularjs.appspot.com/angularjs-restful-apis-post-method-code-example.相对于使用$http服务,我更喜欢这种方法的主要理由是ngResource允许你使用抽象方式(例如$resource类),你

spring MVC No Session found for current thread

项目使用springframework 3.2.3.RELEASE,hibernate 4.2.2.Final,使用spring MVC 项目名:exam3 使用数据库:MySQL 和数据库交互时报错: Xml代码   严重: Servlet.service() for servlet [spring2] in context with path [/exam3] threw exception [Request processing failed; nested exception is or

用Spring MVC来处理向导式复杂表单

引子 我们在网上经常会碰到一些向导式的表单页面,比如 第一步 >> 第二步 >> 第三步-.基本信息 >> 联系方式 >> 兴趣爱好-.它们都是按类型分到多个有序的页面要你来完成填写的.当然,你也可以把它们全部罗列在一个页面里,那样用户就会感觉茫茫然,分不清主次,可能不会很好的予以配合. 然而像 Struts.WebWork 那样的 MVC 框架未提供类似的实现,都需自己采用某种方式来实现向导,可以用层的隐现方式,或逐步把填写的部分数据放 Session 中

spring MVC 控制器获取WebApplicationContext

使用spring MVC 时,如何在控制器中获取WebApplicationContext 呢? WebApplicationContext  是干什么的? WebApplicationContext 有以下方法:getBean() ,传入bean的id就可以从上下文中获取bean的实例. 使用场景: 一般情况下,我们可以是@Resouce注解,来依赖注入,并不需要手动获取bean的实例再setter. 但是抽象出一个公共的父类Controller,里面使用了泛型T,此时dao的名称我们不知道,

Spring MVC 笔记 前端控制器模式

前端控制器模式 spring mvc也是依赖servlet,所以spring mvc的请求处理是从一个servlet开始,这个servlet就是DispatcherServlet. 前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序. 前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应

Spring MVC 详解

第一章 Web MVC简介Web MVC简介 1.1.Web开发中的请求-响应模型:   在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问http://sishuok.com 2.  Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户)

Spring MVC框架的高级配置

高级 本文将为您提供关于Spring MVC框架的配置技巧,以帮助管理基于Spring的web应用程序的多个实例.本配置管理主题常被学术界所忽略,但是,这对于现实的web开发尤为重要.本主题并不直接关联任何具体的技术,因此,我们将从最基本的概念开始对这个问题进行说明.下面,我们将根据Spring MVC框架,为基于本技术开发的项目提供一系列的解决方案. Spring配置 人们经常会在一台以上的主机上配置一种Web应用程序.例如,在生产中,一个网站可能只有一个实例.除了此实例外,开发人员可以在用于