• test项目


    自己照着从其他地方找的代码,写了一个测试用的小项目

    现在贴出来,后续可以看看

    环境:Ubuntu Kylin16.0.4    jdk1.7    tomcat7

    1、项目整体结构:

    2、因为是web项目,使用maven进行jar包依赖的管理:

    web.xml文件和pom.xml文件

    pom

      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/xsd/maven-4.0.0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.fh</groupId>
      5     <artifactId>com.fh.test</artifactId>
      6     <version>0.0.1-SNAPSHOT</version>
      7     <packaging>war</packaging>
      8 
      9 
     10     <properties>
     11         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 
     12             资源构建编码 -->
     13         <spring.version>4.1.3.RELEASE</spring.version>
     14     </properties>
     15 
     16     <dependencies>
     17         <!-- 测试框架 -->
     18         <dependency>
     19             <groupId>junit</groupId>
     20             <artifactId>junit</artifactId>
     21             <version>4.12</version>
     22             <scope>test</scope>
     23         </dependency>
     24 
     25         <!-- Spring start -->
     26 
     27         <dependency>
     28             <groupId>org.springframework</groupId>
     29             <artifactId>spring-orm</artifactId>
     30             <version>${spring.version}</version>
     31             <exclusions>
     32                 <exclusion>
     33                     <groupId>org.springframework</groupId>
     34                     <artifactId>spring-core</artifactId>
     35                 </exclusion>
     36             </exclusions>
     37         </dependency>
     38         <dependency>
     39             <groupId>org.springframework</groupId>
     40             <artifactId>spring-tx</artifactId>
     41             <version>${spring.version}</version>
     42             <exclusions>
     43                 <exclusion>
     44                     <groupId>org.springframework</groupId>
     45                     <artifactId>spring-core</artifactId>
     46                 </exclusion>
     47             </exclusions>
     48         </dependency>
     49         <dependency>
     50             <groupId>org.springframework</groupId>
     51             <artifactId>spring-context</artifactId>
     52             <version>${spring.version}</version>
     53             <exclusions>
     54                 <exclusion>
     55                     <groupId>org.springframework</groupId>
     56                     <artifactId>spring-core</artifactId>
     57                 </exclusion>
     58             </exclusions>
     59         </dependency>
     60         <dependency>
     61             <groupId>org.springframework</groupId>
     62             <artifactId>spring-context-support</artifactId>
     63             <version>${spring.version}</version>
     64             <exclusions>
     65                 <exclusion>
     66                     <groupId>org.springframework</groupId>
     67                     <artifactId>spring-core</artifactId>
     68                 </exclusion>
     69             </exclusions>
     70         </dependency>
     71         <dependency>
     72             <groupId>org.springframework</groupId>
     73             <artifactId>spring-beans</artifactId>
     74             <version>${spring.version}</version>
     75             <exclusions>
     76                 <exclusion>
     77                     <groupId>org.springframework</groupId>
     78                     <artifactId>spring-core</artifactId>
     79                 </exclusion>
     80             </exclusions>
     81         </dependency>
     82         <dependency>
     83             <groupId>org.springframework</groupId>
     84             <artifactId>spring-test</artifactId>
     85             <version>${spring.version}</version>
     86             <exclusions>
     87                 <exclusion>
     88                     <groupId>org.springframework</groupId>
     89                     <artifactId>spring-core</artifactId>
     90                 </exclusion>
     91             </exclusions>
     92         </dependency>
     93         <dependency>
     94             <groupId>org.springframework</groupId>
     95             <artifactId>spring-web</artifactId>
     96             <version>${spring.version}</version>
     97             <exclusions>
     98                 <exclusion>
     99                     <groupId>org.springframework</groupId>
    100                     <artifactId>spring-core</artifactId>
    101                 </exclusion>
    102             </exclusions>
    103         </dependency>
    104 
    105         <!-- Spring end -->
    106 
    107         <!-- SpringMvc start -->
    108         <dependency>
    109             <groupId>org.springframework</groupId>
    110             <artifactId>spring-webmvc</artifactId>
    111             <version>${spring.version}</version>
    112             <exclusions>
    113                 <exclusion>
    114                     <groupId>org.springframework</groupId>
    115                     <artifactId>spring-core</artifactId>
    116                 </exclusion>
    117             </exclusions>
    118         </dependency>
    119         <dependency>
    120             <groupId>org.aspectj</groupId>
    121             <artifactId>aspectjweaver</artifactId>
    122             <version>1.8.2</version>
    123         </dependency>
    124         <!-- SpringMvc end -->
    125 
    126         <!-- MyBatis start -->
    127         <dependency>
    128             <groupId>org.mybatis</groupId>
    129             <artifactId>mybatis</artifactId>
    130             <version>3.1.1</version>
    131         </dependency>
    132         <dependency>
    133             <groupId>org.mybatis</groupId>
    134             <artifactId>mybatis-spring</artifactId>
    135             <version>1.2.3</version>
    136         </dependency>
    137         <dependency>
    138             <groupId>org.mybatis</groupId>
    139             <artifactId>mybatis-ehcache</artifactId>
    140             <version>1.0.0</version>
    141         </dependency>
    142         <!-- MyBatis end -->
    143 
    144         <dependency>
    145             <groupId>org.apache.commons</groupId>
    146             <artifactId>commons-collections4</artifactId>
    147             <version>4.1</version>
    148         </dependency>
    149         <dependency>
    150             <groupId>log4j</groupId>
    151             <artifactId>log4j</artifactId>
    152             <version>1.2.17</version>
    153         </dependency>
    154         <dependency>
    155             <groupId>org.slf4j</groupId>
    156             <artifactId>slf4j-log4j12</artifactId>
    157             <version>1.7.7</version>
    158         </dependency>
    159         <dependency>
    160             <groupId>org.slf4j</groupId>
    161             <artifactId>slf4j-api</artifactId>
    162             <version>1.7.7</version>
    163         </dependency>
    164 
    165         <!-- druid -->
    166         <dependency>
    167             <groupId>com.alibaba</groupId>
    168             <artifactId>druid</artifactId>
    169             <version>0.2.10</version>
    170         </dependency>
    171 
    172         <!-- JDBC MySQL Driver -->
    173         <dependency>
    174             <groupId>mysql</groupId>
    175             <artifactId>mysql-connector-java</artifactId>
    176             <version>5.1.21</version>
    177         </dependency>
    178 
    179         <!-- Collections -->
    180         <dependency>
    181             <groupId>commons-collections</groupId>
    182             <artifactId>commons-collections</artifactId>
    183             <version>3.2</version>
    184         </dependency>
    185         <dependency>
    186             <groupId>commons-fileupload</groupId>
    187             <artifactId>commons-fileupload</artifactId>
    188             <version>1.3.1</version>
    189         </dependency>
    190         <dependency>
    191             <groupId>commons-io</groupId>
    192             <artifactId>commons-io</artifactId>
    193             <version>2.4</version>
    194         </dependency>
    195         <dependency>
    196             <groupId>javax.servlet</groupId>
    197             <artifactId>servlet-api</artifactId>
    198             <version>2.5</version>
    199         </dependency>
    200         <dependency>
    201             <groupId>net.sf.ehcache</groupId>
    202             <artifactId>ehcache-core</artifactId>
    203             <version>2.6.11</version>
    204         </dependency>
    205         <dependency>
    206             <groupId>commons-logging</groupId>
    207             <artifactId>commons-logging</artifactId>
    208             <version>1.1.3</version>
    209         </dependency>
    210         <dependency>
    211             <groupId>com.fasterxml.jackson.core</groupId>
    212             <artifactId>jackson-annotations</artifactId>
    213             <version>2.8.8</version>
    214         </dependency>
    215         <dependency>
    216             <groupId>com.alibaba</groupId>
    217             <artifactId>fastjson</artifactId>
    218             <version>1.1.15</version>
    219         </dependency>
    220         <dependency>  
    221             <groupId>com.fasterxml.jackson.core</groupId>  
    222             <artifactId>jackson-core</artifactId>  
    223             <version>2.1.0</version>  
    224         </dependency>  
    225         <dependency>  
    226             <groupId>com.fasterxml.jackson.core</groupId>  
    227             <artifactId>jackson-databind</artifactId>  
    228             <version>2.1.0</version>  
    229         </dependency> 
    230         <dependency>
    231             <groupId>org.apache.httpcomponents</groupId>
    232             <artifactId>httpmime</artifactId>
    233             <version>4.5.3</version>
    234             <exclusions>
    235                 <exclusion>
    236                     <groupId>org.apache.httpcomponents</groupId>
    237                     <artifactId>httpclient</artifactId>
    238                 </exclusion>
    239             </exclusions>
    240         </dependency>
    241         <!-- <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> 
    242             <version>4.1.2</version> </dependency> -->
    243         <!-- <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> 
    244             <version>1.2</version> </dependency> -->
    245     </dependencies>
    246 
    247     <build>
    248         <plugins>
    249             <plugin>
    250                 <groupId>org.apache.maven.plugins</groupId>
    251                 <artifactId>maven-war-plugin</artifactId>
    252                 <version>2.6</version>
    253                 <configuration>
    254                     <failOnMissingWebXml>true</failOnMissingWebXml>
    255                 </configuration>
    256             </plugin>
    257 
    258 
    259             <plugin>
    260                 <groupId>com.maven.plugins</groupId>
    261                 <artifactId>maven-compiler-plugin</artifactId>
    262                 <version>6.1.7</version>
    263                 <configuration>
    264                     <source>1.7</source>
    265                     <target>1.7</target>
    266                 </configuration>
    267             </plugin>
    268 
    269 
    270         </plugins>
    271     </build>
    272 </project>
    View Code

    web

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
     3 <web-app>
     4     <!-- 对标签有顺序要求 -->
     5     <!-- 初始化应用上下文 -->
     6     <!-- <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/classes/spring.xml</param-value> 
     7         </context-param> -->
     8     <context-param>
     9         <param-name>contextConfigLocation</param-name>
    10         <param-value>classpath*:/spring.xml</param-value>
    11     </context-param>
    12     
    13      <filter>
    14         <filter-name>characterEncodingFilter</filter-name>
    15         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    16         <init-param>
    17             <param-name>encoding</param-name>
    18             <param-value>utf-8</param-value>
    19         </init-param>
    20         <init-param>
    21             <param-name>forceEncoding</param-name>
    22             <param-value>true</param-value>
    23         </init-param>
    24     </filter>
    25     <filter-mapping>
    26         <filter-name>characterEncodingFilter</filter-name>
    27         <url-pattern>/*</url-pattern>
    28     </filter-mapping> 
    29 
    30     <listener>
    31         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    32     </listener>
    33     
    34 
    35 
    36     
    37     <servlet>
    38         <servlet-name>Spring Mvc Servlet</servlet-name>
    39         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    40         <init-param>
    41             <param-name>contextConfigLocation</param-name>
    42             <param-value>classpath*:/spring-mvc.xml</param-value>
    43         </init-param>
    44         <load-on-startup>2</load-on-startup>
    45     </servlet>
    46        <!-- druid监控 -->
    47     <servlet>
    48         <servlet-name>DruidStatView</servlet-name>
    49         <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    50     </servlet>
    51     <servlet-mapping>
    52         <servlet-name>Spring Mvc Servlet</servlet-name>
    53         <url-pattern>/</url-pattern>
    54     </servlet-mapping>
    55 
    56     
    57     <servlet-mapping>
    58         <servlet-name>DruidStatView</servlet-name>
    59         <url-pattern>/druid/*</url-pattern>
    60     </servlet-mapping>
    61 
    62 
    63     
    64         
    65         
    66 <!--  附:web.xml标签放置顺序
    67 1. icon?
    68 2. display-name?
    69 3. description?
    70 4. distributable?
    71 5. context-param*
    72 6. filter*
    73 7. filter-mapping*
    74 8. listener*
    75 9. servlet*
    76 10.servlet-mapping*
    77 11.session-config?
    78 12.mime-mapping*
    79 13.welcome-file-list?
    80 14.error-page*
    81 15.taglib*
    82 16.resource-env-ref*
    83 17.resource-ref*
    84 18.security-constraint*
    85 19.login-config?
    86 20.security-role*
    87 21.env-entry*
    88 22.ejb-ref*
    89 23.ejb-local-ref
    90 "?"表示该标签出现次数最多为1,"*"表示可以多次出现。 -->
    91 
    92 
    93 </web-app>
    View Code

    3、下面是配置文件从上往下依次贴出

    map文件

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
     3 <mapper namespace="com.fh.test.dao.TestNameDao">
     4    <select id="selectUserById" parameterType="int" resultType="com.fh.test.model.User">
     5       <![CDATA[  select id as id,name as name,age as age from name where id=#{id}  ]]>
     6    </select>
     7    
     8    <insert id="insertUser" parameterType="com.fh.test.model.User" >
     9        <![CDATA[  insert into name(id,name,age) value(#{id},#{name},#{age})    ]]>
    10    </insert>
    11 
    12    <update id="updateUser" parameterType="com.fh.test.model.User">
    13        <![CDATA[    update name set name=#{name},age=#{age} where id=#{id} ]]>
    14    </update>
    15    <delete id="deleteUser" parameterType="int" >
    16        <![CDATA[   delete from name where id=#{id} ]]>
    17    </delete>
    18   
    19 </mapper>
    View Code

    ehcache.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3          xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" >
     4     <diskStore path="java.io.tmpdir" />
     5 
     6     <defaultCache
     7             maxElementsInMemory="500"
     8             eternal="false"
     9             timeToIdleSeconds="300"
    10             timeToLiveSeconds="1200"
    11             overflowToDisk="true" />
    12    <!-- name:缓存名称。
    13     maxElementsInMemory:缓存最大个数。
    14     eternal:对象是否永久有效,一但设置了,timeout将不起作用。
    15     timeToIdleSeconds:对象在失效前的允许闲置时间(秒)。当eternal=false时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
    16     timeToLiveSeconds:对象在失效前允许存活时间(秒).最大时间介于创建时间和失效时间之间.当eternal=false时使用,默认是0,也就是对象存活时间无穷大。
    17     overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将对象写到磁盘中。
    18     diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
    19     maxElementsOnDisk:硬盘最大缓存个数。
    20     diskPersistent:是否缓存虚拟机重启期数据,默认值为false。
    21     diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
    22     memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
    23     clearOnFlush:内存数量最大时是否清除。
    24     <diskStore>表示当内存缓存中对象数量超过类设置内存缓存数量时,将 缓存对象写到硬盘,path=”java.io.tmpdir”表示把数据写到这个目录下。Java.io.tmpdir目录在运行时会根据相对路径生成。
    25     <defaultCache>表示设定缓存的默认数据过期策略。
    26     <cache>表示设定用具体的命名缓存的数据过期策略-->
    27     <cache
    28             name="indexCache"
    29             maxElementsInMemory="150"
    30             eternal="true"
    31             timeToLiveSeconds="0"
    32             timeToIdleSeconds="0"
    33             overflowToDisk="false"/>
    34     <cache
    35             name="nationCache"
    36             maxElementsInMemory="200"
    37             eternal="true"
    38             timeToLiveSeconds="0"
    39             timeToIdleSeconds="0"
    40             overflowToDisk="false"/>
    41 </ehcache>
    View Code
      1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.7">
      2     <xs:element name="ehcache">
      3         <xs:complexType>
      4             <xs:sequence>
      5                 <xs:element maxOccurs="1" minOccurs="0" ref="diskStore"/>
      6                 <xs:element maxOccurs="1" minOccurs="0" ref="sizeOfPolicy"/>
      7                 <xs:element maxOccurs="1" minOccurs="0" ref="transactionManagerLookup"/>
      8                 <xs:element maxOccurs="1" minOccurs="0" ref="cacheManagerEventListenerFactory"/>
      9                 <xs:element maxOccurs="1" minOccurs="0" ref="managementRESTService"/>
     10                 <xs:element maxOccurs="unbounded" minOccurs="0" ref="cacheManagerPeerProviderFactory"/>
     11                 <xs:element maxOccurs="unbounded" minOccurs="0" ref="cacheManagerPeerListenerFactory"/>
     12                 <xs:element maxOccurs="1" minOccurs="0" ref="terracottaConfig"/>
     13                 <xs:element maxOccurs="1" minOccurs="0" ref="defaultCache"/>
     14                 <xs:element maxOccurs="unbounded" minOccurs="0" ref="cache"/>
     15             </xs:sequence>
     16             <xs:attribute name="name" use="optional"/>
     17             <xs:attribute default="true" name="updateCheck" type="xs:boolean" use="optional"/>
     18             <xs:attribute default="autodetect" name="monitoring" type="monitoringType" use="optional"/>
     19             <xs:attribute default="true" name="dynamicConfig" type="xs:boolean" use="optional"/>
     20             <xs:attribute default="15" name="defaultTransactionTimeoutInSeconds" type="xs:integer" use="optional"/>
     21             <xs:attribute default="0" name="maxBytesLocalHeap" type="memoryUnitOrPercentage" use="optional"/>
     22             <xs:attribute default="0" name="maxBytesLocalOffHeap" type="memoryUnit" use="optional"/>
     23             <xs:attribute default="0" name="maxBytesLocalDisk" type="memoryUnit" use="optional"/>
     24         </xs:complexType>
     25     </xs:element>
     26     <xs:element name="managementRESTService">
     27         <xs:complexType>
     28             <xs:attribute name="enabled" type="xs:boolean" use="optional"/>
     29             <xs:attribute name="bind" use="optional"/>
     30             <xs:attribute name="securityServiceLocation" use="optional"/>
     31             <xs:attribute name="securityServiceTimeout" use="optional" type="xs:integer"/>
     32             <xs:attribute name="sslEnabled" use="optional" type="xs:boolean"/>
     33             <xs:attribute name="needClientAuth" use="optional" type="xs:boolean"/>
     34             <xs:attribute name="sampleHistorySize" use="optional" type="xs:integer"/>
     35             <xs:attribute name="sampleIntervalSeconds" use="optional" type="xs:integer"/>
     36             <xs:attribute name="sampleSearchIntervalSeconds" use="optional" type="xs:integer"/>
     37         </xs:complexType>
     38     </xs:element>
     39     <xs:element name="diskStore">
     40         <xs:complexType>
     41             <xs:attribute name="path" use="optional"/>
     42         </xs:complexType>
     43     </xs:element>
     44     <xs:element name="transactionManagerLookup">
     45         <xs:complexType>
     46             <xs:attribute name="class" use="required"/>
     47             <xs:attribute name="properties" use="optional"/>
     48             <xs:attribute name="propertySeparator" use="optional"/>
     49         </xs:complexType>
     50     </xs:element>
     51     <xs:element name="cacheManagerEventListenerFactory">
     52         <xs:complexType>
     53             <xs:attribute name="class" use="required"/>
     54             <xs:attribute name="properties" use="optional"/>
     55             <xs:attribute name="propertySeparator" use="optional"/>
     56         </xs:complexType>
     57     </xs:element>
     58     <xs:element name="cacheManagerPeerProviderFactory">
     59         <xs:complexType>
     60             <xs:attribute name="class" use="required"/>
     61             <xs:attribute name="properties" use="optional"/>
     62             <xs:attribute name="propertySeparator" use="optional"/>
     63         </xs:complexType>
     64     </xs:element>
     65     <xs:element name="cacheManagerPeerListenerFactory">
     66         <xs:complexType>
     67             <xs:attribute name="class" use="required"/>
     68             <xs:attribute name="properties" use="optional"/>
     69             <xs:attribute name="propertySeparator" use="optional"/>
     70         </xs:complexType>
     71     </xs:element>
     72     <xs:element name="terracottaConfig">
     73         <xs:complexType>
     74             <xs:sequence>
     75                 <xs:element maxOccurs="1" minOccurs="0" name="tc-config">
     76                     <xs:complexType>
     77                         <xs:sequence>
     78                             <xs:any maxOccurs="unbounded" minOccurs="0" processContents="skip"/>
     79                         </xs:sequence>
     80                     </xs:complexType>
     81                 </xs:element>
     82             </xs:sequence>
     83             <xs:attribute default="localhost:9510" name="url" use="optional"/>
     84             <xs:attribute name="rejoin" type="xs:boolean" use="optional" default="false"/>
     85             <xs:attribute name="wanEnabledTSA" type="xs:boolean" use="optional" default="false"/>
     86         </xs:complexType>
     87     </xs:element>
     88     <!--
     89      add clone support for addition of cacheExceptionHandler. Important!
     90     -->
     91     <xs:element name="defaultCache">
     92         <xs:complexType>
     93             <xs:sequence>
     94                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheEventListenerFactory"/>
     95                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheExtensionFactory"/>
     96                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheLoaderFactory"/>
     97                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheDecoratorFactory"/>
     98                 <xs:element minOccurs="0" maxOccurs="1" ref="bootstrapCacheLoaderFactory"/>
     99                 <xs:element minOccurs="0" maxOccurs="1" ref="cacheExceptionHandlerFactory"/>
    100                 <xs:element minOccurs="0" maxOccurs="1" ref="pinning"/>
    101                 <xs:element minOccurs="0" maxOccurs="1" ref="terracotta"/>
    102                 <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriter"/>
    103                 <xs:element minOccurs="0" maxOccurs="1" ref="copyStrategy"/>
    104                 <xs:element minOccurs="0" maxOccurs="1" ref="elementValueComparator"/>
    105                 <xs:element minOccurs="0" maxOccurs="1" ref="sizeOfPolicy"/>
    106                 <xs:element minOccurs="0" maxOccurs="1" ref="persistence"/>
    107             </xs:sequence>
    108             <xs:attribute name="diskExpiryThreadIntervalSeconds" type="xs:integer" use="optional"/>
    109             <xs:attribute name="diskSpoolBufferSizeMB" type="xs:integer" use="optional"/>
    110             <xs:attribute name="diskPersistent" type="xs:boolean" use="optional"/>
    111             <xs:attribute name="diskAccessStripes" type="xs:integer" use="optional" default="1"/>
    112             <xs:attribute name="eternal" type="xs:boolean" use="optional" default="false"/>
    113             <xs:attribute name="maxElementsInMemory" type="xs:nonNegativeInteger" use="optional"/>
    114             <xs:attribute name="maxEntriesLocalHeap" type="xs:nonNegativeInteger" use="optional"/>
    115             <xs:attribute name="clearOnFlush" type="xs:boolean" use="optional"/>
    116             <xs:attribute name="memoryStoreEvictionPolicy" type="xs:string" use="optional"/>
    117             <xs:attribute name="overflowToDisk" type="xs:boolean" use="optional"/>
    118             <xs:attribute name="timeToIdleSeconds" type="xs:nonNegativeInteger" use="optional"/>
    119             <xs:attribute name="timeToLiveSeconds" type="xs:nonNegativeInteger" use="optional"/>
    120             <xs:attribute name="maxElementsOnDisk" type="xs:nonNegativeInteger" use="optional"/>
    121             <xs:attribute name="maxEntriesLocalDisk" type="xs:nonNegativeInteger" use="optional"/>
    122             <xs:attribute name="transactionalMode" type="transactionalMode" use="optional" default="off"/>
    123             <xs:attribute name="statistics" type="xs:boolean" use="optional" default="false"/>
    124             <xs:attribute name="copyOnRead" type="xs:boolean" use="optional" default="false"/>
    125             <xs:attribute name="copyOnWrite" type="xs:boolean" use="optional" default="false"/>
    126             <xs:attribute name="cacheLoaderTimeoutMillis" type="xs:integer" use="optional" default="0"/>
    127             <xs:attribute name="overflowToOffHeap" type="xs:boolean" use="optional" default="false"/>
    128             <xs:attribute name="maxMemoryOffHeap" type="xs:string" use="optional"/>
    129         </xs:complexType>
    130     </xs:element>
    131     <xs:element name="cache">
    132         <xs:complexType>
    133             <xs:sequence>
    134                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheEventListenerFactory"/>
    135                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheExtensionFactory"/>
    136                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheLoaderFactory"/>
    137                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheDecoratorFactory"/>
    138                 <xs:element minOccurs="0" maxOccurs="1" ref="bootstrapCacheLoaderFactory"/>
    139                 <xs:element minOccurs="0" maxOccurs="1" ref="cacheExceptionHandlerFactory"/>
    140                 <xs:element minOccurs="0" maxOccurs="1" ref="pinning"/>
    141                 <xs:element minOccurs="0" maxOccurs="1" ref="terracotta"/>
    142                 <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriter"/>
    143                 <xs:element minOccurs="0" maxOccurs="1" ref="copyStrategy"/>
    144                 <xs:element minOccurs="0" maxOccurs="1" ref="searchable"/>
    145                 <xs:element minOccurs="0" maxOccurs="1" ref="elementValueComparator"/>
    146                 <xs:element minOccurs="0" maxOccurs="1" ref="sizeOfPolicy"/>
    147                 <xs:element minOccurs="0" maxOccurs="1" ref="persistence"/>
    148             </xs:sequence>
    149             <xs:attribute name="diskExpiryThreadIntervalSeconds" type="xs:integer" use="optional"/>
    150             <xs:attribute name="diskSpoolBufferSizeMB" type="xs:integer" use="optional"/>
    151             <xs:attribute name="diskPersistent" type="xs:boolean" use="optional"/>
    152             <xs:attribute name="diskAccessStripes" type="xs:integer" use="optional" default="1"/>
    153             <xs:attribute name="eternal" type="xs:boolean" use="optional" default="false"/>
    154             <xs:attribute name="maxElementsInMemory" type="xs:nonNegativeInteger" use="optional"/>
    155             <xs:attribute name="maxEntriesLocalHeap" type="xs:nonNegativeInteger" use="optional"/>
    156             <xs:attribute name="memoryStoreEvictionPolicy" type="xs:string" use="optional"/>
    157             <xs:attribute name="clearOnFlush" type="xs:boolean" use="optional"/>
    158             <xs:attribute name="name" type="xs:string" use="required"/>
    159             <xs:attribute name="overflowToDisk" type="xs:boolean" use="optional"/>
    160             <xs:attribute name="timeToIdleSeconds" type="xs:nonNegativeInteger" use="optional"/>
    161             <xs:attribute name="timeToLiveSeconds" type="xs:nonNegativeInteger" use="optional"/>
    162             <xs:attribute name="maxElementsOnDisk" type="xs:nonNegativeInteger" use="optional"/>
    163             <xs:attribute name="maxEntriesLocalDisk" type="xs:nonNegativeInteger" use="optional"/>
    164             <xs:attribute name="maxEntriesInCache" type="xs:nonNegativeInteger" use="optional"/>
    165             <xs:attribute name="transactionalMode" type="transactionalMode" use="optional" default="off"/>
    166             <xs:attribute name="statistics" type="xs:boolean" use="optional" default="false"/>
    167             <xs:attribute name="copyOnRead" type="xs:boolean" use="optional" default="false"/>
    168             <xs:attribute name="copyOnWrite" type="xs:boolean" use="optional" default="false"/>
    169             <xs:attribute name="logging" type="xs:boolean" use="optional" default="false"/>
    170             <xs:attribute name="cacheLoaderTimeoutMillis" type="xs:integer" use="optional" default="0"/>
    171             <xs:attribute name="overflowToOffHeap" type="xs:boolean" use="optional" default="false"/>
    172             <xs:attribute name="maxMemoryOffHeap" type="xs:string" use="optional"/>
    173             <xs:attribute default="0" name="maxBytesLocalHeap" type="memoryUnitOrPercentage" use="optional"/>
    174             <xs:attribute default="0" name="maxBytesLocalOffHeap" type="memoryUnitOrPercentage" use="optional"/>
    175             <xs:attribute default="0" name="maxBytesLocalDisk" type="memoryUnitOrPercentage" use="optional"/>
    176         </xs:complexType>
    177     </xs:element>
    178     <xs:element name="cacheEventListenerFactory">
    179         <xs:complexType>
    180             <xs:attribute name="class" use="required"/>
    181             <xs:attribute name="properties" use="optional"/>
    182             <xs:attribute name="propertySeparator" use="optional"/>
    183             <xs:attribute name="listenFor" use="optional" type="notificationScope" default="all"/>
    184         </xs:complexType>
    185     </xs:element>
    186     <xs:element name="bootstrapCacheLoaderFactory">
    187         <xs:complexType>
    188             <xs:attribute name="class" use="required"/>
    189             <xs:attribute name="properties" use="optional"/>
    190             <xs:attribute name="propertySeparator" use="optional"/>
    191         </xs:complexType>
    192     </xs:element>
    193     <xs:element name="cacheExtensionFactory">
    194         <xs:complexType>
    195             <xs:attribute name="class" use="required"/>
    196             <xs:attribute name="properties" use="optional"/>
    197             <xs:attribute name="propertySeparator" use="optional"/>
    198         </xs:complexType>
    199     </xs:element>
    200     <xs:element name="cacheExceptionHandlerFactory">
    201         <xs:complexType>
    202             <xs:attribute name="class" use="required"/>
    203             <xs:attribute name="properties" use="optional"/>
    204             <xs:attribute name="propertySeparator" use="optional"/>
    205         </xs:complexType>
    206     </xs:element>
    207     <xs:element name="cacheLoaderFactory">
    208         <xs:complexType>
    209             <xs:attribute name="class" use="required"/>
    210             <xs:attribute name="properties" use="optional"/>
    211             <xs:attribute name="propertySeparator" use="optional"/>
    212         </xs:complexType>
    213     </xs:element>
    214     <xs:element name="cacheDecoratorFactory">
    215         <xs:complexType>
    216             <xs:attribute name="class" use="required"/>
    217             <xs:attribute name="properties" use="optional"/>
    218             <xs:attribute name="propertySeparator" use="optional"/>
    219         </xs:complexType>
    220     </xs:element>
    221     <xs:element name="searchAttribute">
    222         <xs:complexType>
    223             <xs:attribute name="name" use="required" type="xs:string"/>
    224             <xs:attribute name="expression" type="xs:string"/>
    225             <xs:attribute name="class" type="xs:string"/>
    226             <xs:attribute name="type" type="xs:string" use="optional"/>
    227             <xs:attribute name="properties" use="optional"/>
    228             <xs:attribute name="propertySeparator" use="optional"/>
    229         </xs:complexType>
    230     </xs:element>
    231     <xs:element name="searchable">
    232         <xs:complexType>
    233             <xs:sequence>
    234                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="searchAttribute"/>
    235             </xs:sequence>
    236             <xs:attribute name="keys" use="optional" type="xs:boolean" default="true"/>
    237             <xs:attribute name="values" use="optional" type="xs:boolean" default="true"/>
    238             <xs:attribute name="allowDynamicIndexing" use="optional" type="xs:boolean" default="false"/>
    239         </xs:complexType>
    240     </xs:element>
    241     <xs:element name="pinning">
    242         <xs:complexType>
    243             <xs:attribute name="store" use="required" type="pinningStoreType"/>
    244         </xs:complexType>
    245     </xs:element>
    246     <xs:element name="terracotta">
    247         <xs:complexType>
    248             <xs:sequence>
    249                 <xs:element minOccurs="0" maxOccurs="1" ref="nonstop"/>
    250             </xs:sequence>
    251             <xs:attribute name="clustered" use="optional" type="xs:boolean" default="true"/>
    252             <xs:attribute name="coherentReads" use="optional" type="xs:boolean" default="true"/>
    253             <xs:attribute name="localKeyCache" use="optional" type="xs:boolean" default="false"/>
    254             <xs:attribute name="localKeyCacheSize" use="optional" type="xs:positiveInteger" default="300000"/>
    255             <xs:attribute name="orphanEviction" use="optional" type="xs:boolean" default="true"/>
    256             <xs:attribute name="orphanEvictionPeriod" use="optional" type="xs:positiveInteger" default="4"/>
    257             <xs:attribute name="copyOnRead" use="optional" type="xs:boolean" default="false"/>
    258             <xs:attribute name="coherent" use="optional" type="xs:boolean" default="false"/>
    259             <xs:attribute name="consistency" use="optional" type="consistencyType" default="eventual"/>
    260             <xs:attribute name="synchronousWrites" use="optional" type="xs:boolean" default="false"/>
    261             <xs:attribute name="concurrency" use="optional" type="xs:nonNegativeInteger" default="0"/>
    262             <xs:attribute name="localCacheEnabled" use="optional" type="xs:boolean" default="true"/>
    263             <xs:attribute name="compressionEnabled" use="optional" type="xs:boolean" default="false"/>
    264         </xs:complexType>
    265     </xs:element>
    266     <xs:simpleType name="consistencyType">
    267         <xs:restriction base="xs:string">
    268             <xs:enumeration value="strong"/>
    269             <xs:enumeration value="eventual"/>
    270         </xs:restriction>
    271     </xs:simpleType>
    272     <xs:element name="nonstop">
    273         <xs:complexType>
    274             <xs:sequence>
    275                 <xs:element minOccurs="0" maxOccurs="1" ref="timeoutBehavior"/>
    276             </xs:sequence>
    277             <xs:attribute name="enabled" use="optional" type="xs:boolean" default="true"/>
    278             <xs:attribute name="immediateTimeout" use="optional" type="xs:boolean" default="false"/>
    279             <xs:attribute name="timeoutMillis" use="optional" type="xs:positiveInteger" default="30000"/>
    280             <xs:attribute name="searchTimeoutMillis" use="optional" type="xs:positiveInteger" default="30000"/>
    281         </xs:complexType>
    282     </xs:element>
    283     <xs:element name="timeoutBehavior">
    284         <xs:complexType>
    285             <xs:attribute name="type" use="optional" type="timeoutBehaviorType" default="exception"/>
    286             <xs:attribute name="properties" use="optional" default=""/>
    287             <xs:attribute name="propertySeparator" use="optional" default=","/>
    288         </xs:complexType>
    289     </xs:element>
    290     <xs:simpleType name="timeoutBehaviorType">
    291         <xs:restriction base="xs:string">
    292             <xs:enumeration value="noop"/>
    293             <xs:enumeration value="exception"/>
    294             <xs:enumeration value="localReads"/>
    295             <xs:enumeration value="localReadsAndExceptionOnWrite"/>
    296         </xs:restriction>
    297     </xs:simpleType>
    298     <xs:simpleType name="monitoringType">
    299         <xs:restriction base="xs:string">
    300             <xs:enumeration value="autodetect"/>
    301             <xs:enumeration value="on"/>
    302             <xs:enumeration value="off"/>
    303         </xs:restriction>
    304     </xs:simpleType>
    305     <xs:simpleType name="pinningStoreType">
    306         <xs:restriction base="xs:string">
    307             <xs:enumeration value="localMemory"/>
    308             <xs:enumeration value="inCache"/>
    309         </xs:restriction>
    310     </xs:simpleType>
    311     <xs:simpleType name="terracottaCacheValueType">
    312         <xs:restriction base="xs:string">
    313             <xs:enumeration value="serialization"/>
    314             <xs:enumeration value="identity"/>
    315         </xs:restriction>
    316     </xs:simpleType>
    317     <xs:simpleType name="transactionalMode">
    318         <xs:restriction base="xs:string">
    319             <xs:enumeration value="off"/>
    320             <xs:enumeration value="xa_strict"/>
    321             <xs:enumeration value="xa"/>
    322             <xs:enumeration value="local"/>
    323         </xs:restriction>
    324     </xs:simpleType>
    325     <xs:element name="cacheWriter">
    326         <xs:complexType>
    327             <xs:sequence>
    328                 <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriterFactory"/>
    329             </xs:sequence>
    330             <xs:attribute name="writeMode" use="optional" type="writeModeType" default="write-through"/>
    331             <xs:attribute name="notifyListenersOnException" use="optional" type="xs:boolean" default="false"/>
    332             <xs:attribute name="minWriteDelay" use="optional" type="xs:nonNegativeInteger" default="1"/>
    333             <xs:attribute name="maxWriteDelay" use="optional" type="xs:nonNegativeInteger" default="1"/>
    334             <xs:attribute name="rateLimitPerSecond" use="optional" type="xs:nonNegativeInteger" default="0"/>
    335             <xs:attribute name="writeCoalescing" use="optional" type="xs:boolean" default="false"/>
    336             <xs:attribute name="writeBatching" use="optional" type="xs:boolean" default="false"/>
    337             <xs:attribute name="writeBatchSize" use="optional" type="xs:positiveInteger" default="1"/>
    338             <xs:attribute name="retryAttempts" use="optional" type="xs:nonNegativeInteger" default="0"/>
    339             <xs:attribute name="retryAttemptDelaySeconds" use="optional" type="xs:nonNegativeInteger" default="1"/>
    340             <xs:attribute name="writeBehindConcurrency" use="optional" type="xs:nonNegativeInteger" default="1"/>
    341             <xs:attribute name="writeBehindMaxQueueSize" use="optional" type="xs:nonNegativeInteger" default="0"/>
    342         </xs:complexType>
    343     </xs:element>
    344     <xs:simpleType name="writeModeType">
    345         <xs:restriction base="xs:string">
    346             <xs:enumeration value="write-through"/>
    347             <xs:enumeration value="write-behind"/>
    348         </xs:restriction>
    349     </xs:simpleType>
    350     <xs:element name="cacheWriterFactory">
    351         <xs:complexType>
    352             <xs:attribute name="class" use="required"/>
    353             <xs:attribute name="properties" use="optional"/>
    354             <xs:attribute name="propertySeparator" use="optional"/>
    355         </xs:complexType>
    356     </xs:element>
    357     <xs:element name="copyStrategy">
    358         <xs:complexType>
    359             <xs:attribute name="class" use="required" type="xs:string"/>
    360         </xs:complexType>
    361     </xs:element>
    362     <xs:element name="elementValueComparator">
    363         <xs:complexType>
    364             <xs:attribute name="class" use="required" type="xs:string"/>
    365         </xs:complexType>
    366     </xs:element>
    367     <xs:element name="sizeOfPolicy">
    368         <xs:complexType>
    369             <xs:attribute name="maxDepth" use="required" type="xs:integer"/>
    370             <xs:attribute name="maxDepthExceededBehavior" use="optional" default="continue" type="maxDepthExceededBehavior"/>
    371         </xs:complexType>
    372     </xs:element>
    373     <xs:element name="persistence">
    374         <xs:complexType>
    375             <xs:attribute name="strategy" use="required" type="persistenceStrategy"/>
    376             <xs:attribute name="synchronousWrites" use="optional" default="false" type="xs:boolean"/>
    377         </xs:complexType>
    378     </xs:element>
    379     <xs:simpleType name="persistenceStrategy">
    380         <xs:restriction base="xs:string">
    381             <xs:enumeration value="localTempSwap"/>
    382             <xs:enumeration value="localRestartable"/>
    383             <xs:enumeration value="none"/>
    384             <xs:enumeration value="distributed"/>
    385         </xs:restriction>
    386     </xs:simpleType>
    387     <xs:simpleType name="maxDepthExceededBehavior">
    388         <xs:restriction base="xs:string">
    389             <xs:enumeration value="continue"/>
    390             <xs:enumeration value="abort"/>
    391         </xs:restriction>
    392     </xs:simpleType>
    393     <xs:simpleType name="notificationScope">
    394         <xs:restriction base="xs:string">
    395             <xs:enumeration value="local"/>
    396             <xs:enumeration value="remote"/>
    397             <xs:enumeration value="all"/>
    398         </xs:restriction>
    399     </xs:simpleType>
    400     <xs:simpleType name="memoryUnit">
    401         <xs:restriction base="xs:token">
    402             <xs:pattern value="[0-9]+[bBkKmMgG]?"/>
    403         </xs:restriction>
    404     </xs:simpleType>
    405     <xs:simpleType name="memoryUnitOrPercentage">
    406         <xs:restriction base="xs:token">
    407             <xs:pattern value="([0-9]+[bBkKmMgG]?|100%|[0-9]{1,2}%)"/>
    408         </xs:restriction>
    409     </xs:simpleType>
    410 </xs:schema>
    View Code

    上面这个没看过,是直接复制过来的

    jdbc

    1 jdbc.driverClassName=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://127.0.0.1:3306/test
    3 jdbc.username=fenghao
    4 jdbc.password=123456
    5 jdbc.fetch_size=50
    View Code

    log4g

     1 #log4j.rootLogger=INFO,ROLLING_FILE
     2 log4j.rootLogger=INFO,CONSOLE,ROLLING_FILE
     3 
     4 ##################
     5  #Console Appender
     6 ##################
     7 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
     8 log4j.appender.Threshold=INFO
     9 log4j.appender.CONSOLE.Target=System.out
    10 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    11 log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
    12 
    13 ########################
    14 # Rolling File    
    15 ########################
    16 log4j.appender.ROLLING_FILE=org.apache.log4j.DailyRollingFileAppender
    17 log4j.appender.ROLLING_FILE.Threshold=INFO
    18 log4j.appender.ROLLING_FILE.File=/app/log/spring-test.log
    19 log4j.appender.ROLLING_FILE.Append=true
    20 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    21 log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
    22 
    23 
    24 
    25 log4j.logger.org.springframework.aop.interceptor = ALL
    26 
    27 ##show the mysql for mybatis
    28 log4j.logger.com.ibatis=ALL
    29 log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ALL
    30 log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ALL
    31 log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ALL
    32 log4j.logger.java.sql.Connection=ALL
    33 log4j.logger.java.sql.Statement=ALL
    34 log4j.logger.java.sql.PreparedStatement=ALL
    35 
    36 log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorInterceptor = TRACE
    37 log4j.logger.com.fh.test.controller=ALL
    38 log4j.logger.com.fh.test.service.impl=ALL
    39 log4j.logger.com.fh.test.aspect=ALL
    View Code

    spring-mvc

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:context="http://www.springframework.org/schema/context"
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
     5     xsi:schemaLocation="
     6         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     7         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
     8         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
     9         ">
    10 
    11     <context:component-scan base-package="com.fh.test.controller"
    12         use-default-filters="true">
    13     </context:component-scan>
    14     
    15     <!-- 配置视图解析器 -->
    16     
    17     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    18       <property name="prefix" value="/WEB-INF/views/"></property>
    19       <property name="suffix" value=".jsp"></property>
    20     </bean>
    21 </beans>
    View Code

    spring

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <beans xmlns="http://www.springframework.org/schema/beans"
      3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
      4     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
      5     xmlns:context="http://www.springframework.org/schema/context"
      6     xmlns:cache="http://www.springframework.org/schema/cache"
      7     xsi:schemaLocation="
      8     http://www.springframework.org/schema/beans
      9     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     10     http://www.springframework.org/schema/context 
     11     http://www.springframework.org/schema/context/spring-context-4.0.xsd
     12     http://www.springframework.org/schema/tx 
     13     http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
     14     http://www.springframework.org/schema/aop 
     15     http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
     16     http://www.springframework.org/schema/cache
     17     http://www.springframework.org/schema/cache/spring-cache.xsd
     18     ">
     19 
     20     <context:property-placeholder location="classpath*:druid.properties" ignore-resource-not-found="true"/>
     21     
     22     <context:property-placeholder location="classpath*:jdbc.properties" ignore-resource-not-found="true"/>
     23     
     24     <context:annotation-config/>
     25     <context:component-scan base-package="com.fh.test.dao,com.fh.test.service,com.fh.test.aspect"
     26         use-default-filters="true">
     27     </context:component-scan>
     28 
     29  
     30     <cache:annotation-driven />
     31     <!-- 基于Ehcache 开始 -->
     32     <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
     33         p:cacheManager-ref="ehcacheManager" />
     34     <bean id="ehcacheManager"
     35         class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
     36         p:configLocation="classpath:ehcache.xml" />
     37     <!-- Ehcache 结束 -->
     38     <!--设置缓存管理器end -->
     39     
     40     
     41     <!-- 数据库配置 -->
     42     <!-- 配置数据源 -->
     43     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
     44            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     45         <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
     46         <property name="username" value="fenghao"/>
     47         <property name="password" value="123456"/>
     48 
     49          <!-- 配置初始化大小、最小、最大 -->
     50      <!--    <property name="initialSize" value="10"/>
     51         <property name="minIdle" value="${druid.minIdle}"/>
     52         <property name="maxActive" value="${druid.maxActive}"/> -->
     53 
     54       <!--   配置获取连接等待超时的时间
     55         <property name="maxWait" value="${druid.maxWait}"/> -->
     56 
     57         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
     58         <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}"/> -->
     59 
     60       <!--   配置一个连接在池中最小生存的时间,单位是毫秒
     61         <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}"/> -->
     62 
     63         <!-- <property name="validationQuery" value="${druid.validationQuery}"/>
     64         <property name="testWhileIdle" value="${druid.testWhileIdle}"/>
     65         <property name="testOnBorrow" value="${druid.testOnBorrow}"/>
     66         <property name="testOnReturn" value="${druid.testOnReturn}"/> -->
     67 
     68       <!--   打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用) -->
     69        <!--  <property name="poolPreparedStatements" value="true" />
     70         <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->
     71 
     72         <!-- 配置监控统计拦截的filters -->
     73         <property name="filters" value="stat"/> 
     74     </bean>
     75     <!-- 加载model类和映射文件 -->
     76     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     77         <property name="dataSource" ref="dataSource"></property>
     78         <property name="mapperLocations" value="classpath*:/mapping/*.xml"></property>
     79         <property name="typeAliasesPackage" value="com.fh.test.model"></property>
     80     </bean>
     81     
     82     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     83        <property name="basePackage" value="com.fh.test.dao"></property>
     84        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
     85     </bean>
     86     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     87         <property name="dataSource" ref="dataSource">
     88         </property>
     89     </bean>
     90     <tx:advice id="txAdvice" transaction-manager="transactionManager">
     91        <tx:attributes>
     92           <tx:method name="insert*" propagation="REQUIRED"/>
     93           <tx:method name="updat*" propagation="REQUIRED"/>
     94           <tx:method name="delete" propagation="REQUIRED"/>
     95            <!-- <tx:method name="*" propagation="REQUIRED" read-only="true"/> -->
     96        </tx:attributes>
     97     </tx:advice>
     98     <aop:config>
     99        <aop:pointcut expression="execution(* com.fh.test.service.impl.*.*(..))" id="txpointcut"/>
    100        <aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
    101     </aop:config>
    102     
    103      <!-- true 表示强制使用cglib代理 -->
    104     <aop:aspectj-autoproxy />
    105     
    106     
    107     <bean id="test" class="com.fh.test.aspect.TestAspect"></bean>
    108     
    109     <aop:config>
    110        <aop:pointcut expression="execution(* com.fh.test.service.TestService.test(String)) and args(key)" id="pio"/>
    111        <aop:aspect ref="test">
    112           <aop:before method="before" pointcut-ref="pio"/>
    113           <aop:around method="after" pointcut-ref="pio"/>
    114        </aop:aspect>
    115     </aop:config>
    116     
    117       <!--性能监控开始-->
    118     <bean id="performanceMonitor"
    119           class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor">
    120     </bean>
    121     <!-- 性能监控的切面配置 -->
    122     <aop:config>
    123         <aop:pointcut id="allServiceMethods"
    124                       expression="execution(* com.fh.test.service.impl.*.*(..))"/>
    125         <aop:advisor pointcut-ref="allServiceMethods" advice-ref="performanceMonitor"
    126                      order="2"/>
    127     </aop:config>
    128     <!--性能监控结束-->
    129     
    130     
    131     
    132     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    133    <property name="messageConverters">
    134        <list>
    135            <ref bean="jsonConverter" />
    136        </list>
    137    </property>
    138 </bean>
    139 
    140 <bean id="jsonConverter"   class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    141    <property name="supportedMediaTypes" value="application/json" />
    142 </bean>
    143 </beans>
    View Code

    4、下面是src/main/java下的代码

    aspect

     1 package com.fh.test.aspect;
     2 
     3 import org.aspectj.lang.ProceedingJoinPoint;
     4 import org.aspectj.lang.annotation.After;
     5 import org.aspectj.lang.annotation.Around;
     6 import org.aspectj.lang.annotation.Aspect;
     7 import org.aspectj.lang.annotation.Before;
     8 import org.aspectj.lang.annotation.Pointcut;
     9 import org.slf4j.Logger;
    10 import org.slf4j.LoggerFactory;
    11 import org.springframework.stereotype.Service;
    12 
    13 
    14 
    15 public class TestAspect {
    16     private static final Logger logger=LoggerFactory.getLogger(TestAspect.class);
    17     
    18     /*@Pointcut("execution(* com.fh.test.service.TestService.test(String) && args(key))")
    19     public void test(String key){};
    20     
    21     @Before("test(key)")
    22     public void before(String key){
    23         logger.debug("this is Aspect  key is {}",key);
    24     }
    25     
    26     @Around("test(key)")
    27     public void after(ProceedingJoinPoint jp){
    28         try {
    29             Object proceed = jp.proceed();
    30             logger.debug("this is Aspect return is {}",proceed.toString());
    31         } catch (Throwable e) {
    32             e.printStackTrace();
    33         }
    34     }*/
    35     
    36 
    37     
    38     
    39     public void before(String key){
    40         logger.debug("this is Aspect before key{}",key);
    41     }
    42     
    43     
    44     public Object after(ProceedingJoinPoint jp,String key){
    45         Object proceed=null;
    46         try {
    47             proceed = jp.proceed();
    48             logger.debug("this is Aspect return is {}",proceed.toString());
    49             return proceed;
    50         } catch (Throwable e) {
    51             e.printStackTrace();
    52             return proceed;
    53         }
    54     }
    55 
    56 }
    View Code

    controller

     1 package com.fh.test.controller;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletInputStream;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 
     9 import org.apache.commons.io.IOUtils;
    10 import org.slf4j.Logger;
    11 import org.slf4j.LoggerFactory;
    12 import org.springframework.beans.factory.annotation.Autowired;
    13 import org.springframework.beans.factory.annotation.Qualifier;
    14 import org.springframework.beans.factory.annotation.Value;
    15 import org.springframework.stereotype.Controller;
    16 import org.springframework.web.bind.annotation.RequestMapping;
    17 import org.springframework.web.bind.annotation.RequestMethod;
    18 import org.springframework.web.bind.annotation.RequestParam;
    19 import org.springframework.web.bind.annotation.ResponseBody;
    20 
    21 import com.alibaba.fastjson.JSONObject;
    22 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
    23 import com.fh.test.model.User;
    24 import com.fh.test.service.TestService;
    25 
    26 @Controller
    27 public class ControllerTest {
    28     
    29     private static final Logger logger=LoggerFactory.getLogger(ControllerTest.class);
    30     
    31     @Autowired
    32     @Qualifier("testServiceImpl")
    33     private TestService test;
    34     
    35     @Value("${test-value}")
    36     private String testValue;
    37     
    38     @RequestMapping(value="/test/t",method=RequestMethod.POST)
    39     @ResponseBody
    40     public String test(@RequestParam(value="id")String id){
    41         User user = test.getUserName(id);
    42         logger.debug("
     woo!!! {}",testValue);
    43         return user.toString();
    44     }
    45     
    46     @RequestMapping(value="/test/insert",method=RequestMethod.POST)
    47     @ResponseBody
    48     public String insert(HttpServletRequest request, HttpServletResponse response){
    49         String message=null;
    50         try {
    51             ServletInputStream inputStream = request.getInputStream();
    52             message = IOUtils.toString(inputStream);
    53         } catch (IOException e) {
    54             logger.error("
     IO Excepation");
    55             e.printStackTrace();
    56         }
    57         logger.debug("message is "+message);
    58         User parse = JSONObject.parseObject(message, User.class);
    59         int state = test.insertName(parse);
    60         return String.valueOf(state);
    61     }
    62     
    63     @RequestMapping(value="/test/update",method=RequestMethod.POST)
    64     @ResponseBody
    65     public String update(HttpServletRequest request, HttpServletResponse response){
    66         String message=null;
    67         try {
    68             ServletInputStream inputStream = request.getInputStream();
    69             message = IOUtils.toString(inputStream);
    70         } catch (IOException e) {
    71             logger.error("
     IO Excepation");
    72             e.printStackTrace();
    73         }
    74         logger.debug("message is "+message);
    75         User parse = JSONObject.parseObject(message, User.class);
    76         int updateName = test.updateName(parse);
    77         return String.valueOf(updateName);
    78     }
    79     
    80     @RequestMapping(value="/test/delete",method=RequestMethod.POST)
    81     @ResponseBody
    82     public String delete(@RequestParam(value="id")String id){
    83         logger.debug("id {}",id);
    84         int deleteName = test.deleteName(Integer.parseInt(id));
    85         return String.valueOf(deleteName);
    86     }
    87     
    88     @RequestMapping(value="/test/asp",method=RequestMethod.POST)
    89     @ResponseBody
    90     public String testAsp(@RequestParam(value="key")String key){
    91         logger.debug("this is Controller");
    92         return test.test(key);
    93     }
    94     
    95     @RequestMapping(value="/*")
    96     public String index(){
    97         return "index";
    98     }
    99 }
    View Code
     1 package com.fh.test.controller;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.beans.factory.annotation.Qualifier;
     5 import org.springframework.http.HttpStatus;
     6 import org.springframework.http.ResponseEntity;
     7 import org.springframework.web.bind.annotation.RequestBody;
     8 import org.springframework.web.bind.annotation.RequestMapping;
     9 import org.springframework.web.bind.annotation.RequestMethod;
    10 import org.springframework.web.bind.annotation.ResponseBody;
    11 import org.springframework.web.client.HttpStatusCodeException;
    12 
    13 import com.fh.test.model.User;
    14 import com.fh.test.service.TestService;
    15 
    16 @org.springframework.web.bind.annotation.RestController
    17 @RequestMapping(value="/rest")
    18 public class RestController {
    19     
    20     @Autowired
    21     @Qualifier("testServiceImpl")
    22     private TestService test;
    23     
    24     @RequestMapping(value="/r",method=RequestMethod.POST)
    25     public ResponseEntity<User> rest(@RequestBody User user){
    26         int insertName = test.insertName(user);
    27         HttpStatus status=null;
    28         if(insertName==1){
    29             status=HttpStatus.OK;
    30         }else{
    31             status=HttpStatus.NOT_FOUND;
    32         }
    33         return new ResponseEntity<User>(user,status);
    34     }
    35     
    36 
    37 }
    View Code
     1 package com.fh.test.controller;
     2 
     3 import java.io.File;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 import java.io.InputStream;
     7 import java.io.OutputStream;
     8 import java.io.UnsupportedEncodingException;
     9 import java.util.Enumeration;
    10 import java.util.Iterator;
    11 import java.util.List;
    12 import java.util.Map;
    13 import java.util.Set;
    14 
    15 import javax.servlet.http.HttpServletRequest;
    16 import javax.servlet.http.HttpServletResponse;
    17 
    18 import org.apache.commons.fileupload.FileItem;
    19 import org.apache.commons.fileupload.FileItemFactory;
    20 import org.apache.commons.fileupload.FileItemIterator;
    21 import org.apache.commons.fileupload.FileUploadException;
    22 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    23 import org.apache.commons.fileupload.servlet.ServletFileUpload;
    24 import org.apache.commons.io.IOUtils;
    25 import org.slf4j.Logger;
    26 import org.slf4j.LoggerFactory;
    27 import org.springframework.stereotype.Controller;
    28 import org.springframework.web.bind.ServletRequestBindingException;
    29 import org.springframework.web.bind.ServletRequestUtils;
    30 import org.springframework.web.bind.annotation.RequestMapping;
    31 import org.springframework.web.bind.annotation.RequestMethod;
    32 import org.springframework.web.bind.annotation.ResponseBody;
    33 
    34 @Controller
    35 @RequestMapping(value="/test")
    36 public class UploadController {
    37     
    38     private final static Logger logger=LoggerFactory.getLogger(UploadController.class);
    39     
    40     /**
    41      * 使用common-fileupload.jar处理上传文件
    42      * @param request
    43      * @param response
    44      * @return
    45      * @throws IOException
    46      */
    47     @RequestMapping(value="/upload")
    48     public String upload(HttpServletRequest request,HttpServletResponse response) throws IOException{
    49        if(ServletFileUpload.isMultipartContent(request)){
    50            FileItemFactory factory=new DiskFileItemFactory();
    51            ServletFileUpload upload=new ServletFileUpload(factory);
    52            try {
    53             List<FileItem> fileItem = upload.parseRequest(request);
    54             Iterator<FileItem> iterator = fileItem.iterator();
    55             while(iterator.hasNext()){
    56                 FileItem next = iterator.next();
    57                 if(next.isFormField()){
    58                     
    59                     logger.error(next.getFieldName());
    60                     InputStream is = next.getInputStream();
    61                     String string = IOUtils.toString(is);
    62                     logger.error("
       value {}",string);
    63                     logger.error(next.getName());
    64                     logger.error(next.getContentType());
    65                     logger.error(next.getSize()+"");
    66                     logger.error(next.isInMemory()+"");
    67                 }else{
    68                     logger.error(next.getFieldName());
    69                     logger.error(next.getName());
    70                     logger.error(next.getContentType());
    71                     logger.error(next.getSize()+"");
    72                     logger.error(next.isInMemory()+"");
    73                     InputStream inputStream = next.getInputStream();
    74                     OutputStream out=new FileOutputStream(new File("/app/aaa.png"));
    75                     out.write(IOUtils.toByteArray(inputStream));
    76                 }
    77             }
    78         } catch (FileUploadException e) {
    79             e.printStackTrace();
    80         } 
    81         
    82         
    83        }
    84         return null;
    85     }
    86 
    87     
    88     @RequestMapping(value="/file",method=RequestMethod.POST)
    89     @ResponseBody
    90     public String uploadFile(HttpServletRequest request,HttpServletResponse response){
    91         String parameter = request.getParameter("file");
    92         logger.error(parameter);
    93         return "OK";
    94         
    95     }
    96 }
    View Code

    dao

     1 package com.fh.test.dao;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.annotations.Select;
     6 import org.springframework.stereotype.Repository;
     7 
     8 import com.fh.test.model.User;
     9 
    10 @Repository("testDao")
    11 public interface TestNameDao {
    12     
    13     String SELECT_USER_BY_ID="select id as id,name as name,age as age from name where id=#{id}";
    14     
    15 //    @Select(SELECT_USER_BY_ID)
    16     public List<User> selectUserById(int id);
    17     
    18     public int insertUser(User user);
    19     
    20     public int updateUser(User user);
    21     
    22     public int deleteUser(int id);
    23 
    24 }
    View Code

    excetors

     1 package com.fh.test.excetors;
     2 
     3 import java.util.concurrent.Callable;
     4 import java.util.concurrent.Executors;
     5 import java.util.concurrent.ScheduledExecutorService;
     6 import java.util.concurrent.TimeUnit;
     7 
     8 import org.apache.log4j.chainsaw.Main;
     9 
    10 public class ThreadPoolTest {
    11     
    12     public static void main(String[] args) {
    13         ScheduledExecutorService service = Executors.newScheduledThreadPool(10);
    14         task ta=new task();
    15         service.scheduleWithFixedDelay(ta, 10, 10,TimeUnit.SECONDS);
    16     }
    17 }
    18      class task implements Runnable{
    19 
    20         @Override
    21         public void run() {
    22             System.out.println("开始了!!!");
    23         }
    24         
    25     }
    View Code

    model

     1 package com.fh.test.model.adapter;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 import javax.xml.bind.annotation.adapters.XmlAdapter;
     7 
     8 public class DateTypeAdapter extends XmlAdapter<String, Date> {
     9     
    10     private ThreadLocal<SimpleDateFormat> local=new ThreadLocal<SimpleDateFormat>();
    11     
    12     public DateTypeAdapter(){
    13         SimpleDateFormat format = local.get();
    14         if(format==null){
    15             local.set(new SimpleDateFormat("yyyy-MM-dd hh:MM:ss"));
    16         }
    17     }
    18 
    19     @Override
    20     public Date unmarshal(String v) throws Exception {
    21         SimpleDateFormat format = local.get();
    22         return format.parse(v);
    23     }
    24 
    25     @Override
    26     public String marshal(Date v) throws Exception {
    27         SimpleDateFormat format = local.get();
    28         return format.format(v);
    29     }
    30 
    31 }
    View Code
     1 package com.fh.test.model.adapter;
     2 
     3 import javax.xml.bind.annotation.XmlAccessType;
     4 import javax.xml.bind.annotation.XmlAccessorType;
     5 import javax.xml.bind.annotation.XmlAttribute;
     6 import javax.xml.bind.annotation.XmlValue;
     7 
     8 @XmlAccessorType(XmlAccessType.FIELD)
     9 public class KeyValue {
    10     
    11     @XmlAttribute(name="key")
    12     private String key;
    13     
    14     @XmlValue
    15     private String value;
    16 
    17     public String getKey() {
    18         return key;
    19     }
    20 
    21     public void setKey(String key) {
    22         this.key = key;
    23     }
    24 
    25     public String getValue() {
    26         return value;
    27     }
    28 
    29     public void setValue(String value) {
    30         this.value = value;
    31     }
    32 
    33     public KeyValue(String key, String value) {
    34         super();
    35         this.key = key;
    36         this.value = value;
    37     }
    38 
    39     public KeyValue() {
    40         super();
    41         // TODO Auto-generated constructor stub
    42     }
    43 
    44     
    45 }
    View Code
     1 package com.fh.test.model.adapter;
     2 
     3 import java.util.HashMap;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import javax.xml.bind.annotation.adapters.XmlAdapter;
     8 
     9 import com.fh.test.model.adapter.MapConvertor.MapEntry;
    10 
    11 public class MapAdater extends XmlAdapter<MapConvertor, Map<String,String>> {
    12 
    13     @Override
    14     public Map<String, String> unmarshal(MapConvertor v) throws Exception {
    15         List<MapEntry> entry = v.getEntry();
    16         if(entry!=null && entry.size()>0){
    17             Map<String,String> data=new HashMap<String,String>();
    18             for (MapEntry en : entry) {
    19                 data.put(en.getKey(), en.getValue());
    20             }
    21             return data;
    22         }
    23         return null;
    24     }
    25 
    26     @Override
    27     public MapConvertor marshal(Map<String, String> v) throws Exception {
    28         MapConvertor con=new MapConvertor();
    29         for (Map.Entry<String, String> en : v.entrySet()) {
    30             con.addEntry(new MapConvertor.MapEntry(en));
    31         }
    32         return con;
    33     }
    34 
    35 }
    View Code
     1 package com.fh.test.model.adapter;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import javax.xml.bind.annotation.XmlAccessType;
     8 import javax.xml.bind.annotation.XmlAccessorType;
     9 import javax.xml.bind.annotation.XmlType;
    10 
    11 @XmlType(name="MapConvertor")
    12 @XmlAccessorType(XmlAccessType.FIELD)
    13 public class MapConvertor {
    14     
    15     private List<MapEntry> entries=new ArrayList<MapConvertor.MapEntry>(){
    16         
    17     };
    18     
    19     public void addEntry(MapEntry entry){
    20         entries.add(entry);
    21     }
    22     
    23     public List<MapEntry> getEntry(){
    24         return entries;
    25     }
    26     /**
    27      * 静态内部类
    28      * @author fenghao
    29      *
    30      */
    31     public static class MapEntry{
    32         private String key;
    33         private String value;
    34         public String getKey() {
    35             return key;
    36         }
    37         public void setKey(String key) {
    38             this.key = key;
    39         }
    40         public String getValue() {
    41             return value;
    42         }
    43         public void setValue(String value) {
    44             this.value = value;
    45         }
    46         public MapEntry(String key, String value) {
    47             super();
    48             this.key = key;
    49             this.value = value;
    50         }
    51         public MapEntry() {
    52             super();
    53         }
    54         public MapEntry(Map.Entry<String, String> entry) {  
    55                 this.key = entry.getKey();  
    56                 this.value = entry.getValue();  
    57             }  
    58     }
    59 
    60 }
    View Code
      1 package com.fh.test.model;
      2 
      3 import java.util.Date;
      4 import java.util.List;
      5 import java.util.Map;
      6 
      7 import javax.xml.bind.annotation.XmlAccessType;
      8 import javax.xml.bind.annotation.XmlAccessorType;
      9 import javax.xml.bind.annotation.XmlElement;
     10 import javax.xml.bind.annotation.XmlElementWrapper;
     11 import javax.xml.bind.annotation.XmlRootElement;
     12 import javax.xml.bind.annotation.XmlType;
     13 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
     14 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
     15 
     16 import com.fh.test.model.adapter.DateTypeAdapter;
     17 import com.fh.test.model.adapter.KeyValue;
     18 import com.fh.test.model.adapter.MapAdater;
     19 
     20 /**
     21  * @XmlTransient 注释对于解决 JavaBean 属性名称与字段名称之间的名称冲突,或者用于防止字段/属性的映射。
     22  * @author fenghao
     23  *
     24  *@XmlJavaTypeAdapter(class)
     25 用来描述自定义的adapter,需要继承XmlAdapter,用来对自定义序列化的格式。如我们对时间的格式化输出
     26  */
     27 @XmlAccessorType(XmlAccessType.FIELD)
     28 @XmlRootElement(name="name")
     29 @XmlType(propOrder={"id","name","age","sex","list","data","order","date","keyValue"})
     30 public class Name {
     31     
     32     @XmlElement(name="id")
     33     private String id;
     34     
     35     @XmlElement(name="name")
     36     private String name;
     37     
     38     @XmlElement(name="age")
     39     private String age;
     40     
     41     @XmlElement(name="sex")
     42     private String sex;
     43     
     44     @XmlElementWrapper(name="lists")
     45     @XmlElement(name="list")
     46     private List<String> list;
     47     
     48     @XmlJavaTypeAdapter(value=MapAdater.class)
     49     private Map<String,String> data;
     50     
     51     
     52     @XmlElement(name="order",type=Order.class)
     53     private Order order;
     54     
     55     @XmlJavaTypeAdapter(value = DateTypeAdapter.class)  
     56     private Date date;
     57     
     58     @XmlElement(name="key",type=KeyValue.class)
     59     private KeyValue keyValue;
     60 
     61     public String getId() {
     62         return id;
     63     }
     64 
     65     public void setId(String id) {
     66         this.id = id;
     67     }
     68 
     69     public String getName() {
     70         return name;
     71     }
     72 
     73     public void setName(String name) {
     74         this.name = name;
     75     }
     76 
     77     public String getAge() {
     78         return age;
     79     }
     80 
     81     public void setAge(String age) {
     82         this.age = age;
     83     }
     84 
     85     public String getSex() {
     86         return sex;
     87     }
     88 
     89     public void setSex(String sex) {
     90         this.sex = sex;
     91     }
     92 
     93     public List<String> getList() {
     94         return list;
     95     }
     96 
     97     public void setList(List<String> list) {
     98         this.list = list;
     99     }
    100 
    101     public Map<String, String> getData() {
    102         return data;
    103     }
    104 
    105     public void setData(Map<String, String> data) {
    106         this.data = data;
    107     }
    108 
    109     public Order getOrder() {
    110         return order;
    111     }
    112 
    113     public void setOrder(Order order) {
    114         this.order = order;
    115     }
    116 
    117     public Date getDate() {
    118         return date;
    119     }
    120 
    121     public void setDate(Date date) {
    122         this.date = date;
    123     }
    124 
    125     public KeyValue getKeyValue() {
    126         return keyValue;
    127     }
    128 
    129     public void setKeyValue(KeyValue keyValue) {
    130         this.keyValue = keyValue;
    131     }
    132 
    133     public Name(String id, String name, String age, String sex, List<String> list, Map<String, String> data,
    134             Order order, Date date, KeyValue keyValue) {
    135         super();
    136         this.id = id;
    137         this.name = name;
    138         this.age = age;
    139         this.sex = sex;
    140         this.list = list;
    141         this.data = data;
    142         this.order = order;
    143         this.date = date;
    144         this.keyValue = keyValue;
    145     }
    146 
    147     public Name() {
    148         super();
    149         // TODO Auto-generated constructor stub
    150     }
    151     
    152     
    153 }
    View Code
     1 package com.fh.test.model;
     2 
     3 import javax.xml.bind.annotation.XmlAccessType;
     4 import javax.xml.bind.annotation.XmlAccessorType;
     5 import javax.xml.bind.annotation.XmlElement;
     6 
     7 @XmlAccessorType(XmlAccessType.FIELD)
     8 public class Order {
     9     
    10     @XmlElement(name="oid")
    11     private int id;
    12 
    13     public int getId() {
    14         return id;
    15     }
    16 
    17     public void setId(int id) {
    18         this.id = id;
    19     }
    20 
    21     public Order(int id) {
    22         super();
    23         this.id = id;
    24     }
    25 
    26     public Order() {
    27         super();
    28         // TODO Auto-generated constructor stub
    29     }
    30     
    31     
    32 
    33 }
    View Code
     1 package com.fh.test.model;
     2 
     3 public class User {
     4     
     5     private int id;
     6     private String name;
     7     private String age;
     8     public int getId() {
     9         return id;
    10     }
    11     public void setId(int id) {
    12         this.id = id;
    13     }
    14     public String getName() {
    15         return name;
    16     }
    17     public void setName(String name) {
    18         this.name = name;
    19     }
    20     public String getAge() {
    21         return age;
    22     }
    23     public void setAge(String age) {
    24         this.age = age;
    25     }
    26     public User(int id, String name, String age) {
    27         super();
    28         this.id = id;
    29         this.name = name;
    30         this.age = age;
    31     }
    32     public User() {
    33         super();
    34         // TODO Auto-generated constructor stub
    35     }
    36     @Override
    37     public String toString() {
    38         return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    39     }
    40     
    41     
    42 
    43 }
    View Code

    servie

     1 package com.fh.test.service;
     2 
     3 import com.fh.test.model.User;
     4 
     5 public interface TestService {
     6     
     7     public User getUserName(String id);
     8     
     9     public int insertName(User user);
    10     
    11     public int updateName(User user);
    12     
    13     public int deleteName(int id);
    14     
    15     public String test(String key);
    16     
    17 
    18 }
    View Code
     1 package com.fh.test.service.impl;
     2 
     3 import java.util.HashMap;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 import org.slf4j.Logger;
     8 import org.slf4j.LoggerFactory;
     9 import org.springframework.beans.factory.annotation.Autowired;
    10 import org.springframework.beans.factory.annotation.Qualifier;
    11 import org.springframework.stereotype.Service;
    12 
    13 import com.fh.test.dao.TestNameDao;
    14 import com.fh.test.model.User;
    15 import com.fh.test.service.TestService;
    16 
    17 @Service("testServiceImpl")
    18 public class TestServiceImpl implements TestService {
    19     
    20     private static final Logger logger=LoggerFactory.getLogger(TestServiceImpl.class);
    21 
    22     @Autowired
    23     @Qualifier("testDao")
    24     private TestNameDao testDao;
    25     public User getUserName(String id) {
    26         logger.debug("
    service");
    27         List<User> user = testDao.selectUserById(Integer.parseInt(id));
    28         return user.get(0);
    29     }
    30     public int insertName(User user) {
    31         logger.debug("
     service");
    32         return testDao.insertUser(user);
    33     }
    34     public int updateName(User user) {
    35         logger.debug("
     service");
    36         return testDao.updateUser(user);
    37     }
    38     public int deleteName(int id) {
    39         logger.debug("
     service");
    40         int deleteUser = testDao.deleteUser(id);
    41         return deleteUser;
    42     }
    43     /**
    44      * DataBase
    45      */
    46     public String test(String key) {
    47         Map<String,String> data=new HashMap<String,String>(4){
    48             {
    49                 put("1", "A");
    50                 put("2", "B");
    51             }
    52         };
    53         return data.get(key);
    54     }
    55     
    56     
    57 
    58 }
    View Code

    util

     1 package com.fh.test.util;
     2 
     3 
     4 import java.text.SimpleDateFormat;
     5 import java.util.Date;
     6 
     7 import org.junit.Test;
     8 
     9 public class DateUtilsFormatThreadLocal {
    10     
    11     
    12     private static ThreadLocal<SimpleDateFormat>  format=new ThreadLocal<SimpleDateFormat>();
    13     
    14     
    15     public static String parseDate(Date date
    16             ){
    17         SimpleDateFormat sim = format.get();
    18         if(sim==null){
    19             sim=new SimpleDateFormat("yyyy-MM-dd hh:MM:ss");
    20         }
    21         return  sim.format(date);
    22     }
    23     
    24     @Test
    25     public void test(){
    26         String parseDate = DateUtilsFormatThreadLocal.parseDate(new Date());
    27         System.out.println(parseDate);
    28     }
    29 
    30     
    31     
    32 }
    View Code
     1 package com.fh.test.util;
     2 
     3 import java.io.StringReader;
     4 import java.io.StringWriter;
     5 import java.util.ArrayList;
     6 import java.util.HashMap;
     7 import java.util.List;
     8 import java.util.Map;
     9 
    10 import javax.xml.bind.JAXBContext;
    11 import javax.xml.bind.JAXBException;
    12 import javax.xml.bind.Marshaller;
    13 import javax.xml.bind.Unmarshaller;
    14 
    15 import org.junit.Test;
    16 
    17 import com.fh.test.model.Name;
    18 import com.fh.test.model.Order;
    19 
    20 public class JAXBUtil {
    21 
    22     public static String marshal(Object obj) throws JAXBException {
    23         JAXBContext context = JAXBContext.newInstance(obj.getClass());
    24         Marshaller marshaller = context.createMarshaller();
    25         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    26         marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8");
    27         StringWriter writer = new StringWriter();
    28         marshaller.marshal(obj, writer);
    29         return writer.toString();
    30     }
    31 
    32     
    33     public static <T> T unmarshal(String xml,Class<T> c) throws JAXBException{
    34         JAXBContext context = JAXBContext.newInstance(c);
    35         Unmarshaller unmarshaller = context.createUnmarshaller();
    36         @SuppressWarnings("unchecked")
    37         T unmarshal =(T) unmarshaller.unmarshal(new StringReader(xml));
    38         return unmarshal;
    39     }
    40     
    41     
    42     @Test
    43     public void test(){
    44         Name name=new Name();
    45         List<String> a=new ArrayList<String>();
    46         Map<String,String> date=new HashMap<String,String>();
    47         date.put("1", "1");
    48         a.add("aaaa");
    49         a.add("bbbb");
    50         a.add("cccc");
    51         Order or=new Order();
    52         or.setId(1);
    53         name.setOrder(or);
    54         name.setList(a);
    55         name.setData(date);
    56         try {
    57             String marshal = JAXBUtil.marshal(name);
    58             System.out.println(marshal);
    59         } catch (JAXBException e) {
    60             e.printStackTrace();
    61         }
    62     }
    63 }
    View Code

    5、下面是src/test/java下面的

     1 package com.fh.test;
     2 
     3 import org.junit.Test;
     4 import org.springframework.http.MediaType;
     5 import org.springframework.http.ResponseEntity;
     6 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
     7 import org.springframework.web.client.RestTemplate;
     8 
     9 import com.fh.test.model.User;
    10 
    11 public class RestTest {
    12     
    13     @Test
    14     public void restTest(){
    15         RestTemplate rest=new RestTemplate();
    16 //        rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
    17         User user=new User(3,"xu","30");
    18         ResponseEntity<User> response = rest.postForEntity("http://localhost:8080/com.fh.test/rest/r", user,User.class);
    19         User us = rest.postForObject("http://localhost:8080/com.fh.test/rest/r", user,User.class);
    20         System.out.println(us.getName());
    21     }
    22 
    23 }
    View Code
      1 package com.fh.test;
      2 
      3 import java.io.IOException;
      4 
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 
      8 import org.apache.http.HttpEntity;
      9 import org.apache.http.NameValuePair;
     10 import org.apache.http.ParseException;
     11 
     12 import org.apache.http.client.entity.UrlEncodedFormEntity;
     13 import org.apache.http.client.methods.CloseableHttpResponse;
     14 import org.apache.http.client.methods.HttpPost;
     15 import org.apache.http.entity.StringEntity;
     16 import org.apache.http.impl.client.CloseableHttpClient;
     17 
     18 import org.apache.http.impl.client.HttpClients;
     19 import org.apache.http.message.BasicNameValuePair;
     20 import org.apache.http.util.EntityUtils;
     21 
     22 
     23 import com.alibaba.fastjson.JSONObject;
     24 import com.fh.test.model.User;
     25 
     26 public class Test {
     27     
     28     public static void main(String[] args)  {
     29         CloseableHttpClient client = HttpClients.createDefault();
     30         String url="http://localhost:8080//com.fh.test/test/t";
     31         HttpPost post=new HttpPost(url);
     32         List<NameValuePair> param=new ArrayList<NameValuePair>();
     33         param.add(new BasicNameValuePair("id","2"));
     34         UrlEncodedFormEntity body=null;
     35         CloseableHttpResponse response=null;
     36         try {
     37             body = new UrlEncodedFormEntity(param,"utf-8");
     38             post.setEntity(body);
     39             response = client.execute(post);
     40         } catch (IOException e) {
     41             e.printStackTrace();
     42         }
     43         HttpEntity entity = response.getEntity();
     44         try {
     45             String string = EntityUtils.toString(entity);
     46             System.out.println("result is "+string);
     47         } catch (ParseException e) {
     48             e.printStackTrace();
     49         } catch (IOException e) {
     50             e.printStackTrace();
     51         }
     52     }
     53     
     54     @SuppressWarnings("deprecation")
     55     @org.junit.Test
     56     public void insert(){
     57         CloseableHttpClient client = HttpClients.createDefault();
     58         String url="http://localhost:8080//com.fh.test/test/insert";
     59         HttpPost post=new HttpPost(url);
     60         List<NameValuePair> param=new ArrayList<NameValuePair>();
     61         User user=new User(2,"xuxiaoxiao","23");
     62         String jsonString = JSONObject.toJSONString(user);
     63         System.out.println(jsonString);
     64 //        param.add(new BasicNameValuePair("message","jsonString"));
     65         StringEntity body=null;
     66         CloseableHttpResponse response=null;
     67         try {
     68 //            body = new UrlEncodedFormEntity(param,"utf-8");
     69             body = new StringEntity(jsonString,"utf-8");
     70             body.setContentEncoding("UTF-8");
     71             body.setContentType("application/json");
     72 //            post.addHeader("contextType", "application/json;charset=utf-8");
     73 //            post.setHeader("Accept", "application/json");
     74             post.setEntity(body);
     75             response = client.execute(post);
     76         } catch (IOException e) {
     77             e.printStackTrace();
     78         }
     79         HttpEntity entity = response.getEntity();
     80         try {
     81             String string = EntityUtils.toString(entity);
     82             System.out.println("result is "+string);
     83         } catch (ParseException e) {
     84             e.printStackTrace();
     85         } catch (IOException e) {
     86             e.printStackTrace();
     87         }
     88     }
     89     
     90     @org.junit.Test
     91     public void delete(){
     92         CloseableHttpClient client = HttpClients.createDefault();
     93         String url="http://localhost:8080//com.fh.test/test/delete";
     94         HttpPost post=new HttpPost(url);
     95         List<NameValuePair> param=new ArrayList<NameValuePair>();
     96         param.add(new BasicNameValuePair("id","2"));
     97         UrlEncodedFormEntity body=null;
     98         CloseableHttpResponse response=null;
     99         try {
    100             body = new UrlEncodedFormEntity(param,"utf-8");
    101             post.setEntity(body);
    102             response = client.execute(post);
    103         } catch (IOException e) {
    104             e.printStackTrace();
    105         }
    106         HttpEntity entity = response.getEntity();
    107         try {
    108             String string = EntityUtils.toString(entity);
    109             System.out.println("result is "+string);
    110         } catch (ParseException e) {
    111             e.printStackTrace();
    112         } catch (IOException e) {
    113             e.printStackTrace();
    114         }
    115     }
    116     
    117     
    118     @org.junit.Test
    119     public void testAspect(){
    120         CloseableHttpClient client = HttpClients.createDefault();
    121         String url="http://localhost:8080//com.fh.test/test/asp";
    122         HttpPost post=new HttpPost(url);
    123         List<NameValuePair> param=new ArrayList<NameValuePair>();
    124         param.add(new BasicNameValuePair("key","1"));
    125         UrlEncodedFormEntity body=null;
    126         CloseableHttpResponse response=null;
    127         try {
    128             body = new UrlEncodedFormEntity(param,"utf-8");
    129             post.setEntity(body);
    130             response = client.execute(post);
    131         } catch (IOException e) {
    132             e.printStackTrace();
    133         }
    134         HttpEntity entity = response.getEntity();
    135         try {
    136             String string = EntityUtils.toString(entity);
    137             System.out.println("result is "+string);
    138         } catch (ParseException e) {
    139             e.printStackTrace();
    140         } catch (IOException e) {
    141             e.printStackTrace();
    142         }
    143     }
    144     
    145     
    146     @org.junit.Test
    147     public void testRest(){
    148         CloseableHttpClient client = HttpClients.createDefault();
    149         String url="http://localhost:8080/com.fh.test/rest/r";
    150         HttpPost post=new HttpPost(url);
    151         User user=new User(3,"haha","aa");
    152         List<NameValuePair> param=new ArrayList<NameValuePair>();
    153         param.add(new BasicNameValuePair("user",JSONObject.toJSONString(user)));
    154         
    155         UrlEncodedFormEntity body=null;
    156         CloseableHttpResponse response=null;
    157         try {
    158             body = new UrlEncodedFormEntity(param,"utf-8");
    159             body.setContentType("application/json");
    160             body.setContentEncoding("UTF-8");
    161             post.addHeader("Accept", "application/json");
    162 //            post.setEntity(body);
    163             response = client.execute(post);
    164         } catch (IOException e) {
    165             e.printStackTrace();
    166         }
    167         HttpEntity entity = response.getEntity();
    168         try {
    169             String string = EntityUtils.toString(entity);
    170             System.out.println("result is "+string);
    171         } catch (ParseException e) {
    172             e.printStackTrace();
    173         } catch (IOException e) {
    174             e.printStackTrace();
    175         }
    176 
    177 }
    178 }
    View Code
     1 package com.fh.test;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.IOException;
     7 import java.io.InputStream;
     8 import java.nio.charset.Charset;
     9 import java.util.ArrayList;
    10 import java.util.List;
    11 
    12 import org.apache.commons.io.IOUtils;
    13 import org.apache.http.HttpEntity;
    14 import org.apache.http.*;
    15 import org.apache.http.client.ClientProtocolException;
    16 import org.apache.http.client.entity.UrlEncodedFormEntity;
    17 import org.apache.http.client.methods.CloseableHttpResponse;
    18 import org.apache.http.client.methods.HttpPost;
    19 import org.apache.http.entity.ContentType;
    20 import org.apache.http.entity.mime.MultipartEntityBuilder;
    21 import org.apache.http.impl.client.CloseableHttpClient;
    22 import org.apache.http.impl.client.HttpClients;
    23 import org.apache.http.message.BasicNameValuePair;
    24 import org.apache.http.util.EntityUtils;
    25 import org.junit.Test;
    26 import org.springframework.util.Base64Utils;
    27 import org.springframework.web.multipart.MultipartException;
    28 
    29 import sun.misc.BASE64Encoder;
    30 
    31 public class UploadFileTest {
    32     
    33     @Test
    34     public void test(){
    35         CloseableHttpClient client = HttpClients.createDefault();
    36         String URI="http://localhost:8080/com.fh.test/test/upload";
    37         HttpPost post=new HttpPost(URI);
    38         HttpEntity entity=null;
    39         MultipartEntityBuilder builder=MultipartEntityBuilder.create();
    40         builder.addBinaryBody("a", new File("/home/fenghao/aaa.png"), ContentType.APPLICATION_FORM_URLENCODED, "aaa.png");
    41         builder.addTextBody("b", "aaaaaaa", ContentType.TEXT_PLAIN);
    42         builder.setCharset(Charset.forName("iso-8859-1"));
    43         entity=builder.build();
    44         post.setEntity(entity);
    45         try {
    46             CloseableHttpResponse response = client.execute(post);
    47             HttpEntity entity2 = response.getEntity();
    48             System.out.println(EntityUtils.toString(entity2));
    49         } catch (ClientProtocolException e) {
    50             e.printStackTrace();
    51         } catch (IOException e) {
    52             e.printStackTrace();
    53         }
    54     }
    55     
    56     @Test
    57     public void file(){
    58         CloseableHttpClient client = HttpClients.createDefault();
    59         String URI="http://localhost:8080/com.fh.test/test/file";
    60         HttpPost post=new HttpPost(URI);
    61         try {
    62             InputStream in=new FileInputStream(new File("/home/fenghao/aaa.png"));
    63             BASE64Encoder encoder=new BASE64Encoder();
    64             try {
    65                 byte[] byteArray = IOUtils.toByteArray(in);
    66                 String encode = encoder.encode(byteArray);
    67                 System.out.println(encode);
    68                 List<NameValuePair> data=new ArrayList<NameValuePair>();
    69                 data.add(new BasicNameValuePair("file",encode));
    70                 UrlEncodedFormEntity entity=new UrlEncodedFormEntity(data,"utf-8");
    71                 post.setEntity(entity);
    72                 CloseableHttpResponse execute = client.execute(post);
    73                 HttpEntity entity2 = execute.getEntity();
    74                 System.out.println(EntityUtils.toString(entity2));
    75             } catch (IOException e) {
    76                 // TODO Auto-generated catch block
    77                 e.printStackTrace();
    78             }
    79         } catch (FileNotFoundException e) {
    80             e.printStackTrace();
    81         }
    82     }
    83 
    84 }
    View Code

    以上只是一些框架的简单代码,后续还会如果学到还会继续添加

  • 相关阅读:
    Opencv+C++之身份证识别(一)
    Opencv 提取图像中的矩形区域
    Opencv+C++之人脸识别二
    Perl 中的正则表达式
    Convert asio::streambuf to std::string
    WM_IDLEUPDATECMDUI与CView
    使用Boost的Regex库
    字符串编码方式的趣味介绍
    转: 20100711小强热线曝本田CRV、日产逍客没有车尾防撞钢梁(片子前面是所有车型回顾)
    对话框使用ON_UPDATE_COMMAND_UI(转)
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/6827071.html
Copyright © 2020-2023  润新知