Spring3.2+mybatis3.2+Struts2.3整合配置文件大全

0.配置文件目录

1.Spring配置

 applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
    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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

    <!-- 0.连接池属性设置读取指定的properties文件 -->
    <context:property-placeholder location="classpath:db.properties" />

    <!-- 1.将连接池放入spring容器 -->
    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>



    <!--2. 配置 Mybatis的会话工厂 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 配置Mybatis的核心 配置文件所在位置 -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
    </bean>



    <!-- 3.1 mapper代理配置方法一 这种方法需要大量重复的配置代理对象 MapperFactoryBean:根绝mapper接口生成代理对象 
        <bean id="selectUser" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
        <property name="mapperInterface" value="cn.qlq.core.dao.SelectUser"></property> 
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> -->




    <!-- 3.2通过MapperScannerConfigurer扫描进行批量生成代理对象 遵循规范:mapper.java和mapper.xml名字一样且在同一个目录下 
        自动扫描出来的代理对象的id为mapper类类名(首字母小写) -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 指定扫描的包名,如果有多个,用半角逗号分隔 -->
        <property name="basePackage" value="cn.xm.exam.mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>


    <!-- 4.配置事务管理器 -->
    <!-- 事务核心管理器,封装了事务操作,依赖于连接池 -->
    <bean name="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 5.开启注解管理aop事务 -->
    <tx:annotation-driven />



    <!-- 事务模板对象,依赖于事务核心管理器 -->
    <bean name="transactionTemplate"
        class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="transactionManager"></property>
    </bean>

    <!-- ················开始使用XML管理事务························ -->
    <!-- 配置事务通知(无论哪种方式都要用到事务的核心管理器) -->
    <tx:advice transaction-manager="transactionManager" id="firstTx">
        <tx:attributes>
            <!--以方法为单位,指定方法应用事务什么属性 isolation:隔离级别 read-only:只读属性 propagation:传播行为 -->
            <!-- 企业中运用通配符命名规则。两套增删改查(8种) -->
            <tx:method name="save*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="add*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="delete*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="remove*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="update*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="modify*" isolation="DEFAULT" read-only="false"
                propagation="REQUIRED" />
            <tx:method name="get*" isolation="DEFAULT" read-only="true"
                propagation="REQUIRED" />
            <tx:method name="find*" isolation="DEFAULT" read-only="true"
                propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>

    <!-- 配置织入 -->
    <aop:config>
        <!-- 配置切点表达式 -->
        
        <aop:pointcut expression="execution(* cn.xm.exam.service.impl.*.*ServiceImpl.*(..))"
            id="texPc" />
        <!-- 配置切面:切点+通知 advice-ref:通知名称 pointcut-ref:切点名称 -->
        <aop:advisor advice-ref="firstTx" pointcut-ref="texPc" />
    </aop:config>
    
    <aop:config>
        <!-- 配置切点表达式 -->
        <aop:pointcut expression="execution(* cn.xm.exam.service.impl.*.*.*ServiceImpl.*(..))"
            id="secondPc" />
        <!-- 配置切面:切点+通知 advice-ref:通知名称 pointcut-ref:切点名称 -->
        <aop:advisor advice-ref="firstTx" pointcut-ref="secondPc" />
    </aop:config>
</beans>

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
    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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

    <!-- 4.开启组件自动扫描,也就是启用注解。前提是导入spring-context-3.2.xsd约束和引入新的命名空间 -->
    <context:component-scan base-package="cn.xm.exam.service"></context:component-scan>

</beans>

 applicationContext-action.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
    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-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
    <!-- 与struts2整合的配置 -->
    <!-- 扫描Action基本包 -->
    <context:component-scan base-package="cn.xm.exam.action"></context:component-scan>



</beans>

 2.Struts配置

struts.xml  (主配置文件)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <constant name="devMode" value="true"></constant>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.action.extension" value="action,do" />
    <constant name="struts.objectFactory" value="spring"></constant>



    <!-- leilong -->
    <include file="struts/question.xml"></include>


    <!-- 乔利强引入的 -->
    <include file="struts/ExamPaper.xml"></include>
    <include file="struts/Exam.xml"></include>
    <include file="struts/Haul.xml"></include>



</struts>

Exam.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="exam" namespace="/" extends="json-default,struts-default">
        <!-- 全局结果集,将response转换为json传到前台 -->
        <global-results>
            <result name="success" type="json">
                <param name="root">response</param>
            </result>
        </global-results>

        <!-- 添加考试 -->
        <action name="exam_*" class="addExamAction" method="{1}"></action>
        <!-- 查询考试 -->
        <action name="findExam_*" class="findExamAction" method="{1}"></action>
        <!--删除考试 -->
        <action name="deleteExam" class="deleteExamAction"></action>
        <!--修改考试 -->
        <action name="UpdateExam_*" class="updateExamAction" method="{1}">
            <!-- 将信息带到修改界面 (页面跳转的方式) -->
            <result name="findExam">/view/examParper/exam/modifyExam.jsp</result>
            <!-- 修改考试(ajax+json方式) -->
        </action>

        <!-- 导出参考人员信息 -->
        <action name="exportExamEmployees" class="extExamEmployeesAction">
            <result type="stream">
                <!-- 其他的参数在类中设置或者使用默认 -->
                <param name="contentType">application/octet-stream</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
                <param name="bufferSize">8192</param>
            </result>
        </action>
        <!-- 导出试卷答案信息 -->
        <action name="extPaperAnswer" class="extPaperAnswerAction">
            <result type="stream">
                <!-- 其他的参数在类中设置或者使用默认 -->
                <param name="contentType">application/octet-stream</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
                <param name="bufferSize">8192</param>
            </result>
        </action>
        <!-- 导出试卷信息 -->
        <action name="extPaper" class="extExamPaperAction">
            <result type="stream">
                <!-- 其他的参数在类中设置或者使用默认 -->
                <param name="contentType">application/octet-stream</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
                <param name="bufferSize">8192</param>
            </result>
        </action>




    </package>
</struts>

3.mybatis配置

SqlMapConfig.xml   (主配置)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 只需要定义个别名,这个应该有 -->
    <typeAliases>
        <package name="cn.xm.exam.bean.common" />
        <package name="cn.xm.exam.bean.employee" />
        <package name="cn.xm.exam.bean.employee.in" />
        <package name="cn.xm.exam.bean.employee.out" />
        <package name="cn.xm.exam.bean.exam" />
        <package name="cn.xm.exam.bean.grade" />
        <package name="cn.xm.exam.bean.question" />
        <package name="cn.xm.exam.bean.system" />
        <package name="cn.xm.exam.bean.trainContent" />
    </typeAliases>
</configuration>

mapper映射配置:(要与接口放在同一目录,且名字一样)

EmployeeOutCustomMapper.xml   
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.xm.exam.mapper.employee.out.custom.EmployeeOutCustomMapper">


    <!-- S qlq -->
    <!-- S 查询外部参考人员 -->
    <select id="getExamEmployeeOuts" resultType="cn.xm.exam.vo.exam.ExamEmployeeOutQueryVo"
        parameterType="hashmap">
        SELECT
        e.employeeId,
        e.idcode,
        e.name,
        e.sex,
        e.minusNum,
        e.trainStatus,
        u.name AS unitname
        FROM employee_out e,
        unit u
        <where>
            <include refid="getExamEmployeeOuts_where"></include>
        </where>
        ORDER BY u.name
    </select>
    <sql id="getExamEmployeeOuts_where">
        <!-- 根据部门名称查询部门ID -->
        <if test="1==1">
            and e.unitId = u.unitId
        </if>
        <if test="unitNames !=null">
            and e.unitId IN(SELECT
            unitId
            FROM unit
            WHERE unit.name IN
            <foreach collection="unitNames" item="unitName" separator=","
                open="(" close=")">
                #{unitName}
            </foreach>
            )
        </if>
        <if test="sex!=null">
            and e.sex=#{sex}
        </if>
        <if test="idCode!=null">
            and e.idCode=#{idCode}
        </if>
        <if test="trainStatus!=null">
            and e.trainStatus=#{trainStatus}
        </if>
        <if test="name!=null">
            and e.name like '%${name}%'
        </if>
        <if test="mixMinus!=null">
            and e.minusNum>#{mixMinus}
        </if>
        <if test="maxMinus!=null">
            and e.minusNum&lt;#{maxMinus}
        </if>
        <!-- 如果选择进入黑名单扣分大于12 -->
        <if test="isBlack!=null">
            and e.minusNum>12
        </if>
    </sql>
    <!-- E 查询外部参考人员 -->

    <!-- E qlq -->

</mapper>

 4.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>xm</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext-*.xml</param-value>
    </context-param>


     <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>
</web-app>
原文地址:https://www.cnblogs.com/qlqwjy/p/7814067.html