您的位置:首页 > 其它

表单控制器SimpleFormController

2014-09-18 11:19 423 查看
SimpleFormController可以自动将用户从表单获取的参数存入一个JavaBean的实例中,这样就不用逐一调用request.getAttribute()方法去获取,下面通过一个例子来讲解。

【示例23-6】该示例按照编程步骤创建表单控制器。首先,创建用于用户提交表单的页面simplelogin.jsp,代码如下:

<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>登录</title></head>
<body>
请输入登录信息:<form action="simplelogin.do" method="post">
<br>用户名:<input type=text name=userName>
<br>密码:<input type=password name=password>
<br><input type=submit name=submit>
</form>
</body>
</html>

可以看出该页面把请求提交给simplelogin.do去处理。下面看LoginBean.java的代码,如下所示。

package com.examp.ch23;
public class LoginBean {
private String userName;            //该属性用于获取表单中的userName参数
private String password;            //用于获取表单中的password参数
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getPassword(){
return this.password;
}
public void setPassword(String password){
this.password = password;
}
}

可以看出,该文件有两个属性userName和password,并且每个属性都有getter和setter方法。使用SimpleFormController、Spring MVC框架可以自动将表单的参数与该类的属性进行名字匹配,然后把参数值赋给属性。这样在控制器中就可以调用LoginBean的实例去获取表单参数。下面是SimpleLoginController.java,它实现了SimpleFormController接口,代码如下:

package com.examp.ch23;
import Java.util.HashMap;
import Java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class LoginController extends SimpleFormController{
//继承SimpleFormController类
private Logger logger = Logger.getLogger(this.getClass().getName());
private String viewPage;
protected ModelAndView onSubmit(Object command)
//在onSummit()方法中处理用户请求
throws Exception {
LoginBean loginbean = (LoginBean)command;
Map model = new HashMap();
model.put("userName", loginbean.getUserName());
//将loginbean中的userName存入model
ModelAndView mv = new ModelAndView(getViewPage(),model);
return mv;
}
public void setViewPage(String viewPage){   //
调用该方法给属性viewPage赋值
this.viewPage = viewPage;
}
public String getViewPage(){        //调用该方法获取viewPage属性
return this.viewPage;
}
}

可以看出在该类的onSummit()方法中对simplelogin.jsp的请求进行处理。首先通过LoginBean的实例userbean获取表单参数,把它存入model,然后调用getViewPage获取配置文件中定义的返回页面去显示。下面看配置文件,代码如下:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.Simp-
leUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.do">helloWorldAction</prop>
<!--为simpleLoginController 创建映射-->
<prop key="simplelogin.do">simpleLoginController</prop>
</props>
</property>
</bean>

<bean id="simpleLoginController" class="com.examp.
ch23.SimpleLoginController">
<property name="viewPage">
<value>simpleWelcomeView</value>
<!--viewPage属性用于指定返回的视图-->
</property>
<!--commandClass属性用于指定存储表单参数的JavaBean类-->
<property name="commandClass">
<value>com.examp.ch23.LoginBean</value>
</property>
</bean>

可以看出,上面代码在配置文件中给LoginController建立映射simplelogin.do,并给SimpleLoginController的属性赋值。viewPage的值为simpleWelcomeView,它对应于simplewelcome.jsp。commandClass的类型为LoginBean,在SimpleLoginController中该属性通过onSummit()方法的参数传入。下面是simplewelcome.jsp的代码:

<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>登录成功</title></head>
<%
String str = (String)request.getAttribute("userName");
%>
<body>
<h1>欢迎您!<%=str%></h1>
</body>
</html>

最后在浏览器中输入http://localhost:8080/ch23/ simplelogin.jsp,返回的结果如图23-4所示。



图23-4 simplewelcome.jsp效果图
可以看出,simplewelcome.jsp获取了userName的值,然后把它显示在页面上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: