1.CommandController(命令控制器)
public class MyCommandController extends AbstractCommandController{
MyCommandController(){
this.setCommandClass(Person.class);
this.setCommandName("person");
}
@Override
protected ModelAndView handle(HttpServletRequest req,
HttpServletResponse resp, Object o, BindException arg3)
throws Exception {
Person p = (Person) o;
System.out.println(p);
return new ModelAndView("command");
}
}
* 需要继承AbstractCommandController类,并重写handle方法
* 通过构造方法注册命令类和命令名称,如:
public MyCommandController(){
//注册命令类
this.setCommandClass(Person.
class);
//命令名称
this.setCommandName("person");
}
2 FormController(表单控制器)
public class MyFormController extends SimpleFormController{
MyFormController(){
this.setCommandClass(Person.class);
this.setCommandName("person");
}
@Override
protected void doSubmitAction(Object command) throws Exception {
Person p = (Person) command;
System.out.println(p);
System.out.println("MyFormController.doSubmitAction()");
super.doSubmitAction(command);
}
}
* 需要继承SimpleFormController类,并重写doSubmitAction方法
* 通过构造方法注册命令类和命令名称,如:
public MyFormController(){
this.setCommandClass(Person.
class);
this.setCommandName("person");
}
* 在spring配置文件中对表单控制器进行配置,如:
<!-- 表单控制器 -->
<bean id="myFormController" name="/form.action" class="cn.itcast.controller.MyFormController">
<property name="successView" value="success"/>
<property name="formView" value="personForm"/>
</bean>
*其中successView和formView都是固定写法
*第一次访问的时候是get方式,所以访问的是persomForm.jsp 第二次访问的时候是post方式,所以访问的是success.jsp
3 WizardFormController(向导表单控制器)
public class MyWizardFormController extends AbstractWizardFormController{
MyWizardFormController(){
this.setCommandClass(Person.class);
this.setCommandName("person");
}
@Override
protected ModelAndView processFinish(HttpServletRequest req,
HttpServletResponse resp, Object o, BindException arg3)
throws Exception {
Person p = (Person) o;
System.out.println(p);
return new ModelAndView("success");
}
@Override
protected ModelAndView processCancel(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
return new ModelAndView("index");
}
}
* 需要继承AbstractWizardFormController类,并重写processFinish方法
*通过构造方法注册命令类和命令名称,如:
public MyWizardFormController(){
this.setCommandClass(Person.
class);
this.setCommandName("person");
}
* 在spring配置文件中对向导表单控制器进行配置,如:
<!-- 向导表单控制器 -->
<bean name="/wizard.action" id="myWizardFormControlle" class="cn.itcast.controller.MyWizardFormController">
<property name="pages">
<list>
<value>wizard/1</value>
<value>wizard/2</value>
<value>wizard/3</value>
</list>
</property>
</bean>
1.jsp代码如下
<body>
<form action="<%=path %>/mywizardform.action" method="post">
id:<input type="text" name="id" value="${requestScope.person.id }"><br>
<input type="submit" name="_cancel" value="取消">
<input type="submit" name="_target1" value="下一步">
</form>
</body>
*数组下标是从0开始的,所以_target1代表的是第二个页面
*两个type都是submit类型
*数据时通过request域进行传输的
*value属性用于回显
*这里的
value="${requestScope.person.id }中的person就是前面
this.setCommandName("person")所设置的