zoukankan      html  css  js  c++  java
  • Spring+Struts2+Hibernate框架搭建

    SSH框架版本:Struts-2.3.30  +  Spring-4.2.2  +  Hibernate5.2.2   

    下图是所需要的Jar包:

    下面是项目的结构图:

    1、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>ssh</display-name>
      
       <!-- 配置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管理配置文件 -->   
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext-*.xml</param-value>
        </context-param>
        
        <!-- Spring监听器 --> 
        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>
        
        <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码-->  
        <filter>  
           <filter-name>springUtf8Encoding</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>  
           <init-param>  
               <param-name>forceEncoding</param-name>  
               <param-value>true</param-value>  
           </init-param>   
        </filter>  
        <filter-mapping>  
           <filter-name>springUtf8Encoding</filter-name>  
           <url-pattern>/*</url-pattern>  
       </filter-mapping> 
       
       
        
      <welcome-file-list>  
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    2、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.devMode" value="true"/>
        <!--使用简单样式  -->
        <constant name="struts.ui.theme" value="simple" />
        <!-- 表示使用spring框架,本配置文件中所有action都要到spring配置文件中查找 -->
        <constant name="struts.objectFactory" value="spring" />
        
        <package name="default" extends="struts-default">
       
        <!-- action实际配置在applicationContext.xml配置文件中 -->
        <action name="grid" class="scoreAction" method="grid">  
        </action>
    
        </package>
    </struts>

    3、db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
    jdbc.user=root
    jdbc.password=root

    4、applicationContext-common.xml

    <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     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-4.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-4.2.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> 
                            
        <!-- 加载外部properties文件 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="WEB-INF/db.properties"/>
        </bean>
        
         <!-- 采用C3P0数据库连接池方式连接数据库 -->
        <bean id= "candy" class ="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" >
            <property name="driverClass" value="${jdbc.driver}"> </property>
            <property name="jdbcUrl" value="${jdbc.url}"> </property>
            <property name="user" value="${jdbc.user}"> </property>
            <property name="password" value="${jdbc.password}"> </property>
            
    <!--         当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 1 -->
            <property name="acquireIncrement" value="1" ></property>
    <!--         初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
            <property name="initialPoolSize" value="10" ></property>
    <!--         最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
            <property name="maxIdleTime" value="60"></property>
    <!--         连接池中保留的最大连接数。Default: 15 -->
            <property name="maxPoolSize" value="150"></property>
    <!--         连接池中保留的最小连接数。Default: 3 -->
            <property name="minPoolSize" value="5"></property>
    <!--         两次连接中间隔时间,单位毫秒。Default: 1000 -->
            <property name="acquireRetryDelay" value="1000"></property>
    <!--         定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
            <property name="acquireRetryAttempts" value="60"></property>
    <!--         获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效-->
    <!--         保留,并在下次调用GETCONNECTION()的时候继续尝试获取连接。如果设为TRUE,那么在尝试-->
    <!--         获取连接失败后该数据源将申明已断开并永久关闭。DEFAULT: FALSE       -->
            <property name="breakAfterAcquireFailure" value="false" ></property>
        </bean>
        
    
        <!-- 取代HiberbnateSessionFactory.java -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <!-- 设置注入 -->
            <property name="dataSource">
                <ref bean="candy" />
            </property>
    
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.MySQL5Dialect
                    </prop>
                    <prop key="hibernate.show_sql">
                        true
                    </prop>
                   <prop key="hibernate.format_sql">
                        true
                    </prop>  
                    <!-- 是否允许Hibernate用JDBC的可滚动的结果集 -->
                    <prop key="hibernate.jdbc.use_scrollable_resultset">
                        false
                    </prop>
                    
                </props>
            </property>
            <!-- 说明映射文件 -->
            <property name="mappingResources">
                <list>
                    <value>ssh/entity/Score.hbm.xml</value>
                </list>
            </property>
        </bean>
        
        <!-- 事物管理 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        
        <bean id="transactionProxy"  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">  
            <property name="transactionManager" ref="transactionManager"></property>  
            <property name="transactionAttributes">  
                <props>  
                    <prop key="save*">PROPAGATION_REQUIRED, -Exception</prop>  
                    <prop key="add*">PROPAGATION_REQUIRED, -Exception</prop>
                    <prop key="update*">PROPAGATION_REQUIRED, -Exception</prop>  
                    <prop key="delete*">PROPAGATION_REQUIRED, -Exception</prop>  
                    <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>  
                </props>  
            </property>  
        </bean>
        
        <!-- <bean id="userDao" parent="transactionProxy">  
            <property name="target">  
                用bean代替ref的方式  
                <bean class="com.dao.UserDaoImpl">  
                    <property name="sessionFactory" ref="sessionFactory"></property>  
                </bean>  
            </property>  
        </bean>   -->
        
    
    </beans>

    5、applicationContext-beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     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-4.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-4.2.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">  
                            
    <!--配置bean -->
        <!-- <bean id="baseDaoImpl" class="ssh.base.BaseDaoImpl" scope="prototype">
            <property name="sessionFactory" >
                <ref bean="sessionFactory"/>
            </property>
        </bean>
        
        <bean id="baseServiceImpl" class="ssh.service.impl.BaseServiceImpl" scope="prototype">
            <property name="baseDao" >
                <ref bean="baseDaoImpl"/>
            </property>
        </bean> -->
        
        <bean id="scoreDaoImpl" class="ssh.dao.impl.ScoreDaoImpl" scope="prototype">
            <property name="sessionFactory" >
                <ref bean="sessionFactory"/>
            </property>
        </bean>
        
        <bean id="scoreServiceImpl" class="ssh.service.impl.ScoreServiceImpl" scope="prototype">
            <property name="scoreDao" >
                <ref bean="scoreDaoImpl"/>
            </property>
        </bean>
        
        
    
    </beans>

    6、applicationContext-actions.xml

    <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     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-4.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-4.2.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> 
                            
        <bean id="scoreAction" class="ssh.action.ScoreAction" scope="prototype">
            <property name="scoreService">
                <ref bean="scoreServiceImpl"/> 
            </property>
        </bean>
    
    </beans>

    7、log4j.properties

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} %-5p [%F:%L]%x %m%n
    
    log4j.appender.fileout=org.apache.log4j.RollingFileAppender
    log4j.appender.fileout.File=D://application.log
    log4j.appender.fileout.MaxFileSize=10000KB
    log4j.appender.fileout.MaxBackupIndex=10
    log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
    log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n
    
    log4j.rootCategory=INFO, stdout
    log4j.logger.com.wolfsquare.log2=DEBUG,stdout
  • 相关阅读:
    C++模板的声明与实现分离 编译错误详解
    C语言中数据类型的隐式转换
    UNIX 高手的 10 个习惯
    linux 信号量
    引用与数组
    Linux 的变量命名规则
    .bash_profile和.bashrc的区别(如何设置生效
    URAL 1053 Pinocchio
    URAL 1040 Airline Company
    URAL 1045 Funny Game
  • 原文地址:https://www.cnblogs.com/liuzhenping/p/7719562.html
Copyright © 2011-2022 走看看