您的位置:首页 > 其它

SimpleFormController类別

2007-09-11 18:41 309 查看
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的设定,会回到原来的登入窗体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: