正在加载图片...
return mapping. findForward(success") 在(1)处,通过从 Spring的 Action Support类而不是 Struts的 Action类进行扩展, 创建了一个新的 Action。在(2)处,使用 getWebApplication Context0方法获得一个 Application Context。为了获得业务服务,使用在(2)处获得的环境在(3)处査找一个 Spring beane 这种技术很简单并且易于理解。不幸的是,它将 Struts动作与 Spring框架耦合在 起。如果您想替换掉 Spring,那么您必须重写代码。并且,由于 Struts动作不在 Spring 的控制之下,所以它不能获得 Spring aoP的优势。当使用多重独立的 Spring环境时, 这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。 窍门2.覆盖 RequestProcessor 将 Spring从 Struts动作中分离是一个更巧妙的设计选择。分离的一种方法是使用 org. springframework.web. struts. DelegatingRequestProcessor类来覆盖 Struts的 RequestProcessor处理程序,如清单2所示: 清单2.通过 Spring的 DelegatingRequestProcessor进行整合 <?xml version="1.0 encoding="IS0-8859-1" ?> <! DOCTYPE struts-config PUBLIC -//Apache Software Foundation//DTD Struts Configuration 11//EN http://jakarta.apacheorg/struts/dtds/struts-config_1l.dtd> <struts-config> <form-beans> <form-bean name=" searchForm type="org. apache. struts. validator. DynavalidatorForm"> <form-property name="isbn" type="java. lang. String"/>return mapping.findForward("success"); } } 在 (1) 处,通过从 Spring 的 ActionSupport 类而不是 Struts 的 Action 类进行扩展, 创建了一个新的 Action。在 (2) 处,使用 getWebApplicationContext() 方法获得一个 ApplicationContext。为了获得业务服务,使用在 (2) 处获得的环境在 (3) 处查找一个 Spring bean。 这种技术很简单并且易于理解。不幸的是,它将 Struts 动作与 Spring 框架耦合在 一起。如果您想替换掉 Spring,那么您必须重写代码。并且,由于 Struts 动作不在 Spring 的控制之下,所以它不能获得 Spring AOP 的优势。当使用多重独立的 Spring 环境时, 这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。 窍门 2. 覆盖 RequestProcessor 将 Spring 从 Struts 动作中分离是一个更巧妙的设计选择。分离的一种方法是使用 org.springframework.web.struts.DelegatingRequestProcessor 类来覆盖 Struts 的 RequestProcessor 处理程序,如清单 2 所示: 清单 2. 通过 Spring 的 DelegatingRequestProcessor 进行整合 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="searchForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="isbn" type="java.lang.String"/>
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有