日历

2008 7.9 Wed
  12345
6789101112
13141516171819
20212223242526
2728293031  
«» 2008 - 7 «»

文章搜索

日志文章

2008年01月13日 22:22:31

struts与spring整合

下面记录下struts与spring的整合.这里主要用的方法是使用spring的DelegatingRequestProcessor类覆盖struts的RequestProcessor类.这种方法的好处便是将struts与spring分离,降低耦合度.
OK,下面开始吧!先简单介绍下体系结构.
有一个业务接口,org.hj.intdao.IUserDao.java
简单代码如下:

Copy code

package org.hj.intdao;
public interface IUserDao {
public boolean adduser(String name,String pwd);
}


有一个实现IUserDao的类,org.hj.dao.UserDao.java
简单代码如下:
Copy code

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类,
Copy code

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配置文件.
Copy code

<?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
Copy code

<?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




Tags: ssh  

类别: ssh |  评论(5) |  浏览(1673) |  收藏
5楼 [匿名]My Name 2008年01月16日 10:33:09 Says:
My Comments
4楼 [匿名]My Name 2008年01月16日 10:31:54 Says:
My Comments
3楼 [匿名]silver 2008年01月16日 10:30:14 Says:
silvert29
2楼 [匿名]1 2008年01月16日 10:29:44 Says:
1
发表评论