SpringMVC-几种Controller介绍

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")所设置的







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值