java spring 使用GuideController实现信息的多步采集
使用GuideController控制器的目的
在开发中会出现,需要采集大量用户信息来作为数据分析,但是如果是一个单一的页面让用户填写十多行信息,会让用户体验很差,采用向导控制器实现将众多的信息分离就会使得用户体验好很多。
这也就是GuideController的使用目的之一。
项目结构
创建一个web项目,src下创建包Controller,以及User,分别对于控制器的和用户的功能编写。
在WEB-INF下lib包下创建配置文件applicationContext.xml用于Spring的配置。
然后需要一个主页面index.jsp,需要一个结果页面ok.jsp,还需要将原来一个页面存放的信息拆分为三个部分,onePage.jsp,twoPage.jsp,treePage.jsp。
这样项目的结构就写好了。
GuideController的编写
package Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractWizardFormController;
import User.User;
public class GuideController extends AbstractWizardFormController {
private String cancelView; //取消时跳转的页面
private String finishView; //完成后跳转的页面
public String getCancelView()
{
return cancelView;
}
public void setCancelView(String cancelView)
{
this.cancelView = cancelView;
}
public String getFinishView()
{
return finishView;
}
public void setFinishView(String finishView)
{
this.finishView = finishView;
}
protected ModelAndView processFinish(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
BindException arg3) throws Exception
{
User user=(User)arg2;
return new ModelAndView(this.getFinishView(),"user",user);
}
protected ModelAndView processCannel(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
BindException arg3) throws Exception
{
return new ModelAndView(this.getCancelView());
}
}
定义两个私有变量cancelView ,finishView用于将分页填写功能中的返回和下一步。
User的编写
package User;
public class User
{
private String userName;//用户名
private String pwd;// 密码
private String pwd1;// 确认密码
private String qq;// qq号码
private String mail;//电子邮箱
private String tel;//电话
private String addr;//地址
private String name;//姓名
private String age;//年龄
private String sex;//性别
private String high;//身高
private String weight;//体重
public String getPwd1() {
return pwd1;
}
public void setPwd1(String pwd1) {
this.pwd1 = pwd1;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getHigh() {
return high;
}
public void setHigh(String high) {
this.high = high;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
}
就是一些变量的set,get方法。
applicationContext.xml的编写
<?xml version="1.0" encoding="UTF-8"?