使用SpringMVC的表单控制器SimpleFormController

以注册过程为例,我们可能会选择继承AbstractController来实现表单的显示,继承AbstractCommandController来实现表单的处理 ,这样是可行的,但必须要维护两个控制器

在这种情况下,我们应该使用SimpleFormController,他接受GEt请求时显示表单,接受POST请求时处理表单,如果发生错误,控制器会知道重新显示这个表单,这样用户就可以修改错误,重新提交

表单对应的POJO

package model;public class Student ...{private String name;private String sex;public String getName() ...{return name;}public void setName(String name) ...{this.name = name;}public String getSex() ...{return sex;}public void setSex(String sex) ...{this.sex = sex;}}

控制器:

这个base类中还有一个DoSubmitAction()方法,和onSubmit()方法的区别就是后者可以返回一个ModelAndView对象,完成向页面输出数据的功能,而前者不能向页面返回数据,这两个方法同时只有一个有效

package Action;

import model.Student;import org.springframework.validation.BindException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.SimpleFormController;public class RegisterStudentController extends SimpleFormController ...{public RegisterStudentController()...{this.setCommandClass(Student.class);}protected ModelAndView onSubmit(Object object, BindException arg1) throws Exception ...{Student stu=(Student)object;return new ModelAndView(getSuccessView(),"student",stu);}}

web.xml

   xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">contextConfigLocation/WEB-INF/train-service.xml,/WEB-INF/train-data.xml,/WEB-INF/train-servlet.xmltrainorg.springframework.web.servlet.DispatcherServlet0train*.mvccharacterAction.CharacterFiltercharacter/*index.jsp

train-servlet.xml

formView定义为register对应我们的表单提交页面register.jsp

successView定义为success对应提交成功的显示页面success.jsp

registersuccessHomeControllerRegisterStudentController

register.jsp: <%...@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%...String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

success.jsp <%...@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%...String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

success.jsp <%...@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%...String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

测试运行,可以看到success.jsp上有我们提交的信息

去—–1 (使用filter处理中文问题)

其实你已经错过了旅行的意义。

使用SpringMVC的表单控制器SimpleFormController

相关文章:

你感兴趣的文章:

标签云: