`
文章列表
spring MVC之用注解开发控制器(一) ----------   在传统的Spring MVC开发方法中,必须在Bean配置文件中为每个控制器类配置实例和请求映射。如果Spring MVC可以自动侦测你的控制器类和请求映射,就能减少配置所需要的工作量。此外,让每个控制器类去实现或者扩展特定于框架的接口或者基类,也不够灵活。 Spring2.5支持一种基于注解的控制器开发方法。Spring可以通过@Controller注解自动发现你的控制器类以及@RequestMapping注解中的请求映射,这样就为你免去了在Bean配置文件中配置它们的麻烦。此外,如果使用注解,控制器类和处理 ...
spring MVC之将多个动作分组到一个控制器(二) ----------   接上一篇   将URL映射到处理器方法   默认情况下,MultiActionController利用InternalPathMethodNameResolver按名称将URL映射到处理程序方法上。然而,如果想要给被映射的方法名称添加前缀或者后缀,就必须显式地配置这个解析器。 <bean id="memberController" class="com.apress.springrecipes.court.web.MemberController"& ...
spring MVC之将多个动作分组到一个控制器(一) ----------   创建多动作控制器   根据"每个动作一个控制器"的方法,给应用程序添加动作意味着必须在应用程序上下文中增加控制器。为了使配置更加简单,你想要将Spring MVC应用程序的控制器数量减到最少。Spring MVC提供的MultiActionController类允许你将多个相关的动作分组到一个控制器中。控制器可以扩展MultiActionController,并包含多个处理程序方法来处理多个动作。在多动作控制器中,可以用下面的形式,定义一个或者多个处理程序方法。 public (Mo ...
spring MVC之用表单控制器处理表单(五) ---------- 接上一篇 绑定定制类型的属性 提交表单时,SimpleFormController可以帮助你将表单域的值绑定到命令对象的同名属性上。然而,对于定制类型的属性,SimpleFormController无法对它们进行转换,除非你为它们指定相应的属性编辑器。 例如: 运动类型的选择框只提交选中的运动类型ID。你必须通过属性编辑器将这个ID转换成SportType对象。 我们创建SportTypeEditor类,将运动类型ID转换成SportType对象。这个属性编辑器需要ReservationS ...
spring MVC之用表单控制器处理表单(四) ----------   接上一篇   提供表单引用数据   当要求表单控制器呈现表单视图时,它可能有某些类型的引用数据要提供给表单。 如例: 当请求ReservationFormController显示预订表单时,必须在模型中包含所有的可用运动类型,这样表单才能在HTML选择框中显示它们。为此,你可以覆盖SimpleFormController的referenceData()方法。将要引用数据放在一个Map中,并将它作为方法的返回值。这个Map会被自动添加到模型中,并传递给表单视图。referenceData()方法的默 ...
spring MVC之用表单控制器处理表单(三) ----------   接上一篇   初始化命令对象       你可以为SimpleFormController指定一个命令对象,它会被实例化,用于绑定表单域。但是在某些情况下,你可能需要亲自初始化命令对象。要解决这个问题,你必须亲自初始化该命令对象。为此,可以覆盖SimpleFormController的formBackingObject()方法。这个方法的默认实现只是实例化命令类。当你覆盖该方法时,是不需要命令类的,因为SimpleFormController再也不会为你实例化这个类了。 package com.apr ...
spring MVC之用表单控制器处理表单(二) ----------   接上一篇   应用post/redirect/get设计模式   然而,在表单提交后的成功视图中刷新网页时,刚刚提交的表单会再提交一次。这个问题被称作重复表单提交。为了避免这个问题,可以应用post/redirect/get设计模式,它建议在成功地提交一个表单之后,要重定向到另一个URL,而不是直接返回一个HTML页面。如例: 首先,用ParameterizableViewController定义一个只呈现reservationSuccess视图的控制器,它被映射到reservationSuccess.j ...
spring MVC之用表单控制器处理表单(一) ----------   创建表单控制器     在web应用程序中,经常要处理表单。表单控制器既要为用户显示表单,又要处理表单提交。表单处理可能是件非常复杂且充满变数的任务。如果从头开始构建表单控制器,会牵涉到太多的表单处理细节。 Spring MVC提供的SimpleFormController类定义了基本的表单处理流程。它支持命令对象的概念,并且可以将表单域的值绑定到命令对象的同名属性上。通过扩展SimpleFormController类,控制器就可以继承处理表单的能力。 当HTTP GET请求SimpleFormContr ...
spring MVC之创建带有参数化视图的控制器 ----------       在创建控制器时, 你不想将视图名称硬编码在控制器中,而是把它参数化, 以便在Bean配置文件中进行指定。ParameterizableViewController是AbstractController的一个子类,其中定义了viewName属性及其getter和setter方法。对于不需要任何处理逻辑,只为用户呈现视图控制器,可以直接使用这个控制器类,或者扩展这个控制器类来继承viewName属性。   假设有一个非常简单的控制器,其目的只是为了呈现about视图。可以声明一个Parameteriza ...

Spring的Controller

Spring的Controller ----------     和Struts一样,Spring的Controller是Singleton的,这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:我们不用每次创建Controller,减少了对象创建和垃圾收集的时间;由于只有一个Controller的instance,当多个线程调用它的时候,它里面的instance变量不是线程安全的。  
spring MVC之构造ModelAndView对象 ----------   构造ModelAndView对象   当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。因此,经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法,让你可以根据自己的喜好来构造ModelAndView对象。这些构造器和方法以类似的方式支持视图名称和视图对象。     当你只有一个模型属性要返回时,可以在构造器中指定该属性来构造ModelAndVie ...
spring MVC之将异常映射到视图 ----------   当出现未知的异常时, 应用服务器通常会将这个可恶的异常栈显示给用户。用户与这个栈轨迹毫无干系,他会抱怨你的应用程序对用户不友好。此外,这么做琮有潜在的安全风险,因为可能将内部的方法调用层次结构公开给用户。 在Spring MVC应用程序中,可以在web应用程序上下文中注册一个或者多个解析器Bean,来解析未被捕捉的异常。这些Bean必须实现HandlerExceptionResolver接口,这样DispatcherServlet才能自动侦测它们。Spring MVC提供了一个简单的异常解析器,让你可以将每种异常分类 ...
spring MVC之按名称解析视图(五) ----------   redirect前缀   如果在web应用程序上下文中配置了InternalResourceViewResolver,就可以利用视图名称中的redirect前缀来解析重定向视图。然后,视图名称的其余部分就会被当作是重定向的URL。例如,视图名称redirect:welcome.htm会重定向到这个相对的URL----welcome.htm。你还可以在视图名称中指定绝对的URL。      
spring MVC之按名称解析视图(四) ----------   用多个解析器解析视图   如果在web应用程序中有许多视图,只选择一种视图解析策略通常是不够的。InternalResourceViewResolver通常可以解析大多数的内部JSP视图,但是还有其他的视图类型必须通过ResourceBundleViewResolver进行解析。在这种情况下,就必须结合两种策略来进行视图解析。 <beans...> ... <bean class="org.springframework.web.servlet.view.ResourceBund ...
spring MVC之按名称解析视图(三) ----------     从Resource Bundle中解析视图   除了XML配置文件之外,还可以在Resource Bundle中声明视图Bean。ResourceBundleViewResolver能classpath根部的Resource Bundle中加载视图Bean。请注意,ResourceBundleViewResolver也可以利用Resource Bundle的特性,从不同Resource Bundle中为不同的区域加载视图Bean。 <bean class="org.springframewor ...
Global site tag (gtag.js) - Google Analytics