struts2+spring+ibatis框架整合

开发工具 Eclipse 3.3 Tomcat 6.0
运行坏境 Window XP
实现效果 Ajax
涉及框架 Struts2ibatis Spring JQuery
准备 Jar
commons-collections.jar
commons-dbcp.jar
commons-fileupload-1.2.jar
commouns-logging-1.04.jar
freemarker-2.3.8.jar
ibatis-2.3.677.jar
json.jar
json-lib-21.1.jar
mysql-connector.jar
ognl-2.6.1.1.jar
spring.jar
struts2-core-2.1.8.1.jar
struts2-json-plungin-2.1.8.jar
struts2-junit-plugin-2.1.8.1.jar
struts-spring-plugin-2.1.8.1.jar
xwork-core-2.1.6.jar

第一步加入上述jar

下面跟我做一个简单的登陆例子来明白整个框架的运行过程。
首先数据库以mysql 为例
数据库 : test
表名:t_user

SQL 语句

createtable t_user 

(

    id int primary key auto_increment not null,

    name varchar(20) not null

);

 


第二步配置strtus.xml

<struts>

    <!-- 产生对象从spring 配置文件中读取   -->

   <constantname="struts.objectFactory"value="org.apache.struts2.spring.StrutsSpringObjectFactory" />

    <package name="ajax"extends="json-default">

        <action name="ajaxRequest"   class="loginAction">

            <result type="json"name="success">

                <paramname="includeProperties">

                    ajaxRequest\.name

                </param>

           </result>

        </action>

    </package>

</struts>

 

第二步配置 applicationContext.xml WEB-INF 目录下

 <!-- 配置数据源 -->

    <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">

         <propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>        

         <property name="url"value="jdbc:mysql://127.0.0.1:3306/test"/>        

         <property name="username"value="root"/>        

         <property name="password"value="123"/>   

    </bean>

    <!--ibatis 操作对象-->

    <bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

        <propertyname="configLocation">

           <value>/WEB-INF/SqlMapConfig.xml</value> 

        </property>

        <propertyname="dataSource">

            <refbean="dataSource"/>

        </property>

    </bean>

    <!-- 模板页面  -->

    <beanid="sqlMapClientTemplate"class="org.springframework.orm.ibatis.SqlMapClientTemplate">

        <propertyname="sqlMapClient">

            <refbean="sqlMapClient"/>

        </property>

    </bean>

    <!-- 用户DAO -->

    <bean id="UserDAO"class="com.dao.UserDAO">

        <propertyname="sqlMapClientTemplate">

            <reflocal="sqlMapClientTemplate"/>

        </property>

    </bean>

       <!-- spring 集成struts2    -->

        <bean id="loginAction"class="com.web.Login" scope="singleton">

            <propertyname="userDao">

                <refbean="UserDAO" />

            </property>

        </bean>

 

第三步配置 SqlMapConfig.xml WEB-INF 目录下

<sqlMapConfig>

    <sqlMapresource="com/pojo/User.xml"/>     

</sqlMapConfig>

 

建实体类类 com.pojo.User.java
建配置文件com.pojo.User.xml

 

        <sqlMapnamespace="User">

            <typeAliasalias="user" type="com.pojo.User" />

                <selectid="getUser" parameterClass="java.lang.String"  resultClass="user">

                    <![CDATA[

                            select *  from t_user where name = #name#

                        ]]>

                </select>        

           </sqlMap>

 

DAO com.dao.UserDAO 继承 SqlMapClientDaoSupport ,写个简单测试用户的方法

 import java.util.List;

    import com.pojo.User;

    public class UserDAO extendsSqlMapClientDaoSupport {

        public boolean login(User user)

        {

            Listlist=this.getSqlMapClientTemplate().queryForList("getUser",user.getName());

            if(list.size()>0)

                return true;

            return false;

        }

 

    }

 

Action com.web.Login 继承 ActionSupport

 package com.web;

    importorg.springframework.context.ApplicationContext;

    importorg.springframework.context.support.ClassPathXmlApplicationContext;

    import com.dao.UserDAO;

    importcom.opensymphony.xwork2.ActionSupport;

    import com.pojo.User;

    public class Login  extends ActionSupport{

    private String name;

    private UserDAO userDao;

    @Override

    public String execute() throws Exception {

        User user=new User();

            user.setName(this.name);

            String result=null;

            if(userDao.login(user))

            {

                result= "LoginSUCCESS!";   

            }

            else

            {

               result = "The Name is not exists!";   

            }

        HttpServletResponse response =ServletActionContext.getResponse();

        PrintWriter  out= response.getWriter();

        if(out!=null)

        {

                out.write(result);

                out.flush();

                out.close();

        }

        return SUCCESS;

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setUserDao(UserDAO userDao) {

        System.out.println("------setUserDao()------");

        this.userDao = userDao;

    }

   

}

 

第四步配置 web.xml

     <!--struts2 配置 -->

    <filter>

       <filter-name>struts2</filter-name>

       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

    <filter-mapping>

       <filter-name>struts2</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- spring 配置 -->

        <listener>

             <listener-class>

                org.springframework.web.context.ContextLoaderListener

             </listener-class>

    </listener>

    <context-param>

           <param-name>contextConfigLocation</param-name>

            <param-value>

             /WEB-INF/applicationContext.xml

             </param-value>

    </context-param>

 

第五步建个index.jsp页面 ,内容如下:

  <script type="text/javascript"src="js/jquery.min.js"></script>  /// WEB-INF 建个文件夹名为js,jquery.min.js扔进去

  <SCRIPT >

        $(document).ready(function(){

           $("#check").click(function(){                

                $.ajax({

                   type: "POST",

                   url:"ajaxRequest.action",

                   data: "name=" +$("#name").val(),

                   dataType: "html",

                  success : function(ret){

                     alert(ret);

                   }

                });

                 });//click

     });

        </SCRIPT>

        <input name="name"id="name" />

        <input type="button"value="check" id="check" />

 

下面讲下Junit 的使用,它是个测试框架,原理依旧Java 断言机制原理。
添加 Junit 4.*jar ,也可以用esclipse自带的
a. 新建一个HelloWorld.java文件

 

        public class HelloWorld {

            public int test()

            {

                System.out.println("HelloWorld!");

                return 1;

            }

}

 

现在要测试HelloWorld 下的test的方法
b.新建一个test
新建Junit TestCase
Name
一般以Test 打头加上要测试类的名称(例如 TestHelloWorld
还有个Class undertest 就是你要测试的名字要全称
c. 下一步之后要选择你要测试的方法
进入TestHelloWorld ,这个有一个静态导入import static org.junit.Assert.*;
自动会生成test+你选择的方法名(我的例子生成的是public voidtestTest()
按一下你的代码补全(一般是Alt+/)里面有很多测试方法
assertEquals(1,new HelloWorld().test());
鼠标右击,运行Junit Test 绿的就OK
页面中有的地方Unknown macro: 当它不存在好了
13:45 2010-7-22

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值