- 浏览: 866357 次
- 性别:
- 来自: 杭州
最新评论
-
我是你们的爹:
真垃圾
spring MVC之返回JSON数据(Spring3.0 MVC) -
107x:
不错,谢谢!
spring MVC之返回JSON数据(Spring3.0 MVC) -
李君寻:
...
spring MVC之用Handler Interceptor拦截请求 -
tianhandigeng:
讲得非常好
maven3实战之仓库(maven仓库分类) -
dafa1892:
我这样做的时候传中文怎么是乱码那?
spring MVC之处理重定向的传参
spring MVC之注解开发控制器(三)
----------
开发表单控制器
在传统的Spring MVC开发方法中,是通过扩展SimpleFormController类来创建简单的表单控制器。这样就定义了基本的表单处理流程,并允许通过覆盖几个生命周期方法来定制流程。在基于注解的Spring MVC开发方法中,可以利用注解模拟表单处理流程.
在基于注解的方法中,添加了@Controller注解的基本控制器类也可以处理表单。你首先要做的就是通@RequestMapping
注解将URL模式映射到这个控制器类中。对于处理表单的控制器,必须提供两个重要的方法。一个是用来响应HTTP GET请求,呈现表单的。另一个是为HTTP POST请求处理表单提交的。这些方法的名称可以是任意的,但是必须利用@RequestMapping注解与HTTP方法关联起来。
package com.apress.springrecipes.court.web; ... import org.springframework.beans.factory.annotation.Autowired; ... @Controller @RequestMapping("/reservationForm.htm") @SessionAttributes("reservation") public class ReservationFormController{ private ReservationService reservationService; private ReservationValicator validator; @Autowired public ReservationFormController(ReservationService reservationService, ReservationValidator validator){ this.reservationService = reservationService; this.validator = validator; } @InitBinder public void initBinder(WebDataBinder binder){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class,new CustomDateEditor( dateFormat,true)); binder.registerCustomEditor(SportType.class,new SportTypeEditor( reservationService)); } @ModelAttribute("sportTypes") public List<SportType> populateSportTypes(){ return reservationService.getAllSportTypes(); } @RequestMapping(method=RequestMethod.GET) public String setupForm(@RequestParam(required=false,value="username") String username,ModelMap model){ Reservation reservation = new Reservation(); reservation.setPlayer(new Player(username,null)); model.addAttribute("reservation",reservation); return "reservationForm"; } @RequestMapping(method=RequestMethod.POST) public String processSubmit(@ModelAttribute("reservation")Reservation reservation, BindingResult result,SessionStatus status){ validator.validate(reservation,result); if(result.hasErrors()){ return "reservationForm"; }else{ reservationService.make(reservation); status.setComplete(); return "redirect:reservationSuccess.htm"; } } }
与HTTP GET方法相关联的setupForm()方法,对应于SimpleFormController的formBackingObject()方法,它将初始化用于绑定的命令对象。在这个方法中,为了初始化命令对象,可以利用@RequestParam注解获取任何请求参数。然后,你亲自创建命令对象,并将它保存到模型属性中。模型属性的名称实际上是可以在jsp文件中访问到的命令对象名称。如果想要将命令对象保存在会话中,就像启用SimpleFormController的sessionForm属性一样,可以将@SessionAttributes注解应用到控制器类中,并指定要保存在会话中的模型属性的名称。
与HTTP POST方法相关联的processSubmit()方法,对应于SimpleFormController的onSubmit()方法。在这个方法中,可以利用@ModelAttribute注解,从模型中得到命令对象。在被应用到方法参数时,@ModelAttribute注解会将模型属性绑定到方法参数上。与SimpleFormController的onSubmit()方法不同,你必须亲自执行表单验证,并决定是呈现
表单视图琮是成功视图。表单提交处理成功之后,调用SessionStatus的setComplete()方法,从会话中清除命令对象.当被应用到像populateSportTypes()这样的方法中时,@ModelAttribute注解会将引用数据填充到模型中。这样做的效果与覆盖SimpleFormController的referenceData()方法相同。
添加了@InitBinder注解的initBinder()方法将定制的属性编辑器注册到了绑定器对象中。它与SimpleFormController
的ininBinder()方法相对应。
请注意,这个控制器的成功视图是一个重定向到预订成功页面的视图。你可以为该视图创建另一个基于注解的控制器。
package com.apress.springrecipes.court.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ReservationSuccessController{ @RequestMapping("/reservationSuccess.htm") public String reservationSuccess(){ return "reservationSuccess"; } }
最后,在这个表单控制器生效之前,必须定义一具验证器实例,让Spring进行自动装配。
<bean id="reservationValidator" class="com.apress.springrecipes.court.domain.ReservationValidator"/>
为了重用,可以从每个控制器类中提取绑定器初始化任务,形成绑定初始器。
package com.apress.springrecipes.court.web; ... import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.support.WebBindingInitializer; import org.springframework.web.context.request.WebRequest; public class ReservationBindingInitializer implements WebBindingInitializer{ private ReservationService reservationService; @Autowired public ReservationBindingInitializer(ReservationService reservationService){ this.reservationService = reservationService; } public void initBinder(WebDatabinder binder,WebRequest request){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class,new CustomDateEditor( dateFormat,true)); binder.registerCustomEditor(SportTupe.class,new SportTypeEditor( reservationService)); } }
然后为AnnotationMethodHandlerAdapter指定这个绑定初始器,以便所有的处理程序方法都可以共用相同的属性编辑器。
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="webBindingInitializer"> <bean class="com.apress.springrecipes.court.web.ReservationBindingInitializer"/> </property> </bean>
现在可以删除ReservationFormController中的initBinder()方法,因为绑定喊叫已经能在每个基于注解的控制器中共享了。
发表评论
-
spring之spring与Quartz整合(Quartz的cronTrigger使用)
2011-08-28 18:40 1464spring之spring与Quartz整 ... -
spring之spring与Quartz整合(二)
2011-08-24 18:23 2707spring之spring与Quartz整合( ... -
spring之spring与Quartz整合(一)
2011-08-24 14:56 1426spring之spring与Quartz整合(一) - ... -
spring MVC之使用@SessionAttributes时报异常
2011-08-16 21:43 13951spring MVC之使用@SessionAttributes ... -
spring MVC之用注解处理静态资源
2011-08-08 19:33 3657spring MVC之用注解处理静态资源 --------- ... -
spring MVC之处理重定向的传参
2011-08-01 16:59 22114spring MVC之处理重定向的传参 ---------- ... -
spring MVC之Spring MVC3.0的RESTFul方式的访问
2011-07-31 13:14 3920spring MVC之Spring MVC3.0的RESTFu ... -
spring MVC之返回JSON数据(Spring3.0 MVC)
2011-07-30 19:50 114068spring MVC之返回JSON数据(S ... -
spring MVC之用注解开发控制器(二)
2011-07-25 11:29 2293spring MVC之用注解开发控制器(二) ------- ... -
spring MVC之用注解开发控制器(一)
2011-07-25 10:45 1878spring MVC之用注解开发控制器(一) ------- ... -
spring MVC之将多个动作分组到一个控制器(二)
2011-07-25 09:25 2285spring MVC之将多个动作分组到一个控制器(二) -- ... -
spring MVC之将多个动作分组到一个控制器(一)
2011-07-24 20:32 4917spring MVC之将多个动作分组到一个控制器(一) -- ... -
spring MVC之用表单控制器处理表单(五)
2011-07-24 19:34 1477spring MVC之用表单控制器处理表单(五) -- ... -
spring MVC之用表单控制器处理表单(四)
2011-07-24 18:58 1376spring MVC之用表单控制器处理表单(四) ----- ... -
spring MVC之用表单控制器处理表单(三)
2011-07-24 18:37 3631spring MVC之用表单控制器处理表单(三) ----- ... -
spring MVC之用表单控制器处理表单(二)
2011-07-24 17:21 1633spring MVC之用表单控制器处理表单(二) ----- ... -
spring MVC之用表单控制器处理表单(一)
2011-07-24 16:47 4829spring MVC之用表单控制器处理表单(一) ----- ... -
spring MVC之创建带有参数化视图的控制器
2011-07-24 13:35 2371spring MVC之创建带有参数化视图的控制器 ----- ... -
spring MVC之构造ModelAndView对象
2011-07-24 12:36 59377spring MVC之构造ModelAndView对象 -- ... -
spring MVC之将异常映射到视图
2011-07-23 20:37 2277spring MVC之将异常映射到视图 ---------- ...
相关推荐
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04. 系统前台采用全采用的Html+jQuery开发 05. 系统前台与后台的交互全部使用 Ajax 异步请求 06. 自定义 SecureValid 注解实现权限的控制 07. ...
在Spring MVC中,DispatcherServlet作为前端控制器,负责请求的接收和响应结果的处理。处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter)是核心组件,负责找到和调用适当的处理器(Controller)。 ...
2. 注解开发: 我们将深入讨论如何使用注解来配置和管理Spring容器、控制器、服务层和数据访问层。注解开发可以显著简化配置,并提高代码的可读性。 3. 整合配置: 我们将演示如何将Spring、Spring MVC和MyBatis进行...
Spring MVC支持注解,可以简化开发。 作为Spring的一部分,能够使用Spring框架的IOC容器和Aop编程。 方便整合Struts、MyBatis、Hibernate、JPA等其他框架。 强化注解的使用,在控制器、Service、Dao都可以使用注解,...
参考《Spring3.x企业应用开发实战》springMVC框架结构简介、 HTTP请求地址映射、数据转换、数据模型控制、视图及解析器
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...
第三章:注解式控制器开发详解 包括:注解式开发HelloWorld、处理器定义、请求映射、REST风格支持、请求数据映射、数据绑定等诸多内容 第四章:数据类型转换 包括:简介、内建类型转换器、自定义类型转换器等 第五...
Spring MVC: Spring MVC是Spring框架的一个模块,它实现了MVC(模型-视图-控制器)设计模式,用于构建Web应用。Spring MVC允许你将应用的逻辑、数据和用户界面分离,使得代码更加清晰和易于维护。 MyBatis: MyBatis...
* * * * Spring MVC的核心类和注解 请输入您的部门/机构名称 12.1 DispatcherServlet DispatcherServlet的全名是org.springframework.web.servlet.DispatcherServlet,它在程序中充当着前端控制器的角色。...
(2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring mvc 的配置文件中进行相关配置 1) 配置注解扫描路径 2)配置处理器映射器 3)配置处理器...
Spring MVC 3.0新特性: 1.支持REST风格的URL 2.添加更多注解,可完全注解驱动 ...5.更加灵活的控制器方法签名,可完全独立于Servlet API 参考《Spring 3.x企业应用开发实战》的第15章撰写的培训材料
,Spring Web编程模型,基于权限配置的方式:核心是1个拦截器,基于注解的权限控制:核心是1个切面,WebFlux编程模型,基于权限配置的方式:核心是1个过滤器,基于注解的权限控制:核心是1个切面
Spring Framework 开发参考手册 目录 1. 简介 1.1. 概览 1.1.1. 使用场景 2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 ...2.5.3. 基于Annotation的控制器 ......
编程语言+JAVAspring+MVC框架+...它介绍了JAVAspring的MVC框架的概念、原理和作用,以及如何使用JAVAspring的MVC框架来开发Web应用,包括控制器、模型、视图、拦截器、异常处理等内容,以及一些配置文件和注解的用法。
Spring MVC简介: 我们将介绍Spring MVC框架的基本概念,包括控制器、模型、视图以及它们之间的协作。您将了解为什么Spring MVC是一个流行的Java Web框架,以及它的主要特点。 项目结构: 我们将展示一个标准的...
1 此系统采用了目前最流行的ssm框架,其中的spingMVC框架相对于struts2框架更灵活,更安全。 2 本项目springMVC框架采用了注解映射器,使用了...5 spring容器内部使用拦截器,以Spring AOP的方式实现事务控制管理。
16.1.1. 控制器 - MVC中的C 16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet 16.3. ViewRendererServlet 16.4. 控制器 16.4.1. AbstractController和PortletContentGenerator ...
SpringMVC 是一种基于 Java 的实现 MVC 设计...它通过一套注解, 让一个简单的 Java 类成为处理请求的控制器, 而无须实现任何接口。 同时它还支持RESTful 编程风格的请求。 本文档包含SpringMVC的课件笔记与学习标注。