`

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例子 有SimpleFormController ,MultiationController等控制器的应用介绍.算是比较完整的例子大家看看吧。

    Spring MVC与JAX-RS比较与分析

    去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念...更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能还意识不到现在的Spring MVC对REST广泛的支持。

    一个最简单的SimpleFormController使用

    NULL 博文链接:https://mgz-99-163-com.iteye.com/blog/690417

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

    开源框架 Spring Gossip

    Controller 的类别 介绍如何在 Controller上搭配使用验证器(Validator)、如何实作Command资料的型态转换,以及如何使用Spring的相关API来实作档案上传的功能。 实作 Validator 使用 PropertyEditor ...

    CryptoPresto:基于Spring MVC的Web平台,用于加密交易和转移

    一个基于Spring MVC的网络平台,用于加密货币交易和转移 框架:Spring mvc 5.2.3.RELEASE。 查看:JSP。 数据持久性:Hibernate5.4.10.Final。 数据库:MySQL 8.0.21 Java:1.8。 用户表单提交:...

    Web框架-spring

    Spring的web框架是围绕...你可以通过实现这个接口来生成自己的控制器(也可以称之为处理器),但是从Spring提供的一系列控制器继承会更省事,比如AbstractController、AbstractCommandController和SimpleFormController

    springMVC3学习(六)--SimpleFormController(源码)

    springMVC3学习(六)--SimpleFormController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988733

    《程序天下:J2EE整合详解与典型案例》光盘源码

    2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...

    spring 2.0表单绑定实例

    自己写的spring表单绑定的小例子,分别使用SimpleFormController,MultiActionController,spring的form tag和validator。 还在MultiActionController里面实现了表单的绑定

    SPRING API 2.0.CHM

    All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....

    legacy-app:使用 Spring 演讲改进您的遗留应用程序的代码

    遗留应用程序使用 Spring 谈话改进您的遗留应用程序的代码。 有几个分支显示了从 Legacy Monolitic 应用程序迁移到结构良好(或更好)的应用程序,这些应用程序可以分解为不同的部分。显示从 Spring 2.0.8 升级到 ...

    Spring-Validator-开源

    Spring-Validator软件包提供了一种自动生成JavaScript客户端验证代码的简单方法,并提供了SimpleFormController的通用验证器

Global site tag (gtag.js) - Google Analytics