`

Spring MVC控制器之SimpleFormController使用

阅读更多



 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是为了能正确的把日期进行填充。

 

 

 

 

 

 

 

  • 大小: 7 KB
  • 大小: 42.3 KB
分享到:
评论

相关推荐

    spring mvc 附件上传代码

    本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括必要的`web.xml`配置、Spring配置文件(如`upload-servlet.xml`)设置及控制器的具体编写。 #### 二、`web.xml`配置详解 `web.xml`文件用于...

    Spring mvc(从入门到精通)

    Spring MVC 是一个基于 Java 的 Web 应用程序框架,基于模型-视图-控制器(MVC)模式。它提供了一个灵活的方式来开发 Web 应用程序,具有良好的可扩展性和灵活性。 Spring MVC 的核心组件 在 Spring MVC 中,...

    一个最简单的SimpleFormController使用

    8. **与现代Spring MVC的区别**:虽然`SimpleFormController`简化了许多处理流程,但在Spring 3.0之后,推荐使用基于注解的控制器(`@Controller`),配合`@RequestMapping`、`@ModelAttribute`等注解实现更灵活、更...

    Spring MVC 例子

    本示例将深入探讨`SimpleFormController`和`MultiActionController`这两种控制器在Spring MVC中的应用。 首先,`SimpleFormController`是Spring MVC早期版本中提供的一个抽象控制器,主要用于处理表单提交。它内置...

    Spring的各种控制器

    在Spring框架中,控制器是应用程序的核心组件之一,它们负责接收HTTP请求,并协调处理逻辑,将数据传递给视图层进行展示。本示例主要探讨了两种类型的控制器:SimpleController和MutiActionControl,它们在Spring ...

    spring mvc

    在 Spring 2.5 版本之后,Spring MVC 引入了注解驱动的功能,极大地简化了控制器(Controller)的配置和使用。本文将深入探讨 Spring MVC 中的一些关键注解及其应用。 1. **@Controller** - 这个注解用于标记一个类...

    Spring—mvc实例

    1. DispatcherServlet:这是Spring MVC的前端控制器,负责接收HTTP请求并调度到合适的处理器。 2. Controller:控制器是业务逻辑与视图之间的桥梁,处理用户请求并返回相应的视图。 3. Model:模型对象承载了业务...

    spring mvc 文档

    SimpleFormController是Spring MVC早期版本中用于处理表单的控制器。尽管现在已经被废弃,但了解其基本用法仍然有助于理解Spring MVC的机制。 **示例代码**: ```java @Controller public class ...

    计算机外文翻译-Spring的web-MVC-构架模式.pdf

    - Spring MVC提供多种类型的控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController等,帮助开发者处理不同复杂度的控制逻辑。 - 与Struts相比,Spring MVC允许...

    Spring Web MVC framework中英文对照.pdf

    Spring Web MVC框架具有高度的灵活性和可扩展性,它允许开发人员根据需要选择适当的基类来扩展自己的控制器,而不是强制使用某个特定的控制器类型。这与其他框架如Struts相比是一大优势。 综上所述,Spring Web MVC...

    详解springMVC—三种控制器controller

    Spring MVC控制器详解 Spring MVC框架中,控制器(Controller)扮演着至关重要的角色,是用户请求的入口和处理中心。 Spring MVC提供了三种类型的控制器,每种控制器都有其特点和应用场景。本文将对这三种控制器...

    外文翻译-Spring的web-MVC-构架模式讲解学习.pdf

    - **WebWork(现在称为Struts2)**:Spring MVC与WebWork的主要区别在于对象角色的划分,Spring支持独立的控制器、命令对象和模型对象,而WebWork将这些角色集中在一个Action对象中。 4. **J2EE集成与容器无关性**...

    spring3 mvc 注解action dao service 实例教程

    `@RequestMapping`是Spring MVC中最常用的注解之一,用于映射HTTP请求到控制器类或方法。它可以在类级别和方法级别使用,以实现灵活的请求映射规则。 ```java @Controller public class AccountsController { @...

    外文翻译-Spring的web MVC 构架模式.pdf

    Spring提供了多种控制器基类,如`AbstractController`、`AbstractCommandController`、`MultiActionController`、`SimpleFormController`和`AbstractWizardFormController`,以适应不同层次的控制需求。与Struts不同...

    外文翻译Spring地web MVC 构架模式.pdf

    控制器可以是简单接口的实现,如`ModelAndView handleRequest(request, response)`,也可以是更复杂的控制器类,如AbstractController、SimpleFormController等。Spring的数据绑定机制非常灵活,可以处理校验错误,...

    毕设外文文献翻译-Spring的webMVC构架模式 (2).docx

    【Spring的Web MVC构架模式】是Spring框架的核心部分,为构建基于Java的Web应用程序提供了一种模型-视图-控制器(MVC)架构。该模式允许开发者将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可测试性...

Global site tag (gtag.js) - Google Analytics