struts2+spring2+ibatis+dwr配置

第一步,新建基础工程环境:

1、在myEclipse下新建一个web工程,命名为s2siDemo,找到src目录建一个包名为:com.companyName.ssiDemo.user和user包目录下的action、dao、manager、pojo包各一个。

再分别建四个类,如UserAction/UserDao/UserManager/UserBean。

另外再在action目录下建一个ajax包即:com. companyName .ssiDemo.user.action.ajax  后续添加dwr有用。

2、到apace官网下载struts2系列jar包、spring2.0.jar和ibatis.jar包各一个,还有dwr3.jar;放到工程的WebRoot-->WEB-INF-->lib目录下;

3、运行环境:jdk1.6+tomacat6

4、新建一个表用来测试:T_DEMOUSER包含字段:userId, username,pass,sex,address,pictureUri

5、数据库用户名密码:demo/demo



第二步,配置struts2

1、在src目录下新建struts.xml。输入代码:

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

    <!-- 默认的视图主题 -->
    <constant name="struts.ui.theme" value="simple"></constant>

    <!--Struts2集成Spring:所有action对象有Spring来负责创建 -->
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />

    <package name="userpackage" namespace="/user" extends="struts-default">
        <action name="*User" class="userAction" method="{1}">
            <result name="LIST">/user/userInfo.jsp</result>
            <result name="add">/user/addUser.jsp</result>
            <result name="edit">/user/editUser.jsp</result>
        </action>
    </package>
</struts>
2、web.xml文件中配置struts2,代码如下:

    <!-- struts2配置 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


第三步:配置spring

1、在WEB-INF目录下新建一个文件夹properties,再在该文件夹下新建两个文件,分别为config.properties、connect.properties用来填连接池配置

-------------------------------------------------

config.properties代码如下:

------------------------------------------------

fontSize=16

fontSizeQuery=16

pageSize=10

pageSizeTemplate=10

columnShowSize=20

queryTemplateOnFirstLoadEnable=true

timeStampPattern=###.##

phoneNoLength=6

teleCodeEnable=false

showCallerEnable=true

fixedPhoneNo=114

#sms size
smsLength=70

sendMessage=true

startDelay=10000

interval=30000

buffer_startDelay=10000

buffer_interval=20000

dateFormat=yyyy-MM-dd HH:mm:ss


----------------------------------------------------------------------------------------------

connect.properties中输入如下代码:(我这里连的是oracle9i数据库,可以根据实际情况更改driverClassName和url)

------------------------------------------------------------------------------------------------


jdbc_s2siDemo.driverClassName=oracle.jdbc.driver.OracleDriver

jdbc_s2siDemo.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl##根据实际情况修改路径
jdbc_s2siDemo.username=demo
jdbc_s2siDemo.password=demo

 

 

---------------------------------------------------------------------------------------------


2、在WEB-INF目录下新建applicationContext-action.xml和applicationContext-dao.xml两个xml文件

--------------------------------------

applicationContext-action.xml代码如下:

-------------------------------------

<?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="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/WEB-INF/properties/config.properties</value>
            </list>
        </property>
    </bean>

    <!--注入Struts 2的action -->

    <bean id="userAction"
        class="com.
companyName .ssiDemo.user.action.UserAction">
        <property name="userManager">
            <ref bean="userManager" />
        </property>
    </bean>

    <!-- lucene user表涉及的注入 -->
    <bean id="gateWayService"
        class="com.
companyName .ssiDemo.lucene.GateWayService">
        <property name="userService">
            <ref bean="userService" />
        </property>
    </bean>
    <bean id="userService"
        class="com.
companyName .ssiDemo.lucene.user.service.UserService">
        <property name="userCtrlBo">
            <ref bean="userCtrlBo" />
        </property>
        <property name="userManager">
            <ref bean="userManager" />
        </property>
    </bean>
</beans>


------------------------------------------------

applicationContext-dao.xml代码如下:

-----------------------------------------------

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/WEB-INF/properties/connect.properties</value>
                <value>/WEB-INF/properties/config.properties</value>
            </list>
        </property>
    </bean>
    <!-- org.apache.commons.pool.impl.GenericObjectPool -->

    <bean id="ssiDemoDataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName">
            <value>${jdbc_s2siDemo.driverClassName}</value>
        </property>
        <property name="url">
            <value>${jdbc_s2siDemo.url}</value>
        </property>
        <property name="username">
            <value>${jdbc_s2siDemo.username}</value>
        </property>
        <property name="password">
            <value>${jdbc_s2siDemo.password}</value>
        </property>
        <property name="maxActive">
            <value>40</value>
        </property>
        <property name="maxIdle">
            <value>10</value>
        </property>
        <property name="maxWait">
            <value>18000</value>
        </property>
        <property name="defaultAutoCommit">
            <value>false</value>
        </property>
    </bean>
    <bean id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
            <value>/WEB-INF/sql-map-config.xml</value>
        </property>
        <property name="dataSource">
            <ref local="ssiDemoDataSource" />
        </property>
    </bean>
    <!-- 用户模块 -->
    <bean id="userManager"
        class="com.
companyName .ssiDemo.user.manager.UserManager">
        <property name="userDao">
            <ref local="userDao" />
        </property>
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
    </bean>
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="ssiDemoDataSource" />
    </bean>
    <bean id="userDao" class="com.
companyName .ssiDemo.user.dao.UserDAO">
        <property name="sqlMapClient">
            <ref bean="sqlMapClient" />
        </property>
    </bean>
    <bean id="userCtrlBo"
        class="com.
companyName .ssiDemo.lucene.user.bo.UserCtrlBo">
        <property name="userCtrlDao">
            <ref bean="userCtrlDao" />
        </property>
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
    </bean>
    <bean id="userCtrlDao"
        class="com.
companyName .ssiDemo.lucene.user.dao.UserCtrlDao">
        <property name="sqlMapClient">
            <ref bean="sqlMapClient" />
        </property>
    </bean>

</beans>

//

3、接下来还得再web.xml文件中配置spring的读取路径和处理中文乱码、session失效时间,代码如下:

------------------------------------------------------

<!-- 指定spring的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext-*.xml</param-value>
    </context-param>
    <!--2.对Spring容器进行实例化 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

<!--以下是由Spring提供的filter来解决Struts乱码问题 -->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

<!-- session失效时间设置为20分钟 -->
    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>


第四步,配置ibatis

1、在WEB-INF目录下新建sql-map-config.xml文件

录入如下代码:

<?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/zrar/ssiDemo/user/dao/user.xml" />
    <sqlMap resource="com/zrar/ssiDemo/lucene/user/dao/userLucene.xml" />
</sqlMapConfig>
2、在com.companyName.s2siDemo.user.dao包下新建user.xml配置文件,代码如下:

------------------这块就是ibatis对user表sql语句的封装了--------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
  PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
  "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
    <resultMap class="com.zrar.ssiDemo.user.pojo.UserBean"
        id="userResult">
        <result property="userId" column="userId" />
        <result property="username" column="username" />
        <result property="pass" column="pass" />
        <result property="sex" column="sex" />
        <result property="address" column="Address" />
        <result property="pictureUri" column="pictureUri"/>
    </resultMap>
    <typeAlias alias="userBean"
        type="com.zrar.ssiDemo.user.pojo.UserBean" />

    <select id="getUser" resultClass="userBean"
        parameterClass="userBean">
        SELECT t.userId, t.username,t.pass,t.sex,t.address,t.pictureUri FROM
        T_DEMOUSER t WHERE 1=1
        <isNotEmpty prepend="AND" property="username">
            t.username like '%$username$%'
        </isNotEmpty>
        <isGreaterThan prepend="AND" property="sex" compareValue="0">
            t.sex = #sex#
        </isGreaterThan>
        <isNotEmpty prepend="AND" property="address">
            t.address like '%$address$%'
        </isNotEmpty>
    </select>
    <select id="getUserById" resultClass="userBean" parameterClass="java.lang.Integer">
          SELECT t.userId, t.username,t.pass,t.sex,t.address,t.pictureUri FROM
          T_DEMOUSER t WHERE 1=1 AND T.userId = #userId#
    </select>
    <insert id="addUser" parameterClass="userBean">
        INSERT INTO T_DEMOUSER(userId, username,pass,sex,address,pictureUri)
        VALUES(SEQ_DEMOUSER.NEXTVAL, #username#, #pass#, #sex#,
        #address#,#pictureUri#)
    </insert>
</sqlMap>
---------------------------------------------------------------------

好了,到这一步就完成struts2+spring2+ibatis的配置了,运行行工程,没有报错的话就再加上dwr的配置吧^_^

--------------------------------------------------------------------

第五步:配置dwr(ajax框架)

1、在com.zrar.ssiDemo.user.action.ajax 包中新建一个类:HandlerUser,我们做个核对用户名是否使用过的例子,

代码如下:


public class HandlerUser {
    private UserManager userManager;

    /**
     * 核对用户信息
     *
     * @param userName
     * @return
     */
    public boolean checkUser(String userName) {
        UserBean user = new UserBean();
        user.setUsername(userName);
        List<UserBean> userList = userManager.queryUser(user);
        boolean flag = false;
        for (UserBean userBean : userList) {
            if (userName.trim().equals(userBean.getUsername().trim())) {
                user.setUsername(userName);
                flag = true;
                break;
            }
        }
        return flag;
    }

    public UserManager getUserManager() {
        return userManager;
    }

    public void setUserManager(UserManager userManager) {
        this.userManager = userManager;
    }

}

其中 userManager为使用spring的依赖注入类,稍后会讲。


2、 先确认dwr.jar包放入了lib目录,没有问题的话就再WEB-INF目录下新建个dwr.xml配置,以之前的bean为例子,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
    <allow>
        <create javascript="HandlerUser" creator="spring">
            <param name="beanName" value="HandlerUser"></param>
        </create>
    </allow>
</dwr>

HandlerUser为在js中可以使用的句柄名,实例化方式采用spring方式,你也可以用“new”,里面包含的 <param name="beanName" value="HandlerUser"></param>则需要在spring配置文件中写段代码用来注入。

找到之前新建的applicationContext-dao.xml配置文件,在里面加一段:

<!-- dwr的javaBean由spring管理 -->
    <bean id="HandlerUser"
        class="com.zrar.ssiDemo.user.action.ajax.HandlerUser">
        <property name="userManager">
            <ref bean="userManager" />
        </property>
    </bean>

---------------------------------------------------------------

到这一步后台配置就基本完成了,重新启动系统,完毕,后台没有报错的话,打开浏览器输入:

http://localhost:port/s2siDemo/dwr/index.html。若页面出现

DWR Test Index

-------------------------------------------------------------



恭喜了!dwr配置成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值