Spring学习点滴,《Spring in Action》笔记(三)

第十章. 使用其他 Web 框架

41. Spring 提供了两种与 Struts 集成的方式

1) 让你的 Action 继承 org.springframework.web.struts.ActionSupport

2) 将请求委托给作为 Spring Bean 管理的 Struts action 来自理(P312)

42. 为了让 Struts 能访问 Spring 管理的 Bean,必须在 struts-config.xml 中注册一个知道 Spring 上下文的 ContextLoaderPlugIn,用的是 WebApplicationContext:(P312)

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">  

<set-propertyset-property="contextConfigLocation" value="/WEB-INF/training-

servlet.xml,/WEB-INF/..."/></plugin-in><plug-in 

className="org.springframework.web.struts.ContextLoaderPlugIn">  <set-

property="contextConfigLocation" value="/WEB-INF/training-servlet.xml,/WEB-

INF/..."/></plugin-in>

43. ActionSupport 重载了 setServlet()方法,获取bean的方式为调用 ActionSupport 的 getWebApplicationContext().getBean() (P313)

44. 继承 Spring 提供的 ActionSupport 让 Struts与Spring 紧密耦合,而且 Action 还负责查找 Bean,这也违背了IoC原则(P313)

45. 使用委托 Action:struts-config.xml 中每个 path 都指定 type 为 org.springframework.web.struts.DelegatingActionProxy,实际的 Action 实例由Spring 来管理,即 所有的 Action 实例是配置在 Spring 上下文文件中,它们之间用 path<->name 来映射,这种方 式并不好看(P315)

46. 使用请求委托,只在 struts-config.xml 中配置 DelegatingRequestProcess 或 DelegatingTilesRequestProcessor 作为控制器,其余配置不变,如<action path="/listCourses" type="com.unmi.MyCoursesAction"/> 其实 type 属性是被所配置的 controller 忽略掉了,所以可 省去 type属性,真正的Action也是由Spring来配置装配,也是通过 path--name 来对应。这种做法就是 不需要为每一个 <action .../> 指定 org.springframework.web.struts.DelegatingActionProxy 。(P315)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
, struts
, action
, 配置
, springframework
actionsupport
,以便于您获取更多的相关知识。

时间: 2024-10-28 15:05:41

Spring学习点滴,《Spring in Action》笔记(三)的相关文章

Spring学习点滴,《Spring in Action》笔记(一)

第二章:装配 Bean -------------------------------------------------------------------------------- 1. <ref>标签中的 bean, local, parent 三个属性的区别(P53) 2. <list><value...</list>和<set><value...</set>可以换着用都 可以为 List, Set 以及数组属性赋值(P55)

Spring学习点滴,《Spring in Action》笔记(四)

61. 更为精彩的是自动代理的方式来总体配置各分散类中方法的事物属性,结合使用 DefaultAdvisorAutoProxyCreator, TransactionAttributeSourceAdvisor 和 TransactionInterceptor (我还需要详细理清楚)(P181) 62. 当使用自动代理时,MethodMapTransationAttributeSource 就能很多的派上用场了,它的 methodMap 属性中可以指定哪个类的哪个方法,可以使用通配符(P182)

Spring学习点滴,《Spring in Action》笔记(六)

81. Spring 提供了丰富的控制器层次,方便根据实际需求选择实现或继承那一种控制器.不像 Struts 和 WebWork 比较平坦的 Action 层次.比如 ThowawayController/MultiActionController/SimpleFormController 等. (P254) 82. 继承 AbstractController 要覆盖的方法是 handleRequestInternal(request,response):new ModelAndView("co

Spring学习点滴,《Spring in Action》笔记(五)

第八章. 建立 Web 层 71. Spring 的 MVC 和 Struts 的 MVC 基本一致 Spring 的控制流程是:请求->DispatcherServlet->从 HandlerMapping 中查询到处理该请求 的 Controller-> Controller 的 handleRequest 方法调用业务方法,最后返回 ModelAndView (ModelAndView告诉了 DispatcherServlet 转向到哪个视图) Struts 的控制流程是:请求-&

Spring学习点滴,《Spring in Action》笔记(七)

91. Spring MVC 还提供了一个特别点的 Controller 类型就是 ThrowawayController,它自成一个接 口,ThrowawayController 和 Controller 的关系是平行的.什么叫做 ThrowawayController 呢,中文 叫做一次性控制器,也就像一次性筷子那样用完即丢,下次要用又拿新的.表现在实例上就是相应 Bean 配置为 singleton="false",每次初始化一个新实例.与其他 Controller 的区别完全就

Spring学习点滴,《Spring in Action》笔记(二)

第四章. 征服数据库 -------------------------------------------------------------------------------- 31. Spring 把数据访问流程中的固定部分和可变部分分开,分别映射成两截然不同的类,模板 (Template)和回调(Callback),模板管事物控制.资源管理以及异常处理:回调实现特定于应用的部 分--创建 statement.绑定参数.以及整理结果集.模板方法模式的优秀应用(P123) 32. Jdbc

spring学习笔记(21)编程式事务配置,service层概念引入

访问数据库事务导入 在我之前的文章<spring学习笔记(19)mysql读写分离后端AOP控制实例>中模拟数据库读写分离的例子,在访问数据库时使用的方法是: public <E> E add(Object object) { return (E) getSessionFactory().openSession().save(object); } 通过直接开启session而后保存对象.查询数据等操作,是没有事务的.而如果我们的项目规模变大,业务逻辑日益复杂,我们在一个方法中进行大

Spring学习笔记之依赖的注解(2)

Spring学习笔记之依赖的注解(2) 1.0 注解,不能单独存在,是Java中的一种类型 1.1 写注解 1.2 注解反射 2.0 spring的注解 spring的 @Controller@Component@Service//更多典型化注解,但是@Controller@Service建议使用 @service("personService")可以代替set get 方法,@Resource(name=personDao) @Autowired//按照类型匹配 @Qualifier

Spring学习笔记之aop动态代理(3)

Spring学习笔记之aop动态代理(3) 1.0 静态代理模式的缺点: 1.在该系统中有多少的dao就的写多少的proxy,麻烦 2.如果目标接口有方法的改动,则proxy也需要改动. PersonDao.java public interface PersonDao { public void savePerson(); } PersonDaoImpl.java public class PersonDaoImpl implements PersonDao{ public void save