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
  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/liuzhenping/p/7719562.html
Copyright © 2011-2022 走看看