<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    整合iBATIS和Spring在WEB開發中的應用(轉)

    原文:http://www.ruanxun.com/HArticle86951.aspx

    本文將以一個實際例子來講解整合iBATIS和Spring在WEB開發中的應用。在例子中,將應用DAO,FACADE這些常用的設計模式。

    1、需求說明

        假定我們要實現一個用戶注冊和登錄的需求。注冊時將用戶信息保存到數據庫,登錄時使用注冊的信息進行校驗。


    2、數據庫設計

        我們建2個表,一個存放基本的用戶信息(T_USERS),一個放附加的信息(T_USER_INFO)。這2個表是1對1的關系,其實可以只建一個表,但在實際的開發中,我們常常會把它們拆分,把常用的信息放到主表中,不常用的放到輔表中,這樣可以提升性能。本文使用的數據庫是ORACLE,表結構如下:

    T_USERS 用戶信息主表
    字段名 字段說明 字段類型
    userid 用戶在系統中的流水號,為PRIMARY KEY NUMBER(6,0) NOT NULL
    ualias 用戶別名,在登錄時輸入的名字 VARCHAR2(20) NOT NULL
    password 密碼 VARCHAR2(30) NULL
    realname 真實姓名 VARCHAR2(20) NULL
    email email VARCHAR2(30) NOT NULL
    usertypeid 用戶類型 CHAR(2) NOT NULL
    SQL
    CREATE TABLE T_USERS (
      userid NUMBER(6,0) NOT NULL,
      usertypeid CHAR(2) NOT NULL,
      ualias VARCHAR2(20) NOT NULL,
      password VARCHAR2(30) NULL,
      email VARCHAR2(30) NOT NULL,
      realname VARCHAR2(20) NULL
    );
    CREATE UNIQUE INDEX XAK1T_USERS ON T_USERS
    (  ualias ASC );
    CREATE UNIQUE INDEX XAK2T_USERS ON T_USERS
    ( email ASC );
    ALTER TABLE T_USERS ADD ( PRIMARY KEY (userid) ) ;

    T_USER_INFO 用戶信息輔表
    字段名 字段說明 字段類型
    userid 用戶在系統中的流水號為KEY NUMBER(6,0) NOT NULL
    regdate 注冊日期 DATE NULL
    lastlogdate 最近一次登錄日期 DATE NULL
    logtimes 登錄次數 NUMBER(6) NULL
    SQL
    CREATE TABLE T_USER_INFO (
        userid NUMBER(6,0) NOT NULL,
        regdate DATE NULL,
        lastlogdate DATE NULL,
        logtimes NUMBER(6) NULL
    );
    ALTER TABLE T_USER_INFO ADD ( PRIMARY KEY (userid) ) ;
    ALTER TABLE T_USER_INFO ADD ( FOREIGN KEY (userid) REFERENCES T_USERS ) ;



    SEQUENCE Sequence_userid 用戶流水號產生
    SQL
    CREATE SEQUENCE Sequence_userid
    INCREMENT BY 1
    START WITH 1
    MAXVALUE 999999
    MINVALUE 1
    NOCYCLE
    NOORDER
    ;


     

    3、構建源代碼包目錄

      com(1)
        |-wysm(2)
          |-netstar(3)
            |-domain(4) (POJO)
            |-persistence(4) (持久化層)
              |-iface(5) (DAO 接口)
              |-sqlmapdao(5) (iBATIS DAO實現)
                |-sql(6) (iBATIS sqlmap定義文件)
            |-service(4) (FACADE接口)
              |-ibatis(5) (FACADE iBATIS實現)
           |-test(4)(JAVA環境測試)


    4、iBATIS sqlmap定義

    com.wysm.netstar.persistence.sqlmapdao.sql/sql-map-config.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
      <properties resource="com/wysm/netstar/properties/database.properties"/>
      <transactionManager type="JDBC">
        <dataSource type="SIMPLE">
          <property value="${driver}" name="JDBC.Driver"/>
          <property value="${url}" name="JDBC.ConnectionURL"/>
          <property value="${username}" name="JDBC.Username"/>
          <property value="${password}" name="JDBC.Password"/>
        </dataSource>
      </transactionManager>
      <sqlMap resource="com/wysm/netstar/persistence/sqlmapdao/sql/User.xml"/>
      <sqlMap resource="com/wysm/netstar/persistence/sqlmapdao/sql/Sequence.xml"/>
      <sqlMap resource="com/wysm/netstar/persistence/sqlmapdao/sql/UserInfo.xml"/>
    </sqlMapConfig>
     
    數據庫連接屬性文件 com.wysm.netstar.properties.database.properties
    ####################################
    # Database Connectivity Properties
    ####################################
    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@localhost:1521:ORA92SER
    username=netstar
    password=netstar
     
     
    com.wysm.netstar.persistence.sqlmapdao.sql/Sequence.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMap namespace="Sequence">
      <select id="getSequenceUserId" resultClass="int">
        select sequence_userid.nextval from dual
      </select>
    </sqlMap>
     
    com.wysm.netstar.persistence.sqlmapdao.sql/User.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMap namespace="User">
    <typeAlias alias="user" type="com.wysm.netstar.domain.User"/>
    <select id="getUserByUserAlias" resultClass="user" parameterClass="string">
      SELECT
        USERID as userId,
        UALIAS as userAlias,
        PASSWORD as password,
        REALNAME as realName,
        EMAIL as email,
        USERTYPEID as userTypeId
      FROM T_USERS
      WHERE UALIAS = #userAlias#
    </select>
    <select id="getUserByUserAliasAndPassword" resultClass="user" parameterClass="user">
      SELECT
        USERID as userId,
        UALIAS as userAlias,
        PASSWORD as password,
        REALNAME as realName,
        EMAIL as email,
        USERTYPEID as userTypeId
      FROM T_USERS
      WHERE UALIAS = #userAlias# AND
        PASSWORD = #password#
    </select>
    <select id="getUserByEmail" resultClass="user" parameterClass="string">
      SELECT
        USERID as userId,
        UALIAS as userAlias,
        PASSWORD as password,
        REALNAME as realName,
        EMAIL as email,
        USERTYPEID as userTypeId
      FROM T_USERS
      WHERE EMAIL=#email#
    </select>
    <update id="updateUser" parameterClass="user">
      UPDATE T_USERS SET
        UALIAS= #userAlias#,
        PASSWORD=#password#,
        REALNAME=#realName#,
        EMAIL = #email#,
        USERTYPEID = #userTypeId#
      WHERE USERID = #userId#
    </update>
    <insert id="insertUser" parameterClass="user">
      INSERT INTO T_USERS
        (USERID,
          UALIAS,
          PASSWORD,
          REALNAME,
          EMAIL,
          USERTYPEID)
        VALUES
          (#userId#, #userAlias#,#password#,#realName#, #email#, #userTypeId#)
    </insert>
    <delete id="deleteUser" parameterClass="int">
    DELETE FROM T_USERS
      WHERE USERID=#userId#
    </delete>
    <select id="existUserId" parameterClass="int">
    select count(*) FROM T_USERS
      WHERE USERID=#userId#
    </select>
    </sqlMap>
    com.wysm.netstar.persistence.sqlmapdao.sql/UserInfo.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMap namespace="User">
    <typeAlias alias="userInfo" type="com.wysm.netstar.domain.UserInfo"/>
    <select id="getUserInfoByUserId" resultClass="userInfo" parameterClass="int">
      SELECT
        USERID,
        REGDATE,
        LASTLOGDATE,
        LOGTIMES
        FROM T_USER_INFO
      WHERE USERID = #userId#
    </select>
    <update id="updateUserInfo" parameterClass="userInfo">
      UPDATE T_USER_INFO SET
        REGDATE= #regDate#,
        LASTLOGDATE=#lastLogDate#,
        LOGTIMES=#logTimes#
      WHERE USERID = #userId#
    </update>
    <insert id="insertUserInfo" parameterClass="userInfo">
      INSERT INTO T_USER_INFO
        (USERID,
        REGDATE,
        LASTLOGDATE,
        LOGTIMES)
      VALUES
        (#userId#, #regDate#,#lastLogDate#,#logTimes#)
    </insert>
    <delete id="deleteUserInfo" parameterClass="int">
      DELETE FROM T_USER_INFO
        WHERE USERID=#userId#
    </delete>
    </sqlMap>

     

    5、POJO定義

    com.wysm.netstar.domain.User.java
    package com.wysm.netstar.domain;

    import java.io.*;

    public class User implements Serializable {
        private Integer userId;
        private String userAlias;
        private String password;
        private String realName;
        private String email;
        private String userTypeId;
        public User() {
        }

        public User(Integer userId) {
            this.userId=userId;
        }

        public User(String userAlias) {
            this.userAlias=userAlias;
        }

        public User(String userAlias,String password) {
            this.userAlias=userAlias;
            this.password=password;
        }

        public void setUserId(Integer userId) {
            this.userId = userId;
        }

        public void setUserAlias(String userAlias) {
            this.userAlias = userAlias;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public void setUserTypeId(String userTypeId) {

            this.userTypeId = userTypeId;
        }

        public void setRealName(String realName) {
            this.realName = realName;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public Integer getUserId() {
            return userId;
        }

        public String getUserAlias() {
            return userAlias;
        }

        public String getPassword() {
            return password;
        }

        public String getUserTypeId() {

            return userTypeId;
        }

        public String getRealName() {
            return realName;
        }

        public String getEmail() {
            return email;
        }
    }
     


    com.wysm.netstar.domain.UserInfo.java
    package com.wysm.netstar.domain;
    import java.util.*;
    import java.io.Serializable;
    public class UserInfo implements Serializable {
        private Integer userId;
        private Date regDate;
        private Date lastLogDate;
        private Integer logTimes;
        public UserInfo() {
        }
        public void setUserId(Integer userId) {
            this.userId = userId;
        }
        public void setRegDate(Date regDate) {
            this.regDate = regDate;
        }
        public void setLastLogDate(Date lastLogDate) {
            this.lastLogDate = lastLogDate;
        }
        public void setLogTimes(Integer logTimes) {
            this.logTimes = logTimes;
        }
        public Integer getUserId() {
            return userId;
        }
        public Date getRegDate() {
            return regDate;
        }
        public Date getLastLogDate() {
            return lastLogDate;
        }
        public Integer getLogTimes() {
            return logTimes;
        }
    }


     

    6、DAO接口定義

    com.wysm.netstar.persistence.iface.BaseDao.java
    package com.wysm.netstar.persistence.iface;
    public interface BaseDao {
    }
     


    com.wysm.netstar.persistence.iface.SequenceDao.java
    package com.wysm.netstar.persistence.iface;
    public interface SequenceDao extends BaseDao {
        Integer getSequenceUserId();
    }



    com.wysm.netstar.persistence.iface.UserDao.java
    package com.wysm.netstar.persistence.iface;

    import com.wysm.netstar.domain.User;
    import java.util.List;

    public interface UserDao extends BaseDao  {
        public abstract List getUser(String userAlias);
        public abstract List getUserByEmail(String email);
        public abstract List getUser(String userAlias,String password);
        public abstract void insertUser(User user);
        public abstract void updateUser(User user);
        public abstract boolean existUserId(Integer userid);
    }


    com.wysm.netstar.persistence.iface.UserInfoDao.java
    package com.wysm.netstar.persistence.iface;

    import com.wysm.netstar.domain.UserInfo;

    public interface UserInfoDao extends BaseDao  {
        public abstract UserInfo getUserInfo(Integer userId);
        public abstract void insertUserInfo(UserInfo userInfo);
        public abstract void updateUserInfo(UserInfo userInfo);
    }
     


     

    7、DAO iBATIS實現

    com.wysm.netstar.persistence.sqlmapdao.BaseSqlMapDao.java
    package com.wysm.netstar.persistence.sqlmapdao;
    import com.ibatis.dao.client.DaoManager;
    import com.ibatis.dao.client.template.SqlMapDaoTemplate;
    public class BaseSqlMapDao extends SqlMapDaoTemplate {
      protected static final int PAGE_SIZE = 4;
      public BaseSqlMapDao(DaoManager daoManager) {
        super(daoManager);
      }
    }
     


    com.wysm.netstar.persistence.sqlmapdao.SequenceSqlMapDao.java
    package com.wysm.netstar.persistence.sqlmapdao;
    import com.ibatis.dao.client.DaoManager;
    import com.wysm.netstar.persistence.iface.SequenceDao;
    public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {
      public SequenceSqlMapDao(DaoManager daoManager) {
        super(daoManager);
      }
      public Integer getSequenceUserId(){
          return (Integer)queryForObject("getSequenceUserId",new Object());
      }
    }
     
     


    com.wysm.netstar.persistence.sqlmapdao.UserSqlMapDao.java
    package com.wysm.netstar.persistence.sqlmapdao;
    import com.ibatis.dao.client.DaoManager;
    import com.wysm.netstar.domain.User;
    import com.wysm.netstar.persistence.iface.UserDao;
    import java.util.List;
    import org.apache.log4j.Logger;
    public class UserSqlMapDao extends BaseSqlMapDao implements UserDao {
        static Logger logger=Logger.getLogger(UserSqlMapDao.class);
      public UserSqlMapDao(DaoManager daoManager) {
        super(daoManager);
        logger.debug("In UserSqlMapDao daoManager null="+(daoManager==null));
      }
      public List getUser(String userAlias){
          return queryForList("getUserByUserAlias",userAlias);
      }
      public List getUser(String userAlias,String password){
          User user=new User(userAlias,password);
          return queryForList("getUserByUserAliasAndPassword",user);
      }
      public void insertUser(User user){
          update("insertUser", user);
      }
      public void updateUser(User user){
          update("updateUser", user);
      }
      public List getUserByEmail(String email){
          return queryForList("getUserByEmail",email);
      }
      public boolean existUserId(Integer userid){
          Integer cnt=(Integer)this.queryForObject("existUserId",userid);
          return  cnt.intValue()>0;
      }
    }
     
     


    com.wysm.netstar.persistence.sqlmapdao.UserInfoSqlMapDao.java
    package com.wysm.netstar.persistence.sqlmapdao;
    import com.ibatis.dao.client.DaoManager;
    import com.wysm.netstar.persistence.iface.UserInfoDao;
    import com.wysm.netstar.domain.UserInfo;
    public class UserInfoSqlMapDao extends BaseSqlMapDao implements UserInfoDao {
      public UserInfoSqlMapDao(DaoManager daoManager) {
        super(daoManager);
      }
      public UserInfo getUserInfo(Integer userId){
          return (UserInfo)queryForObject("getUserInfoByUserId",userId);
      }
      public void insertUserInfo(UserInfo userInfo){
          update("insertUserInfo", userInfo);
      }
      public void updateUserInfo(UserInfo userInfo){
          update("insertUserInfo", userInfo);
      }
    }
     


     

    8、Facade接口定義

    com.wysm.netstar.persistence.sqlmapdao.UserInfoSqlMapDao.java
    package com.wysm.netstar.service;
    import com.wysm.netstar.domain.User;
    public interface UserService {
        public void addNewUser(User user);//增加新用戶
        public boolean existUserAlias(String userAlias);//檢查用戶別名是否已經存在
        public User existUser(String userAlias,String password);//用戶密碼驗證
        public boolean existEmail(String email);//檢查EMAIL是否已經存在
        public boolean existUserId(Integer userId);//用戶流水號驗證
    }

     


     

    9、FACADE實現

    com.wysm.netstar.service.ibatis.UserServiceImpl.java
    package com.wysm.netstar.service.ibatis;
    import java.util.*;
    import org.apache.log4j.*;
    import com.ibatis.dao.client.*;
    import com.wysm.netstar.domain.*;
    import com.wysm.netstar.persistence.iface.*;
    import com.wysm.netstar.service.*;
    public class UserServiceImpl implements UserService {
        private UserDao userDao;
        private SequenceDao sequenceDao;
        private UserInfoDao userInfoDao;
        private DaoManager daoMgr;
        static Logger logger=Logger.getLogger(UserServiceImpl.class);
        public UserServiceImpl() {
    //        daoMgr = DaoConfig.getDaoManager();
    //        this.userDao=(UserDao)daoMgr.getDao(UserDao.class);
        }
        private void initDaos(){
            if (userDao==null){
                this.userDao=(UserDao)daoMgr.getDao(UserDao.class);
                this.sequenceDao=(SequenceDao)daoMgr.getDao(SequenceDao.class);
                this.userInfoDao=(UserInfoDao)daoMgr.getDao(UserInfoDao.class);
            }
        }
        public void addNewUser(User user){
            Integer id=sequenceDao.getSequenceUserId();
            user.setUserId(id);
            UserInfo userInfo=new UserInfo();
            userInfo.setUserId(id);
            userInfo.setLastLogDate(null);
            userInfo.setLogTimes(new Integer(0));
            userInfo.setRegDate(new Date());
            try{
                daoMgr.startTransaction();
                userDao.insertUser(user);
                userInfoDao.insertUserInfo(userInfo);
                daoMgr.commitTransaction();
            }catch(Exception ex){
                ex.printStackTrace();
            }finally{
                daoMgr.endTransaction();
            }
        }
        public boolean existUserAlias(String userAlias){
            List users=userDao.getUser(userAlias);
            if (users!=null&&users.size()>0)
                return true;
            return false;
        }
        public User existUser(String userAlias,String password){
            List users=userDao.getUser(userAlias,password);
            if (users!=null&&users.size()>0)
                return (User)users.get(0);
            return null;
        }
        public boolean existEmail(String email){
            List users=userDao.getUserByEmail(email);
            if (users!=null&&users.size()>0)
                return true;
            return false;
        }
        public void setDaoMgr(DaoManager daoMgr) {
            this.daoMgr = daoMgr;
        }

        public void setSequenceDao(SequenceDao sequenceDao) {
            this.sequenceDao = sequenceDao;
        }
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        public void setUserInfoDao(UserInfoDao userInfoDao) {
            this.userInfoDao = userInfoDao;
        }
        public boolean existUserId(Integer userId){
            if (userId.intValue()==0)
                return false;
            return userDao.existUserId(userId);
        }
    }

     

    10、iBATIS DAO支持定義

    com.wysm.netstar.persistence/dao.xml
    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE daoConfig
        PUBLIC "-//ibatis.apache.org//DTD DAO Configuration 2.0//EN"
        "http://ibatis.apache.org/dtd/dao-2.dtd">

    <daoConfig>

      <context>

        <transactionManager type="SQLMAP">
          <property name="SqlMapConfigResource"
            value="com/wysm/netstar/persistence/sqlmapdao/sql/sql-map-config.xml"/>
        </transactionManager>

        <dao interface="com.wysm.netstar.persistence.iface.UserDao"
          implementation="com.wysm.netstar.persistence.sqlmapdao.UserSqlMapDao"/>

        <dao interface="com.wysm.netstar.persistence.iface.SequenceDao"
          implementation="com.wysm.netstar.persistence.sqlmapdao.SequenceSqlMapDao"/>

        <dao interface="com.wysm.netstar.persistence.iface.UserInfoDao"
          implementation="com.wysm.netstar.persistence.sqlmapdao.UserInfoSqlMapDao"/>

      </context>

    </daoConfig>
     
    com.wysm.netstar.persistence.DaoConfig.java
    package com.wysm.netstar.persistence;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.dao.client.DaoManager;
    import com.ibatis.dao.client.DaoManagerBuilder;
    import java.io.Reader;
    import java.util.Properties;
    import org.apache.log4j.Logger;
    public class DaoConfig {
      private static final String resource = "com/wysm/netstar/persistence/dao.xml";
      private static final DaoManager daoManager;
      static Logger logger=Logger.getLogger(DaoConfig.class);
      static {
        try {
          daoManager = newDaoManager(null);
        } catch (Exception e) {
          throw new RuntimeException("Description.  Cause: " + e, e);
        }
      }
      public static DaoManager getDaoManager() {
        return daoManager;
      }
      public static DaoManager newDaoManager(Properties props) {
        try {
          Reader reader = Resources.getResourceAsReader(resource);
          return DaoManagerBuilder.buildDaoManager(reader, props);
        } catch (Exception e) {
          throw new RuntimeException("Could not initialize DaoConfig.  Cause: " + e, e);
        }
      }
    }
     

     

    11、Spring Bean定義文件

    applicationContext.xml這個文件應該放在WEB包的 WEB-INF/下
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>
    <bean id="daoManager" class="com.wysm.netstar.persistence.DaoConfig" factory-method = "getDaoManager"/>

         <bean id="sequenceDao" class="com.wysm.netstar.persistence.iface.SequenceDao" factory-bean = "daoManager" factory-method="getDao">
            <constructor-arg>
                <value>com.wysm.netstar.persistence.iface.SequenceDao</value>
            </constructor-arg>
    </bean>

        <bean id="userDao" class="com.wysm.netstar.persistence.iface.UserDao" factory-bean = "daoManager" factory-method="getDao">
            <constructor-arg>
                <value>com.wysm.netstar.persistence.iface.UserDao</value>
            </constructor-arg>
        </bean>

        <bean id="userInfoDao" class="com.wysm.netstar.persistence.iface.UserInfoDao" factory-bean = "daoManager" factory-method="getDao">
            <constructor-arg>
                <value>com.wysm.netstar.persistence.iface.UserInfoDao</value>
            </constructor-arg>
        </bean>

       <bean name="userService" class="com.wysm.netstar.service.ibatis.UserServiceImpl" singleton="false">
            <property name="daoMgr">
                <ref bean="daoManager"/>
            </property>
            <property name="sequenceDao">
                <ref bean="sequenceDao"/>
            </property>
            <property name="userDao">
                <ref bean="userDao"/>
            </property>
            <property name="userInfoDao">
                <ref bean="userInfoDao"/>
            </property>
        </bean>

        <bean name="userService" class="com.wysm.netstar.service.ibatis.UserServiceImpl" singleton="false">
            <property name="daoMgr">
                <ref bean="daoManager"/>
            </property>
            <property name="sequenceDao">
                <ref bean="sequenceDao"/>
            </property>
            <property name="userDao">
                <ref bean="userDao"/>
            </property>
            <property name="useInfoDao">
                <ref bean="useInfoDao"/>
            </property>
        </bean>

    </beans>
     
     

     

    12、在JAVA環境下測試以上內容

    com.wysm.netstar.test.SpringTestCase.java
    package com.wysm.netstar.test;
    import junit.framework.TestCase;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    import com.wysm.netstar.actions.CatalogAction;
    import com.wysm.netstar.service.UserService;
    import com.wysm.netstar.domain.Catalog;
    import java.util.List;
    public class SpringTestCase extends TestCase {
        private UserService userService;
        private Catalog catalog;
        protected void setUp() throws Exception {
            super.setUp();
            ApplicationContext ctx=new FileSystemXmlApplicationContext( "D:/JBProject/NetStarv0.1/netstar/WEB-INF/applicationContext.xml");
            userService =(UserService)ctx.getBean("UserService");
        }
        protected void tearDown() throws Exception {
            super.tearDown();
        }
        public void testSave(){
            //自己寫測試代碼
        }
    }
     

     

    posted on 2006-02-25 16:02 都市淘沙者 閱讀(557) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产成人啪精品视频免费网| 亚洲不卡中文字幕无码| 亚洲国产成人精品久久久国产成人一区二区三区综 | 在线免费一区二区| 亚洲精品午夜无码电影网| 亚洲另类春色校园小说| 久青草视频97国内免费影视| 成年女人毛片免费视频| 亚洲国产精品自在线一区二区| 青青免费在线视频| 成年女人毛片免费播放人| 在线观看日本亚洲一区| 69精品免费视频| 亚洲成AV人片一区二区| 久久午夜羞羞影院免费观看| 中文字幕日韩亚洲| 亚洲变态另类一区二区三区 | 三年片在线观看免费大全 | 222www在线观看免费| 亚洲精品乱码久久久久久自慰| 成全在线观看免费观看大全| 亚洲精品国产福利一二区| 色欲aⅴ亚洲情无码AV蜜桃| 美女被免费喷白浆视频| 亚洲天堂一区二区| 国产免费久久精品99re丫y| 国产成人精品亚洲| 国产美女精品视频免费观看| h在线看免费视频网站男男| 日批日出水久久亚洲精品tv| 日韩在线视精品在亚洲| 成人免费无码精品国产电影| 337P日本欧洲亚洲大胆精品| 久久久久亚洲AV成人网人人网站 | 国产精品黄页免费高清在线观看 | 亚洲Av高清一区二区三区| 67194国产精品免费观看| 亚洲av日韩av永久在线观看 | 亚洲av无码国产综合专区| 少妇亚洲免费精品| 四虎最新永久免费视频|