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的设定,会回到原来的登入窗体。
===========================================================================================
以上文章转自:http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html
浙公网安备 33010602011771号