spring+struts+ibatis

来源:互联网 发布:sql read committed 编辑:程序博客网 时间:2024/06/05 11:09

原来的系统里面只采用了struts的框架,并且没有使用struts的校验功能,为方便开发,修改框架为spring+struts+ibatis组合
1、添加需要的jar文件
2、添加spring配置文件applicationContext.xml,内容如下
<?xml version="1.0" encoding="gb2312"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
    <bean id="transactionManager"     <property name="dataSource" ref="dataSource"/>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="query*" read-only="true"/>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="ibatisBoOperation" expression="execution(* com.test.IbatisBaseBO.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="ibatisBoOperation"/>
    </aop:config>
   
       
    <bean id="dataSource"     <property name="jndiName">
            <value><--JNDI数据源名称--></value>
        </property>
    </bean>
   
    <bean id="sqlMapClient"     <property name="configLocation" value="WEB-INF/sqlmap-config.xml" />
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="commonDao"     <property name="sqlMapClient" ref="sqlMapClient"/>
    </bean>
   
    <bean id="exampleBO"     <property name="dao" ref="commonDao"/>
        <property name="extend" value="9014"/>
    </bean>
    <bean name="/Example"     <property name="bo" ref="exampleBO"/>
    </bean>
</beans>
3、添加ibatis的配置文件sqlmap-config.xml,因为整合在spring中,因此内容很简单
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
<sqlMap resource="com/test/DemoMap.xml"/>
</sqlMapConfig>
4、添加校验资源文件MessageResources.properties
5、修改struts-config.xml文件,增加spring的插件
<message-resources parameter="resource.MessageResources" />
<message-resources key="test" parameter="com.test.TestMessage"></message-resources>
   
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation" value="/WEB-INF/classes/resource/applicationContext.xml"/>
</plug-in>
   
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
   <set-property
       property="pathnames"
       value="/org/apache/struts/validator/validator-rules.xml,
              /com/test/TestValidation.xml"/>
</plug-in>
增加这些配置后,将原来的type改为使用spring的代理
     <action path="/TestInit" forward="test/TestInit.jsp"></action>
    <action path="/Example" type="org.springframework.web.struts.DelegatingActionProxy"
        name="testForm" scope="request" validate="true" input="test/Example.jsp">
        <forward name="cancel" path="test/DemoTest.jsp"/>
    </action>
6、修改web.xml文件,增加spring的上下文监听器和文件目录配置
    <context-param>
    <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
     <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
7、增加基础类
IbatisBaseDao用来完成基本操作
public abstract class IbatisBaseDao extends SqlMapClientDaoSupport{
    public abstract void insert(String stat,Object obj) throws DataAccessException;
    public abstract void delete(String stat,Object obj) throws DataAccessException;
    public abstract void update(String stat,Object obj) throws DataAccessException;
    public abstract List queryForList(String stat,Object obj) throws DataAccessException;
    public abstract Object queryForObject(String stat,Object obj) throws DataAccessException;
}
IbatisBaseBo完成业务逻辑处理
public abstract class IbatisBaseBO {
    protected IbatisBaseDao dao;

    public void setDao(IbatisBaseDao dao) {
        this.dao = dao;
    }
    public abstract void update(Object obj) throws Exception;
    public abstract void insert(Object obj) throws Exception;
    public abstract Object queryForObject(Object obj) throws Exception;
    public abstract List queryForList(Object obj) throws Exception;
    public abstract void delete(Object obj) throws Exception;
    public abstract void transOperation(Object[] obj)throws Exception;//多对象事务处理
}
IbatisBaseAction完成页面请求转发,继承原有的基础类
public abstract class IbatisBaseAction extends BaseAction {
    protected IbatisBaseBO bo;

    public abstract ActionForward process(ActionMapping mapping, BaseForm form, HttpServletRequest request, HttpServletResponse response) throws Exception;

    public void setBo(IbatisBaseBO bo){
        this.bo = bo;
    }
    public IbatisBaseBO getBo(){
        return bo;
    }
}
完成修改后,在开发新功能的过程中,需要完成如下内容
1、XxxMap.xml,完成ibatis内容的编写,增删改查等
2、增加资源文件,提供对页面出错信息以及显示内容的国际化处理
3、增加校验文件,提供对输入的检查,这个不是必需的,视情况而定
5、完成struts-config.xml和applicationContext.xml的配置
6、继承新增的基础类,完成业务处理程序

原创粉丝点击