`
prodream
  • 浏览: 105608 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个普通表单控制器(SimpleFornController)处理视图流转的例子

阅读更多

Spring附有一些简单的窗体处理handler,这些handler都实现了Controller接口,您可以使用这些类别,让它自动为您收集窗体参数并填入窗体对象(form object),而无需您亲自处理这些细节。

  org.springframework.web.servlet.mvc.SimpleFormController是Spring提供的一个Controller接口实现,以下实现一个窗体登入程序,以示范SimpleFormController的作用,首先我们先设计一个form.jsp:

<% @pagecontentType = " text/html;charset=Big5 " %>
< html >
< head >< title > Login </ title ></ head >
< body >
请输入使用者名称与密码:
< p >
< formname = " loginform " action = " /springapp/login.do " method = " post " >
名称
< inputtype = " text " name = " username " />< br >
密码
< inputtype = " password " name = " password " />< br >
< inputtype = " submit " value = " 确定 " />
</ form >
注意:输入错误会再回到这个页面中。
</ body >
</ html >

窗体中传递两个参数username与password,注意method是post,这样待会Spring才会将我们的参数填入窗体对象中。先看看我们的LoginAction:

LoginAction.java

package onlyfun.caterpillar;

import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet. * ;

public class LoginAction extends SimpleFormController {
// 重载父类onSubmit方法
protected ModelAndViewonSubmit(Objectcommand) throws Exception {
LoginFormform
= (LoginForm)command;

if ( " caterpillar " .equals(form.getUsername()) && " 123456 " .equals(form.getPassword())) {
return new ModelAndView( this .getSuccessView(), " user " ,form.getUsername());
}
else {
return new ModelAndView( this .getFormView());
}

}

}

  LoginAction继承了SimpleFormController,并重新定义其onSumit()方法,Spring会呼叫这个方法,onSumit()接收command对象,这个对象代表了窗体对象,onSumit()有几个不同的版本,这边所使用的是最简单的版本,您可以看看API文件了解它的其它版本。

  getSuccessView()与getFormView()是SimpleFormController中定义的两个方法,分别表示通过验证与物败的目标网页,我们待会可以直接在Bean定义档中定义,先来看看窗体对象,它只是个简单的JavaBean:

LoginForm.java :

package onlyfun.caterpillar;

public class LoginForm {
private Stringusername;
private Stringpassword;

public void setUsername(Stringusername) {
this .username = username;
}


public void setPassword(Stringpassword) {
this .password = password;
}


public StringgetUsername() {
return username;
}


public StringgetPassword() {
return password;
}

}

  Spring会收集Request中相关的参数,并将之填入有对应到的属性,至于LoginAction如何得到command,这我们要在Bean定义档中撰写:

<? xmlversion = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPEbeansPUBLIC " -//SPRING/DTDBEAN/EN " " http://www.springframework.org/dtd/spring-beans.dtd " >
< beans >
< beanid = " urlMapping " class = " org.springframework.web.servlet.handler.SimpleUrlHandlerMapping " >
< propertyname = " mappings " >
< props >< propkey = " /login.do " > loginAction </ prop ></ props >
</ property >
</ bean >

< beanid = " viewResolver " class = " org.springframework.web.servlet.view.InternalResourceViewResolver " >
< propertyname = " viewClass " >
< value > org.springframework.web.servlet.view.InternalResourceView </ value >
</ property >
< propertyname = " prefix " >< value >/ WEB - INF / jsp /</ value ></ property >
< propertyname = " suffix " >< value > .jsp </ value ></ property >
</ bean >

< beanid = " loginAction " class = " onlyfun.caterpillar.LoginAction " >
< propertyname = " commandClass " >< value > onlyfun.caterpillar.LoginForm </ value ></ property >
< propertyname = " successView " >< value >/ WEB - INF / jsp / success.jsp </ value ></ property >
< propertyname = " formView " >< value >/ html / form.htm </ value ></ property >
</ bean >
</ beans >

  在loginAction中的commandClass,即使定义它所要使用的窗体对象,注意我们也定义了successView与formView,其中我们的success.jsp如下:

< html >
< head >< title > LoginSuccess </ title ></ head >
< body >
< H1 > Hello,$ {user} !!</ H2 >
Thisisyoursecretgift.
</ body >
</ html >


  登入成功的话,会进入success.jsp并显示使用者的名称,登入失败的话,依formView的设定,会回到原来的登入窗体。

分享到:
评论

相关推荐

    vc++单文档多视图例子

    通过这个例子,初学者可以学习到如何在VC++环境中构建和管理多视图的SDI应用,掌握MFC的类库使用、视图的创建与更新、事件处理以及用户界面设计等关键技能。这是一个非常实用的起点,为进一步的MFC应用开发打下坚实...

    Spring表单向导控制器(实现数据缓存)

    当在网页填写表单信息过多的时候,一般会采用向导式的分页填写表单方式处理,当用户点击下一步的时候,spring表单控制器会保存每一页的内容,如果填写到中途时想返回修改前面填写的信息时,之前的内容将会重现,而不...

    springmvc 第二个例子(接收表单参数+重定向)

    4. **视图解析**:处理完表单数据后,通常会返回一个视图名称,Spring MVC的视图解析器会根据这个名字找到对应的视图(如JSP、Thymeleaf模板等),并渲染响应。 现在,我们来看重定向。在上述示例中,控制器方法...

    Spring MVC 向导控制器完整的例子

    这是一个简单完整的Spring MVC向导控制器(AbstractWizardFormController)的例子,包含所需的类包,可以运行,也是我重新熟悉Spring 的第二例子,明天再上传Spring 的例外个例子,如有问题,我们可以互相学习下.

    swift-AMLoginSignup一个iOS登录注册视图控制器

    AMLoginSignup项目的核心组件是两个视图控制器:一个是登录视图(LoginViewController),另一个是注册视图(SignupViewController)。这两个视图控制器通常负责收集用户的登录凭据,如用户名和密码,以及在注册过程...

    swift-方便iOS开发者使用UIStackView构建表单或其它静态内容视图

    这个库提供了一个可定制的容器视图控制器,允许开发者更高效地组织和展示内容。其主要特性包括: 1. **代码驱动**:`StackViewController`支持通过代码创建和配置,这样可以在不使用任何界面构建工具(如Storyboard...

    Domino中表单、页面、视图、文档和域之间的关系说明

    也可以手工通过代码或者计算公式,改变这个域的值,以控制用不同的表单打开同一个文档。 域(Field) 域是关系型数据库的字段,它定义了字段的类型和长度等信息。文档中的域值是记录中的域值,表单中的域是表设计...

    SpringMVC之表单提交===①===普通表单

    在处理表单提交时,控制器会有一个方法,通常使用`@RequestMapping`注解来指定处理的URL和HTTP方法(如GET或POST)。 ```java @Controller @RequestMapping("/form") public class FormController { @GetMapping ...

    struts2官方例子5--表单处理

    Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建企业级的Java Web应用程序。在“struts2官方例子5--表单处理”中,我们将深入理解如何利用Struts2框架来处理Web表单数据,以及如何与Javabean Model进行...

    activiti工作流动态表单,外置表单,普通表单demo

    activiti三种表单的demo实现 运行方式: 1,修改连接的数据库 2,sql文件在resources\sql下 3,访问地址http://localhost:8080/activiti-demo/main/index

    流程设计器+表单设计器+MVC

    在"流程设计器+表单设计器+MVC"的组合中,流程设计器处理业务流程,表单设计器构建用户交互界面,而MVC架构则为整个系统提供了一个良好的组织结构。通过这种集成,企业能够快速构建出符合业务需求的应用系统,实现...

    老外写的一个MVC例子,ContactManagerMVC2,强烈推荐

    在这个例子中,视图可能包含多个页面,如显示所有联系人的列表、单个联系人的详情页以及添加或编辑联系人的表单。视图从模型获取数据,并将其呈现给用户,同时接收用户的输入,但不直接处理这些输入。 控制器...

    sap ui5表单例子

    以下是一个简单的XML视图代码片段,展示了如何创建一个包含两个输入字段的表单: ```xml controllerName="myApp.controller.FormExample" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:f="sap.ui.layout....

    lotus domino jqgrid显示视图例子

    总的来说,"lotus domino jqgrid显示视图例子"是一个将Lotus Domino的视图数据与JqGrid的交互式表格功能相结合的应用实例。这个过程涉及到前后端数据交互、JSON格式化、JqGrid的配置和操作,以及Lotus Domino的代理...

    图形化WINFORM表单设计器

    例如,可以在设计器中双击一个按钮,自动创建一个处理Click事件的方法。 文件名“xwinformdesigner”可能是这个图形化表单设计器项目的名称,它可能包含了一系列的源代码文件、资源文件和项目配置文件。开发者可以...

    T4《数据传递和视图母版页》.doc

    另一个是将视图中的数据传递到控制器中,在控制器中读取、处理这些数据。 控制器向视图传递数据 在 ASP.NET MVC 框架中,有多种方式可以将控制器向视图传递数据。其中包括使用 ViewData 传递数据、使用 TempData ...

    symfony2建立一个完整blog的例子

    还可以使用预设的登录表单和登录处理控制器。 ### 8. 数据库操作 使用 Doctrine 的命令行工具生成数据库表,然后通过`doctrine:schema:update --force`更新数据库结构。在控制器中,使用 Doctrine 的`...

    几个基于mvc架构的小例子

    4. **JSF(JavaServer Faces)**:JSF是一个Java的Web应用程序框架,它提供了组件库和事件处理机制,用于构建视图和控制器。JSF可以与Servlet一起工作,为MVC架构提供更高级别的抽象。在这个例子中,JSF可能用于创建...

    ASP.NET MVC表单处理.doc

    3. **控制器(Controller)**:控制器接收并处理来自视图的表单提交。你可以定义一个带有`[HttpPost]`属性的方法来处理POST请求,这个方法接收之前提到的模型作为参数。在这里,你可以执行业务逻辑,如验证用户输入...

Global site tag (gtag.js) - Google Analytics