SimpleFormController已经在spring3.0及以后的版本中废除,学习没什么实际用处,但是对了解spring框架本身还是有做用的。SimpleFormController顾名思义这个控制器是为了提交表单来设计的。这里主要对test-servlet.xml文件里关于Controller的配制做一下解释。
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="add_emp.test">addEmpController</prop> </props> </property> </bean> <bean id="addEmpController" class="test.EmployeeFormController"> <property name="commandClass" value="test.Employee"/> <property name="formView" value="add_emp"/> <property name="successView" value="success"/> </bean>
当前端控制器通过读取web.xml文件中的配制找到配置的后缀扩展,然后把拦截到的请求交给相应的handlerMapping进行处理,在这个程序中,将把相应的请求交给addEmpController来处理,因为是使用的是SimpleFormController,所以这里的配置就比用CommondController简单点,这里只需要一个控制器,而不需要为显示页面与添加完后提交各设置一个控制器。 如下:
<bean id="addEmpController" class="test.EmployeeFormController"> <property name="commandClass" value="test.Employee"/> <property name="formView" value="add_emp"/> <property name="successView" value="success"/> </bean>
在这里配置了三个参数,commandClass属性的作用是:进行自动填充,在表单中添加完form提交后,不用手动的从request中取数据,而由spring框架来帮忙完成。formView的作用是:当一个请求是以get的方式提交过来,而不是提交表单的post,Spring框架就会自动解析出用户是要显示表单页面,而不是要提交表单页面,如果是以post方式提交,spring框架就会解析出用户是点击submit按钮提交表单,从而把相应的数据提交给SimpleFormController的实现类来处理,处理完成后就会用到第三个属性:successView,它的配制是为了说明在处理成功后转给那个视图。
例如:http://localhost:8080/test/add_emp.test,注意,这里是在web.xml中配置拦截扩展名为test的请求,如下:
<servlet> <servlet-name>test</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>*.test</url-pattern> </servlet-mapping>
当在浏览器中输入http://localhost:8080/test/add_emp.test后就会显示出添加数据的表单页面,如下图:
注意这时的表单action为空,并没有添写要提交给那个acion来处理当前的请求,spring会自动的提交给当前的url来处理,及:http://localhost:8080/test/add_emp.test,如下图:
<!--StartFragment -->注意这里要配制提交的方式为post方式提交,这样spring才能判断出是要交给SimpleFormController来处理。
接下来看一个控制器类EmployeeFormController.java的实现:
public class EmployeeFormController extends SimpleFormController { @Override protected ModelAndView onSubmit(Object command) throws Exception { Employee emp = (Employee) command; System.out.println(emp); return new ModelAndView(getSuccessView()); } @Override protected Map referenceData(HttpServletRequest request) throws Exception { Map<String, Object> model = new HashMap<String, Object>(); model.put("deptList", new String[]{"sales","manage"}); return model; } @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } }
onSubmit方法,顾名思义知道其是post后所要执行的方法,referenceData方法是为了在页面上显示部门列表来定义的方法,这是引用的一个外部模型。initBinder是为了能正确的把日期进行填充。
相关推荐
本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括必要的`web.xml`配置、Spring配置文件(如`upload-servlet.xml`)设置及控制器的具体编写。 #### 二、`web.xml`配置详解 `web.xml`文件用于...
Spring MVC 是一个基于 Java 的 Web 应用程序框架,基于模型-视图-控制器(MVC)模式。它提供了一个灵活的方式来开发 Web 应用程序,具有良好的可扩展性和灵活性。 Spring MVC 的核心组件 在 Spring MVC 中,...
8. **与现代Spring MVC的区别**:虽然`SimpleFormController`简化了许多处理流程,但在Spring 3.0之后,推荐使用基于注解的控制器(`@Controller`),配合`@RequestMapping`、`@ModelAttribute`等注解实现更灵活、更...
本示例将深入探讨`SimpleFormController`和`MultiActionController`这两种控制器在Spring MVC中的应用。 首先,`SimpleFormController`是Spring MVC早期版本中提供的一个抽象控制器,主要用于处理表单提交。它内置...
在Spring框架中,控制器是应用程序的核心组件之一,它们负责接收HTTP请求,并协调处理逻辑,将数据传递给视图层进行展示。本示例主要探讨了两种类型的控制器:SimpleController和MutiActionControl,它们在Spring ...
在 Spring 2.5 版本之后,Spring MVC 引入了注解驱动的功能,极大地简化了控制器(Controller)的配置和使用。本文将深入探讨 Spring MVC 中的一些关键注解及其应用。 1. **@Controller** - 这个注解用于标记一个类...
1. DispatcherServlet:这是Spring MVC的前端控制器,负责接收HTTP请求并调度到合适的处理器。 2. Controller:控制器是业务逻辑与视图之间的桥梁,处理用户请求并返回相应的视图。 3. Model:模型对象承载了业务...
SimpleFormController是Spring MVC早期版本中用于处理表单的控制器。尽管现在已经被废弃,但了解其基本用法仍然有助于理解Spring MVC的机制。 **示例代码**: ```java @Controller public class ...
Spring 的 Web MVC 构架模式是 Spring 框架中的一种重要部分,它提供了一个基于模型-视图-控制器(MVC)架构的 Web 应用程序开发模式。这种模式使得开发者可以更容易地开发和维护大型 Web 应用程序。 1. 介绍 ...
- Spring MVC提供多种类型的控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController等,帮助开发者处理不同复杂度的控制逻辑。 - 与Struts相比,Spring MVC允许...
Spring Web MVC框架具有高度的灵活性和可扩展性,它允许开发人员根据需要选择适当的基类来扩展自己的控制器,而不是强制使用某个特定的控制器类型。这与其他框架如Struts相比是一大优势。 综上所述,Spring Web MVC...
Spring MVC控制器详解 Spring MVC框架中,控制器(Controller)扮演着至关重要的角色,是用户请求的入口和处理中心。 Spring MVC提供了三种类型的控制器,每种控制器都有其特点和应用场景。本文将对这三种控制器...
- **WebWork(现在称为Struts2)**:Spring MVC与WebWork的主要区别在于对象角色的划分,Spring支持独立的控制器、命令对象和模型对象,而WebWork将这些角色集中在一个Action对象中。 4. **J2EE集成与容器无关性**...
`@RequestMapping`是Spring MVC中最常用的注解之一,用于映射HTTP请求到控制器类或方法。它可以在类级别和方法级别使用,以实现灵活的请求映射规则。 ```java @Controller public class AccountsController { @...
Spring提供了多种控制器基类,如`AbstractController`、`AbstractCommandController`、`MultiActionController`、`SimpleFormController`和`AbstractWizardFormController`,以适应不同层次的控制需求。与Struts不同...
控制器可以是简单接口的实现,如`ModelAndView handleRequest(request, response)`,也可以是更复杂的控制器类,如AbstractController、SimpleFormController等。Spring的数据绑定机制非常灵活,可以处理校验错误,...
【Spring的Web MVC构架模式】是Spring框架的核心部分,为构建基于Java的Web应用程序提供了一种模型-视图-控制器(MVC)架构。该模式允许开发者将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可测试性...