Welcome 微信登录

首页 / 软件开发 / JAVA / Spring学习点滴,《Spring in Action》笔记(七)

Spring学习点滴,《Spring in Action》笔记(七)2011-08-18 unmi.cc 隔叶黄莺91. Spring MVC 还提供了一个特别点的 Controller 类型就是 ThrowawayController,它自成一个接 口,ThrowawayController 和 Controller 的关系是平行的。什么叫做 ThrowawayController 呢,中文 叫做一次性控制器,也就像一次性筷子那样用完即丢,下次要用又拿新的。表现在实例上就是相应 Bean 配置为 singleton="false",每次初始化一个新实例。与其他 Controller 的区别完全就是 WebWork 或 Struts2 的 Action 与 Struts1 的 Action 的区别。因为它是多例的,所以可以用实例变量来接受请求 参数,执行方法无参数;而不像其他的 Controller ,因为共享实例,所以需要通过执行方法的来传递请 求参数以保证线程安全(P273)

92. 在《Spring in Action》第一版 274 页说 DispatcherServlet 使用缺省 ControllerHandlerAdapter 时只会把控制权分发给 Controller 接口类型的类,而要配置 ThrowawayControllerHandlerAdapter 后,Dispatcherservlet 就把控制权分发给 ThrowawayController ,配置如下:

<bean id="throwawayHandler" class="org.springframework.web.servlet.mvc.throwaway.ThrowawayControllerHandlerAdapter" />

<bean id="throwawayHandler" class="org.springframework.web.servlet.mvc.throwaway.ThrowawayControllerHandlerAdapter" />

同时要是应用系统中要混用两种控制器的话,还得在前面的基础上配置一个 SimpleControllerHandlerAdapter,配置如下:

<bean id="simpleHandler" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

<bean id="simpleHandler" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

然而我在实际测试中,仍用缺省的 ControllerHandlerAdapter,同样能在一个应用中混合使用两种类 型的控制器,尚不知不加上面那两个配置会出什么问题(P274)

93. 视图解析器(实现接口 org.springframework.web.servlet.ViewResolver) 用来把 ModelAndView 对象的逻辑视图名解析成一个用于将结果渲染给用户的视图 Bean。Spring 有 4 种 ViewResolver 实现 ,相当于不同 Struts2 的 result 类型:

·InternalResourceViewResolver -- 将逻辑视图名解析为一个用模板文件(如 JSP 和 Velocity 等 模板) 渲染的视图对象。

·BeanNameViewResolver -- 解析为一个 DispatcherServlet 应用上下文中的视图 Bean

·ResourceBundleViewResolver -- 解析为 ResourceBundler 中的视图 对象

·XmlViewResolver -- 从一个 XML 文件中解析视图 Bean,这个文件是从 DispatcherServlet 应用上下文中分离出来的。

注意:在 org.springframework.web.servlet.view 包下只有 XmlViewResolver,而没有 XmlViewResolver,书中是笔误。