|
下面记录下struts与spring的整合.这里主要用的方法是使用spring的DelegatingRequestProcessor类覆盖struts的RequestProcessor类.这种方法的好处便是将struts与spring分离,降低耦合度. OK,下面开始吧!先简单介绍下体系结构. 有一个业务接口,org.hj.intdao.IUserDao.java 简单代码如下: package org.hj.intdao; public interface IUserDao { public boolean adduser(String name,String pwd); }
有一个实现IUserDao的类,org.hj.dao.UserDao.java 简单代码如下: package org.hj.dao; import org.hj.intdao.IUserDao; public class UserDao implements IUserDao { public boolean adduser(String name,String pwd){ if(name.equals(pwd)) return true; else return false; } }
下面就是struts中action类,
package org.hj.struts.action; 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.apache.struts.actions.DispatchAction; import org.hj.intdao.IUserDao; import org.hj.struts.form.RegistForm; public class RegistAction extends DispatchAction { //定义一个接口引用,这个属性由spring容器管理,参见spring配置文件 private IUserDao dao; public IUserDao getDao() { return dao; } public void setDao(IUserDao dao) { this.dao = dao; } public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { RegistForm rf = (RegistForm) form; //调用后台业务方法 boolean remark = dao.adduser(rf.getName(), rf.getPwd()); request.setAttribute("name", rf.getName()); if (remark) return mapping.findForward("success"); else return mapping.findForward("fail"); } }
OK, 无论您使用什么方法,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的 ActionServlet 装载 Spring 应用程序环境。就像添加任何其他插件一样,简单地向您的 struts-config.xml 文件添加该插件,如下所示: <plug-in className=“org.springframework.web.struts.ContextLoaderPlugIn”> <set-property property=“contextConfigLocation” value=“/WEB-INF/beans.xml”/> </plug-in> 下面就是struts配置文件.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="registForm" type="org.hj.struts.form.RegistForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action attribute="registForm" input="/regist.jsp" name="registForm" parameter="method" path="/regist" scope="request" type="org.hj.struts.action.RegistAction"> <forward name="success" path="/success.jsp"></forward> <forward name="fail" path="/fail.jsp"></forward> </action> </action-mappings> <!-- 将请求先由spring中的DelegatingRequestProcessor截获 --> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
<message-resources parameter="org.hj.struts.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in> </struts-config>
下面是spring配置文件. applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- name表示在struts配置文件中间的path一致 --> <bean name="/regist" class="org.hj.struts.action.RegistAction"> <property name="dao"> <ref bean="User" /> </property> </bean> <!-- spring管理对应的javabean对象 --> <bean id="User" class="org.hj.dao.UserDao"></bean> </beans>
OK,就这么多,上传份源代码...(由于上传困难,因此删除了lib下的所有jar)
aa_ssh.rar
|
一共有 5 条评论