SimpleFormController类別

转载 2007年09月11日 18:41:00

Spring附有一些简单的窗体处理handler,这些handler都实现了Controller接口,您可以使用这些类别,让它自动为您收集窗体参数并填入窗体对象(form object),而无需您亲自处理这些细节。
 
   org.springframework.web.servlet.mvc.SimpleFormController是Spring提供的一个 Controller接口实现,以下实现一个窗体登入程序,以示范SimpleFormController的作用,首先我们先设计一个 form.jsp: 

<% @page contentType = " text/html;charset=Big5 " %>
< html >
< head >< title > Login </ title ></ head >
< body >
    请输入使用者名称与密码:
< p >
    
< form name = " loginform "  action = " /springapp/login.do "  method = " post " >
        名称 
< input type = " text "  name = " username " />< br >
        密码 
< input type = " password "  name = " password " />< br >
        
< input type = " 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  ModelAndView onSubmit(Object command)  throws  Exception  {
       LoginForm form 
=  (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  String username;
    
private  String password;

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


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


    
public  String getUsername()  {
       
return  username;
    }


    
public  String getPassword()  {
       
return  password;
    }

}

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

<? 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 = " urlMapping "   class = " org.springframework.web.servlet.handler.SimpleUrlHandlerMapping " >
        
< property name = " mappings " >
            
< props >< prop key = " /login.do " > loginAction </ prop ></ props >
        
</ property >
    
</ bean >

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

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

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

< html >
< head >< title > Login Success </ title ></ head >
< body >
    
< H1 >  Hello, $ {user} !!</ H2 >
    This is your secret gift.
</ body >
</ html >


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

 

Spring SimpleFormController 工作流程

概述   大多数Web应用都会遇到需要填写表单的页面,当表单提交成功后,表单的数据被传送给Web服务器中处理。处理成功后导向到一个成功页面,如果操作失败则导向到一个错误报告页面。此外,在表单数据...

Spring MVC的表单控制器——SimpleFormController

概述   大多数Web应用都会遇到需要填写表单的页面,当表单提交成功后,表单的数据被传送给Web服务器中处理。处理成功后导向到一个成功页面,如果操作失败则导向到一个错误报告页面。此外,在表单数据...
  • rj042
  • rj042
  • 2011年10月26日 15:09
  • 8139

springMVC3学习(六)--SimpleFormController

SimpleFormController提交表单流程如下:login.jsp 用户名: 密码: springMVC.xml UserModel.jav...

SimpleFormController的工作流程以及表单的验证

1.当表单控制器接收到GET请求时,它调用formBackingObject()方法,创建表单对象。该方法可以被子类覆盖,对于编辑操作的表单来说,你可以通过该方法从数据库中加载表单对象,当表单页面显示...

Spring MVC的表单控制器——SimpleFormController .

http://blog.csdn.net/rj042/article/details/6907274   年7月微软MVP申请开始啦!           CSDN十大风云博客专栏评选结果公布...

SpringMVC学习笔记--SimpleFormController

SimpleFormController继承了BaseCommandController的自动数据绑定和通过Validator的数据验证功能,不过BaseCommandController也只传授 S...
  • cwzhsi
  • cwzhsi
  • 2014年12月11日 17:49
  • 681

Spring MVC表单控制器SimpleFormController 流程解说

以注册为例:   1、当表单控制器接收到一个请求时,请求控制器会先判断请求类型,进入handleRequestInternal()【因为Controller继承SimpleFormController...

Spring MVC之SimpleFormController的简单使用

很明显,SimpleFormController是处理表单提交比较好的一种控制器。下面就一个小例子对SimpleFormController的用法做一个总结。 首先提纲挈领,我们的例子是做一个新闻提...

表单控制器SimpleFormController

 23.2.3  表单控制器SimpleFormController SimpleFormController可以自动将用户从表单获取的参数存入一个JavaBean的实例中,这样就不用逐一调用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SimpleFormController类別
举报原因:
原因补充:

(最多只允许输入30个字)