Spring的Web模块用于整合Web框架,例如Struts1、Struts2、WebWork、JSF等。一个Web程序可能会同时用到多个框架如Struts、Hibernate,多个框架同时工作会增加程序的复杂性。而如果把这些工作交给Spring来统一管理,问题将会简单很多。
如果由Spring统一管理各种框架,由Spring负责实例化,那么Spring就是一个小的容器。框架能够从Spring容器中获取各种资源,包括数据源、DAO对象、Service对象、事务管理者、拦截器等,并能使用Spring的特征如IOC、AOP等,这样程序将会变得相当灵活。这也是Spring框架得到广泛应用的原因。
1 整合Struts 1.x:继承方式
继承org.springframework.web.struts.ActionSupport类
package com.yourcompany.struts.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.ActionSupport;
import interf.IPersonDAO;
public class PersonAction extends ActionSupport { //ActionSupport在Spring3.0以上被抛弃可用spring-webmvc-struts.jar
public IPersonDAO getPersonService(){
return (IPersonDAO) getWebApplicationContext().getBean("IPersonDAO");
}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException {
PersonForm personForm = (PersonForm) form;
IPersonDAO dao=getPersonService();
//Write some code to handle the business.
//dao.dosome();
return null;
}
}
Struts配置文件
和普通Struts 1.x配置文件一样,不需要特别编写代码
<action
attribute="personForm"
input="/form/person.jsp"
name="personForm"
path="/person"
scope="request"
type="com.yourcompany.struts.action.PersonAction">
<set-property property="cancellable" value="true" />
<forward name="list" path="/WEB-INF/project/listPerson.jsp"></forward>
</action>
在web.xml中配置Spring和Struts 1.x
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xml