SSH框架中spring整合struts2三种技术方式

来源:互联网 发布:js 里面加载js 编辑:程序博客网 时间:2024/06/06 10:42
1. 使用 Spring 的 ActionSupport 类整合 Structs
2. 使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor

3. 将 Struts Action 管理委托给 Spring 框架

无论使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的
ActionServlet 装载 Spring 应用程序环境。就像添加任何其他插件一样,简单地向您的
struts-config.xml 文件添加该插件,如下所示:

<plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"value="/WEB-INF/beans.xml" /></plug-in>

窍门1. 使用 Spring 的 ActionSupport

步骤:
1. Action 直接继承ActionSupport
2. 使用ApplicationContext ctx = getWebApplicationContext();取得Spring 上下文
3. 取得相应Bean

//1继承ActionSupportpublic class SearchSubmit extends ActionSupport {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {// 2.使用ApplicationContext ctx = getWebApplicationContext();取得Spring上下文ApplicationContext ctx = getWebApplicationContext();// 3.取得相应BeanBookService bookService =(BookService) ctx.getBean("bookService");}}

窍门 2. 覆盖 RequestProcessor

步骤:
1. Action 中,使用IOC 获得服务,配置struts-config.xml:

<!-- 一个普通的Action--><action path="/searchSubmit"type="ca.nexcel.books.actions.SearchSubmit"input="/searchEntry.do"validate="true" name="searchForm"><forward name="success" path="/WEB-INF/pages/detail.jsp" /><forward name="failure" path="/WEB-INF/pages/search.jsp" /></action><!-- 利用了 <controller> 标记来用 DelegatingRequestProcessor覆盖默认的Struts RequestProcessor --><controllerprocessorClass="org.springframework.web.struts.DelegatingRequestProcessor" />

2. Spring 配置文件中注册该动作:

<bean id="bookService"class="ca.nexcel.books.business.BookServiceImpl" /><bean name="/searchSubmit"class="ca.nexcel.books.actions.SearchSubmit"><property name="bookService"><ref bean="bookService" /></property></bean>

3. 写具有 JavaBean 属性的 Struts 动作:

public class SearchSubmit extends Action {// 一个Service属性private BookService bookService;// getter...public BookService getBookService() {return bookService;}// setter...public void setBookService(BookService bookService) {this.bookService = bookService;}public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {// 调用bookService,不需要newBook book = getBookService().read(isbn.trim());}}

窍门 3. 将动作管理委托给 Spring

步骤:
1. Action 中,使用IOC 获得服务,配置struts-config.xml:

<!-- 一个Action 注意其type Spring 代理类 --><action path="/searchSubmit"type="org.springframework.web.struts.DelegatingActionProxy"input="/searchEntry.do" validate="true" name="searchForm"><forward name="success" path="/WEB-INF/pages/detail.jsp" /><forward name="failure" path="/WEB-INF/pages/search.jsp" /></action>

2. Spring 配置文件中注册该动作:
<bean id="bookService"class="ca.nexcel.books.business.BookServiceImpl" /><bean name="/searchSubmit"class="ca.nexcel.books.actions.SearchSubmit"><property name="bookService"><ref bean="bookService" /></property></bean>


原创粉丝点击