zoukankan      html  css  js  c++  java
  • Eclipse 下用Maven构建ssh框架web工程

    之前的项目中用到了maven,而且是web项目(但不是标准的ssh架构),趁着假期,重用南哥的pom文件,自己也试试用maven构建web项目,搭建完整的ssh开发框架。

    工具准备:jdk,eclipse,maven

    Eclipse 插件:Hibernate Tools

    (以上工具软件请请自行Google下载安装)

    当然,构建过程需要畅通的网络,以确保maven能顺利下载依赖包。

    第一步,在eclipse新建Maven项目,

    New->Maven Project;

        新建Maven项目

    两个next之后选择maven-archetype-webapp 架构类型;

        

    Next,然后设置好Group Id,Artifact Id,等信息,之后点击Finish。

    至此,web项目已经搭建好。

    在src/main目录下建立java和test代码文件夹,

        

    下面进行maven依赖配置和ssh配置

    下面只需要配置项目根目录下的pom.xml文件,配置ssh框架的各种依赖jar包,并设定Java版本,Maven默认是1.5

    pom.xml

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3   <modelVersion>4.0.0</modelVersion>
      4   <groupId>edu.ncut.decloud.test</groupId>
      5   <artifactId>mvntest</artifactId>
      6   <packaging>war</packaging>
      7   <version>0.0.1-SNAPSHOT</version>
      8   <name>mvntest Maven Webapp</name>
      9   <url>http://maven.apache.org</url>
     10   <properties>
     11         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     12         <cxf.version>2.7.4</cxf.version>
     13         <org.springframework.version>3.2.2.RELEASE</org.springframework.version>
     14         <servlet-api.version>2.5</servlet-api.version>
     15         <jsp-api.version>2.2</jsp-api.version>
     16         <commons-logging.version>1.1.2</commons-logging.version>
     17         <jsr311-api.version>1.1.1</jsr311-api.version>
     18         <json.version>20090211</json.version>
     19         <log4j.version>1.2.17</log4j.version>
     20         <jstl.version>1.2</jstl.version>
     21         <mysql.version>5.1.30</mysql.version>
     22         <struts2.version>2.3.16.3</struts2.version>
     23         <hibernate.version>4.2.2.Final</hibernate.version>
     24         <hibernate-commons.version>3.3.0.ga</hibernate-commons.version>
     25         <hibernate-annotations.version>3.5.6-Final</hibernate-annotations.version>
     26         <slf4j.version>1.7.5</slf4j.version>
     27         <c3p0.version>0.9.1.2</c3p0.version>
     28         <commons-lang.version>2.6</commons-lang.version>
     29     </properties>
     30   <dependencies>
     31         <dependency>
     32             <groupId>junit</groupId>
     33             <artifactId>junit</artifactId>
     34             <version>4.11</version>
     35             <scope>test</scope>
     36         </dependency>
     37         <dependency>
     38             <groupId>org.springframework</groupId>
     39             <artifactId>spring-core</artifactId>
     40             <version>${org.springframework.version}</version>
     41         </dependency>
     42         <!-- Expression Language(depends on spring-core) Define this if you use 
     43             Spring Expression APIs(org.springframework.expression.*) -->
     44 
     45         <dependency>
     46             <groupId>org.springframework</groupId>
     47             <artifactId>spring-expression</artifactId>
     48             <version>${org.springframework.version}</version>
     49         </dependency>
     50 
     51         <!-- Aspect Oriented Programing(AOP) Framework (depends on spring-core,spring-beans) 
     52             Define this if you use Spring AOP APIs(org.springframework.aop.*) -->
     53 
     54         <dependency>
     55             <groupId>org.springframework</groupId>
     56             <artifactId>spring-aop</artifactId>
     57             <version>${org.springframework.version}</version>
     58         </dependency>
     59 
     60         <!-- Application Context (depends on spring-core, spring-expression, spring-aop, 
     61             spring-beans) This is the central artifact for Spring's Dependency Injection 
     62             Container and is generally always defined -->
     63 
     64         <dependency>
     65             <groupId>org.springframework</groupId>
     66             <artifactId>spring-context</artifactId>
     67             <version>${org.springframework.version}</version>
     68         </dependency>
     69 
     70         <!-- Various Application Context utilities, including EhCache, JavaMail, 
     71             Quartz, and Freemarker integration Define this if you need any of these integrations -->
     72 
     73         <dependency>
     74             <groupId>org.springframework</groupId>
     75             <artifactId>spring-context-support</artifactId>
     76             <version>${org.springframework.version}</version>
     77         </dependency>
     78 
     79         <!-- Transaction Management Abstraction(depends on spring-core,spring-beans,spring-aop,spring-context) 
     80             Define this if you use Spring Transactions or DAO Exception Hierarchy (org.springframework.transaction.* 
     81             /org.springframework.dao.*) -->
     82 
     83         <dependency>
     84             <groupId>org.springframework</groupId>
     85             <artifactId>spring-tx</artifactId>
     86             <version>${org.springframework.version}</version>
     87         </dependency>
     88 
     89         <!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, 
     90             spring-tx) Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*) -->
     91 
     92         <dependency>
     93             <groupId>org.springframework</groupId>
     94             <artifactId>spring-jdbc</artifactId>
     95             <version>${org.springframework.version}</version>
     96         </dependency>
     97 
     98         <!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA, 
     99             and iBatis. (depends on spring-core, spring-beans, spring-context, spring-tx) 
    100             Define this if you need ORM (org.springframework.orm.*) -->
    101 <dependency>
    102             <groupId>org.springframework</groupId>
    103             <artifactId>spring-orm</artifactId>
    104             <version>${org.springframework.version}</version>
    105         </dependency>
    106 
    107         <!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB, 
    108             JiBX, Castor, XStream, and XML Beans. (depends on spring-core, spring-beans, 
    109             spring-context) Define this if you need OXM (org.springframework.oxm.*) -->
    110 
    111         <dependency>
    112             <groupId>org.springframework</groupId>
    113             <artifactId>spring-oxm</artifactId>
    114             <version>${org.springframework.version}</version>
    115         </dependency>
    116 
    117         <!-- Web application development utilities applicable to both Servlet and 
    118             Portlet Environments (depends on spring-core, spring-beans, spring-context) 
    119             Define this if you use Spring MVC, or wish to use Struts, JSF, or another 
    120             web framework with Spring (org.springframework.web.*) -->
    121 
    122         <dependency>
    123             <groupId>org.springframework</groupId>
    124             <artifactId>spring-web</artifactId>
    125             <version>${org.springframework.version}</version>
    126         </dependency>
    127 
    128         <!-- Spring MVC for Servlet Environments (depends on spring-core, spring-beans, 
    129             spring-context, spring-web) Define this if you use Spring MVC with a Servlet 
    130             Container such as Apache Tomcat (org.springframework.web.servlet.*) -->
    131 
    132         <dependency>
    133             <groupId>org.springframework</groupId>
    134             <artifactId>spring-webmvc</artifactId>
    135             <version>${org.springframework.version}</version>
    136         </dependency>
    137 
    138         <!-- Spring MVC for Portlet Environments (depends on spring-core, spring-beans, 
    139             spring-context, spring-web) Define this if you use Spring MVC with a Portlet 
    140             Container (org.springframework.web.portlet.*) -->
    141 
    142         <dependency>
    143             <groupId>org.springframework</groupId>
    144             <artifactId>spring-webmvc-portlet</artifactId>
    145             <version>${org.springframework.version}</version>
    146         </dependency>
    147 
    148         <!-- Support for testing Spring applications with tools such as JUnit and 
    149             TestNG This artifact is generally always defined with a 'test' scope for 
    150             the integration testing framework and unit testing stubs -->
    151 
    152         <dependency>
    153             <groupId>org.springframework</groupId>
    154             <artifactId>spring-test</artifactId>
    155             <version>${org.springframework.version}</version>
    156             <scope>test</scope>
    157         </dependency>
    158 
    159 
    160         <dependency>
    161             <groupId>org.springframework</groupId>
    162             <artifactId>spring-aspects</artifactId>
    163             <version>${org.springframework.version}</version>
    164         </dependency>
    165 
    166         <dependency>
    167             <groupId>org.springframework</groupId>
    168             <artifactId>spring-beans</artifactId>
    169             <version>${org.springframework.version}</version>
    170         </dependency>
    171         <!-- Spring3.2.2配置结束 -->
    172 
    173         <!-- 可能与tomcat 的 servlet冲突 -->
    174         <dependency>
    175             <groupId>javax.servlet</groupId>
    176             <artifactId>servlet-api</artifactId>
    177             <version>${servlet-api.version}</version>
    178             <scope>provided</scope>
    179         </dependency>
    180         <dependency>
    181             <groupId>javax.servlet.jsp</groupId>
    182             <artifactId>jsp-api</artifactId>
    183             <version>${jsp-api.version}</version>
    184             <scope>provided</scope>
    185         </dependency>
    186 
    187         <dependency>
    188             <groupId>org.slf4j</groupId>
    189             <artifactId>slf4j-api</artifactId>
    190             <version>${slf4j.version}</version>
    191         </dependency>
    192         <dependency>
    193             <groupId>org.slf4j</groupId>
    194             <artifactId>slf4j-log4j12</artifactId>
    195             <version>${slf4j.version}</version>
    196         </dependency>
    197 
    198         <dependency>
    199             <groupId>org.slf4j</groupId>
    200             <artifactId>slf4j-nop</artifactId>
    201             <version>${slf4j.version}</version>
    202         </dependency>
    203 
    204         <dependency>
    205             <groupId>log4j</groupId>
    206             <artifactId>log4j</artifactId>
    207             <version>${log4j.version}</version>
    208         </dependency>
    209         <dependency>
    210             <groupId>jstl</groupId>
    211             <artifactId>jstl</artifactId>
    212             <version>${jstl.version}</version>
    213         </dependency>
    214         <dependency>
    215             <groupId>net.sf.json-lib</groupId>
    216             <artifactId>json-lib</artifactId>
    217             <version>2.4</version>
    218             <classifier>jdk15</classifier>
    219         </dependency>
    220 
    221         <!-- mysql -->
    222         <dependency>
    223             <groupId>mysql</groupId>
    224             <artifactId>mysql-connector-java</artifactId>
    225             <version>${mysql.version}</version>
    226         </dependency>
    227 
    228         <!-- hibernate -->
    229         <dependency>
    230             <groupId>c3p0</groupId>
    231             <artifactId>c3p0</artifactId>
    232             <version>${c3p0.version}</version>
    233         </dependency>
    234         <dependency>
    235             <groupId>org.hibernate</groupId>
    236             <artifactId>hibernate-core</artifactId>
    237             <version>${hibernate.version}</version>
    238         </dependency>
    239         <dependency>
    240             <groupId>org.hibernate</groupId>
    241             <artifactId>hibernate-validator</artifactId>
    242             <version>5.0.1.Final</version>
    243         </dependency>
    244         <!-- hibernate -->
    245 
    246         <dependency>
    247             <groupId>javax.validation</groupId>
    248             <artifactId>validation-api</artifactId>
    249             <version>1.1.0.Final</version>
    250         </dependency>
    251         <dependency>
    252             <groupId>edu.ncut.decloud</groupId>
    253             <artifactId>traffic-common</artifactId>
    254             <version>1.0.2</version>
    255         </dependency>
    256         <!--struts -->
    257         <dependency>
    258             <groupId>org.apache.struts</groupId>
    259             <artifactId>struts2-core</artifactId>
    260             <version>${struts2.version}</version>
    261         </dependency>
    262         <dependency>
    263             <groupId>org.apache.struts</groupId>
    264             <artifactId>struts2-convention-plugin</artifactId>
    265             <version>${struts2.version}</version>
    266         </dependency>
    267         <dependency>
    268             <groupId>org.apache.struts</groupId>
    269             <artifactId>struts2-junit-plugin</artifactId>
    270             <version>${struts2.version}</version>
    271             <scope>test</scope>
    272         </dependency>
    273         <dependency>
    274             <groupId>org.apache.struts</groupId>
    275             <artifactId>struts2-config-browser-plugin</artifactId>
    276             <version>${struts2.version}</version>
    277         </dependency>
    278         <dependency>
    279             <groupId>org.apache.struts</groupId>
    280             <artifactId>struts2-embeddedjsp-plugin</artifactId>
    281             <version>${struts2.version}</version>
    282         </dependency>
    283         <dependency>
    284             <groupId>org.apache.struts</groupId>
    285             <artifactId>struts2-spring-plugin</artifactId>
    286             <version>${struts2.version}</version>
    287         </dependency>
    288         <dependency>
    289             <groupId>org.apache.struts</groupId>
    290             <artifactId>struts2-json-plugin</artifactId>
    291             <version>${struts2.version}</version>
    292         </dependency>
    293         <!--struts -->
    294 
    295 
    296 
    297     </dependencies>
    298     <build>
    299         <finalName>mvntest</finalName>
    300         <resources>
    301             <resource>
    302                 <directory>src/main/java</directory>
    303                 <!-- 此目录下的所有xml文件作为资源打包 -->
    304                 <includes>
    305                     <include>**/*.xml</include>
    306                 </includes>
    307             </resource>
    308             <resource>
    309                 <directory>src/main/resources</directory>
    310                 <!-- 此目录下的所有xml文件作为资源打包 -->
    311                 <includes>
    312                     <include>**/*.xml</include>
    313                     <include>**/*.properties</include>
    314                 </includes>
    315             </resource>
    316         </resources>
    317 
    318         <plugins>
    319             <plugin>
    320                 <groupId>org.apache.maven.plugins</groupId>
    321                 <artifactId>maven-compiler-plugin</artifactId>
    322                 <configuration>
    323                     <source>1.7</source>
    324                     <target>1.7</target>
    325                     <encoding>UTF-8</encoding>
    326                 </configuration>
    327             </plugin>
    328 
    329             <plugin>
    330                 <artifactId>maven-war-plugin</artifactId>
    331                 <version>2.3</version>
    332                 <configuration>
    333                     <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
    334                 </configuration>
    335             </plugin>
    336 
    337             <plugin>
    338                 <groupId>org.apache.maven.plugins</groupId>
    339                 <artifactId>maven-surefire-plugin</artifactId>
    340                 <version>2.6</version>
    341                 <configuration>
    342                     <skipTests>true</skipTests>
    343                 </configuration>
    344             </plugin>
    345         </plugins>
    346     </build>
    347 </project>
    pom.xml

    更改pom.xml之后,在项目右键,Maven -> Update Project,配置已更新,ssh各种依赖包已导入。

    下面是各种配置文件,web.xml在webapp目录下的WEB-INF下,spring配置文件spring-config.xml我把它放在了web.xml同级的spring配置文件夹下,可自行更改,只需在web.xml中指定即可。

    在src/main/resources/下放置hibernate 配置文件,struts 2 配置文件,log4j等一系列配置

        

    web.xml

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <display-name>Archetype Created Web Application</display-name>
        <!-- <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
    
        </welcome-file-list> -->
    
        <!-- 上下文配置文件 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/conf/spring/spring-config.xml</param-value>
        </context-param>
        <listener>
            <description>springListerner</description>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- 配置struts2 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            
            <!-- <init-param>
                <param-name>config</param-name>
                <param-value>struts.xml</param-value>
            </init-param> -->
        </filter>
    
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
    </web-app>
    web.xml

     spring-config.xml,其中包含了对hibernate的配置

    <?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:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
           http://www.springframework.org/schema/mvc      
           http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
    
        <!-- 配置扫描注解 -->
        <context:component-scan base-package="edu.ncut.decloud.mvnssh">
        <!--  
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        -->
        </context:component-scan>
        <!--  自动注解映射的支持,下面是一种简写形式,完全可以手动配置替代这种简写形式,它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter,是spring MVC为@Controllers分发请求所必须的   -->
        <mvc:annotation-driven>
        </mvc:annotation-driven>
        
        <!-- 加载propertis文件 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:jdbc.properties</value>
                </list>
            </property>
        </bean>
    
     
        <!-- 配置数据库连接spring -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
            <property name="driverClassName" value="${connection.driver_class}"/>  
            <property name="url" value="${connection.url}"/>  
            <property name="username" value="${connection.username}"/>  
            <property name="password" value="${connection.password}"/>
        </bean> 
    
        <!-- 配置hibernate相关信息 -->
          <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
            <property name="dataSource" ref="dataSource"/>
            
            <!-- <property name="packagesToScan">
                <list>
                    <value>edu.ncut.decloud.mvnssh.domain</value>
                </list>
            </property> -->
             
            <property name="mappingDirectoryLocations">
                <list>
                   <value>classpath:edu/ncut/decloud/mvnssh/domain</value>
                </list>
            </property>
            
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.query.substitutions">${hibernate.query.substitutions}</prop>
                    <prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop>
                    <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop>
                    <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
                    <prop key="hibernate.bytecode.use_reflection_optimizer">${hibernate.bytecode.use_reflection_optimizer}</prop>
    
                    <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
                    <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
                    <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>
                    <prop key="net.sf.ehcache.configurationResourceName">${net.sf.ehcache.configurationResourceName}</prop>
                    <prop key="hibernate.cache.use_structured_entries">${hibernate.cache.use_structured_entries}</prop>
                    <!-- 解决no session found 
                    <prop key="hibernate.current_session_context_class">thread</prop>
                    -->
                    
                    <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                </props>
            </property>
          </bean>
    
        <!-- 开启AOP监听 只对当前配置文件有效 -->
        <!--  
        <aop:aspectj-autoproxy expose-proxy="true"/>
        -->
        <aop:aspectj-autoproxy />    
        
        <!-- 开启注解事务 只对当前配置文件有效 -->
          <tx:annotation-driven transaction-manager="transactionManager"/>
    
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
    
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="save*" propagation="REQUIRED" />
                <tx:method name="add*" propagation="REQUIRED" />
                <tx:method name="create*" propagation="REQUIRED" />
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="merge*" propagation="REQUIRED" />
                <tx:method name="del*" propagation="REQUIRED" />
                <tx:method name="remove*" propagation="REQUIRED" />
                <tx:method name="put*" propagation="REQUIRED" />
                <tx:method name="use*" propagation="REQUIRED"/>
                <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到-->
                <tx:method name="get*" propagation="REQUIRED" read-only="true" />
                <tx:method name="count*" propagation="REQUIRED" read-only="true" />
                <tx:method name="find*" propagation="REQUIRED" read-only="true" />
                <tx:method name="list*" propagation="REQUIRED" read-only="true" />
                <tx:method name="query*" propagation="REQUIRED" read-only="true" />
                <tx:method name="*" read-only="true" />
            </tx:attributes>
        </tx:advice>
    
        <!-- 只对DAO层实施事务 -->
     
        <aop:config expose-proxy="true">
             
            <aop:pointcut id="transactionPointcut" expression="execution(* edu.ncut.decloud..dao..*.*(..))" />
            
            <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>
        </aop:config>
    
    </beans>
    Spring 配置

    struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!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.i18n.encoding" value="UTF-8"></constant>
        <!-- caution: in release version, this value must be set false -->
        <constant name="struts.devMode" value="true"></constant>
    
        <!-- 将Action的创建交给spring来管理 -->
        <constant name="struts.objectFactory" value="spring" />
    
        <package name="mvnssh" extends="json-default">
            <!-- 配置拦截器 -->
            <interceptors>
                <interceptor-stack name="appDefaultStack">
                    <interceptor-ref name="defaultStack">
                        <param name="exception.logEnabled">true</param>
                        <param name="exception.logLevel">ERROR</param>
                    </interceptor-ref>
                </interceptor-stack>
                <!-- <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor" 
                    /> -->
            </interceptors>
    
            <default-interceptor-ref name="appDefaultStack" />
    
            <global-results>
                <result name="error">/error.jsp</result>
            </global-results>
    
    
            <global-exception-mappings>
                <exception-mapping exception="java.lang.Exception"
                    result="error" />
            </global-exception-mappings>
    
    
    
            <action name="personFinder" class="edu.ncut.decloud.mvnssh.action.PersonFinder"
                method="execute">
                <result name="success">/personinfo.jsp</result>
            </action>
            <action name="allPersonsFinder" class="edu.ncut.decloud.mvnssh.action.AllPersonsFinder"
                method="execute">
                <result name="success">/personinfo.jsp</result>
            </action>
            <action name="*PersonUpdate" class="edu.ncut.decloud.mvnssh.action.PersonUpdater"
                method="{1}">
                <result name="success">/personupdated.jsp</result>
                <result name="input">/inputpersonupdate.jsp</result>
            </action>
            <action name="personDelete" class="edu.ncut.decloud.mvnssh.action.PersonDeleter"
                method="execute">
                <result name="success">/persondeleted.jsp</result>
            </action>
            <action name="*PersonSave" class="edu.ncut.decloud.mvnssh.action.PersonSaver"
                method="{1}">
                <result name="input">/inputpersonsave.jsp</result>
                <result name="success">/personsaved.jsp</result>
            </action>
        </package>
    
    </struts>
    struts 2 配置

    jdbc.properties hibernate参数配置

    hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
    hibernate.hbm2ddl.auto=none
    hibernate.show_sql=true
    hibernate.query.substitutions=true 1, false 0
    hibernate.default_batch_fetch_size=16
    hibernate.max_fetch_depth=2
    hibernate.bytecode.use_reflection_optimizer=true
    hibernate.cache.use_second_level_cache=false
    hibernate.cache.use_query_cache=false
    #hibernate.cache.region.factory_class=org.hibernate.cache.EhCacheRegionFactory
    hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
    net.sf.ehcache.configurationResourceName=/ehcache_hibernate.xml
    hibernate.cache.use_structured_entries=true
    hibernate.generate_statistics=true
    
    
    connection.driver_class=com.mysql.jdbc.Driver
    connection.url=jdbc:mysql://localhost:3306/mvnssh
    connection.username=root
    connection.password=
    
    proxool.maximum.connection.count=40
    proxool.minimum.connection.count=5
    proxool.statistics=1m,15m,1h,1d
    proxool.simultaneous.build.throttle=30
    Hibernate参数设置

    至此,基于Maven的ssh 架构web开发环境就搭建完成了。

    一些收获,做过一些项目后,重用已有的架构和相应的组件会减少造轮子的过程,省时省力-.-

    下面附上通过Hibernate Tools来自动生成关系数据库里对应的实体类和相应的映射文件(映射文件的位置可在spring-config.xml中配置)

    首先打开Hibernate Tools视图,新建配置

    新建Hibernate 配置

    Hibernate configured connection 点击New,新建数据库连接,首先选择数据库类型

    新建数据库连接

    next,配置数据库连接信息

    点击右上角,添加数据库驱动jar包。

    至此,数据库连接配置完毕。

    下面为项目生成实体类和相应的配置文件,

    在Hibernate Tools视图下运行Hibernate Code 生成配置

    配置基本信息

    可以在reveng.xml配置映射那些表,不设置则默认全部映射。

    然后在Exporters里配置生成哪些文件

    点击 Run就可以在指定的输出包里看到相应的实体类和对应的Hibernate映射文件。

    That's all. Good Luck. - - !

  • 相关阅读:
    23种设计模式
    iOS中 判断对象类型的一些方法
    iOS 反射获取类的属性列表
    CATransition--(2)
    CATransition
    App Extension编程指南(iOS8/OS X v10.10):常见问题的处理方案
    触摸、手势与响应者链条
    NSTimer使用
    监控数据库运行
    MS AX 技术相关网站收藏
  • 原文地址:https://www.cnblogs.com/qyanke/p/3887804.html
Copyright © 2011-2022 走看看