SpringMVC-几种Controller介绍

来源:互联网 发布:sai手绘软件 编辑:程序博客网 时间:2024/05/20 23:05

1.CommandController(命令控制器)

public class MyCommandController extends AbstractCommandController{MyCommandController(){this.setCommandClass(Person.class);this.setCommandName("person");}@Overrideprotected 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");}@Overrideprotected 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");}@Overrideprotected ModelAndView processFinish(HttpServletRequest req,HttpServletResponse resp, Object o, BindException arg3)throws Exception {Person p = (Person) o;System.out.println(p);return new ModelAndView("success");}@Overrideprotected 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")所设置的







0 0