我这边使用的是intellij idea15

1.new maven webapp project

2.添加groupId和artifactId

3.选择maven路径和maven仓库路径

最后确定之后,等1分钟左右时间,maven会自动补全项目结构。如果没有,自己新建src/main/java等结构吧

4.pom.xml中添加依赖包

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>springmvcdemo</groupId>
  5. <artifactId>springmvcdemo</artifactId>
  6. <packaging>war</packaging>
  7. <version>1.0-SNAPSHOT</version>
  8. <name>springmvcdemo Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10.  
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <java.version>1.8</java.version>
  14. <spring.version>4.2.5.RELEASE</spring.version>
  15. <aop.version>4.1.7.RELEASE</aop.version>
  16. </properties>
  17.  
  18. <dependencies>
  19. <dependency>
  20. <groupId>junit</groupId>
  21. <artifactId>junit</artifactId>
  22. <version>3.8.1</version>
  23. <scope>test</scope>
  24. </dependency>
  25. <!-- spring依赖 -->
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>spring-core</artifactId>
  29. <version>${spring.version}</version>
  30. <exclusions>
  31. <exclusion>
  32. <groupId>commons-logging</groupId>
  33. <artifactId>commons-logging</artifactId>
  34. </exclusion>
  35. </exclusions>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework</groupId>
  39. <artifactId>spring-context</artifactId>
  40. <version>${spring.version}</version>
  41. </dependency>
  42. <dependency>
  43. <groupId>org.springframework</groupId>
  44. <artifactId>spring-context-support</artifactId>
  45. <version>${spring.version}</version>
  46. <type>jar</type>
  47. <scope>compile</scope>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework</groupId>
  51. <artifactId>spring-aop</artifactId>
  52. <version>${aop.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.springframework</groupId>
  56. <artifactId>spring-aspects</artifactId>
  57. <version>${spring.version}</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.springframework</groupId>
  61. <artifactId>spring-beans</artifactId>
  62. <version>${spring.version}</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>org.springframework</groupId>
  66. <artifactId>spring-expression</artifactId>
  67. <version>${spring.version}</version>
  68. </dependency>
  69. <dependency>
  70. <groupId>org.springframework</groupId>
  71. <artifactId>spring-jdbc</artifactId>
  72. <version>${spring.version}</version>
  73. <type>jar</type>
  74. <scope>compile</scope>
  75. </dependency>
  76. <dependency>
  77. <groupId>org.springframework</groupId>
  78. <artifactId>spring-jms</artifactId>
  79. <version>${spring.version}</version>
  80. </dependency>
  81. <dependency>
  82. <groupId>org.springframework</groupId>
  83. <artifactId>spring-orm</artifactId>
  84. <version>${spring.version}</version>
  85. </dependency>
  86. <dependency>
  87. <groupId>org.springframework</groupId>
  88. <artifactId>spring-oxm</artifactId>
  89. <version>${spring.version}</version>
  90. </dependency>
  91. <dependency>
  92. <groupId>org.springframework</groupId>
  93. <artifactId>spring-tx</artifactId>
  94. <version>${spring.version}</version>
  95. </dependency>
  96. <dependency>
  97. <groupId>org.springframework</groupId>
  98. <artifactId>spring-web</artifactId>
  99. <version>${spring.version}</version>
  100. </dependency>
  101. <dependency>
  102. <groupId>org.springframework</groupId>
  103. <artifactId>spring-webmvc</artifactId>
  104. <version>${spring.version}</version>
  105. </dependency>
  106. <dependency>
  107. <groupId>org.springframework</groupId>
  108. <artifactId>spring-test</artifactId>
  109. <version>${spring.version}</version>
  110. </dependency>
  111. <!-- servlet -->
  112. <dependency>
  113. <groupId>javax.servlet</groupId>
  114. <artifactId>javax.servlet-api</artifactId>
  115. <version>3.1.0</version>
  116. </dependency>
  117. <dependency>
  118. <groupId>javax.servlet</groupId>
  119. <artifactId>jstl</artifactId>
  120. <version>1.2</version>
  121. </dependency>
  122. <!-- 日志框架 -->
  123. <dependency>
  124. <groupId>org.slf4j</groupId>
  125. <artifactId>slf4j-api</artifactId>
  126. <version>1.7.5</version>
  127. </dependency>
  128. <dependency>
  129. <groupId>org.slf4j</groupId>
  130. <artifactId>jcl-over-slf4j</artifactId>
  131. <version>1.7.5</version>
  132. </dependency>
  133. <dependency>
  134. <groupId>commons-logging</groupId>
  135. <artifactId>commons-logging</artifactId>
  136. <version>1.2</version>
  137. <scope>provided</scope>
  138. </dependency>
  139. <dependency>
  140. <groupId>org.slf4j</groupId>
  141. <artifactId>slf4j-log4j12</artifactId>
  142. <version>1.7.5</version>
  143. </dependency>
  144. <dependency>
  145. <groupId>log4j</groupId>
  146. <artifactId>log4j</artifactId>
  147. <version>1.2.17</version>
  148. </dependency>
  149. <!--common-->
  150. <dependency>
  151. <groupId>commons-collections</groupId>
  152. <artifactId>commons-collections</artifactId>
  153. <version>3.2.1</version>
  154. </dependency>
  155. <dependency>
  156. <groupId>commons-dbcp</groupId>
  157. <artifactId>commons-dbcp</artifactId>
  158. <version>1.4</version>
  159. </dependency>
  160. <dependency>
  161. <groupId>commons-pool</groupId>
  162. <artifactId>commons-pool</artifactId>
  163. <version>1.5.4</version>
  164. </dependency>
  165. <!-- mybatis包-->
  166. <dependency>
  167. <groupId>org.mybatis</groupId>
  168. <artifactId>mybatis</artifactId>
  169. <version>3.4.0</version>
  170. </dependency>
  171. <!--mybatis spring插件-->
  172. <dependency>
  173. <groupId>org.mybatis</groupId>
  174. <artifactId>mybatis-spring</artifactId>
  175. <version>1.3.0</version>
  176. </dependency>
  177. <!-- mysql连接驱动包-->
  178. <dependency>
  179. <groupId>mysql</groupId>
  180. <artifactId>mysql-connector-java</artifactId>
  181. <version>5.1.38</version>
  182. </dependency>
  183. <!-- 连接池-->
  184. <dependency>
  185. <groupId>c3p0</groupId>
  186. <artifactId>c3p0</artifactId>
  187. <version>0.9.1.2</version>
  188. </dependency>
  189. <!-- 文件上传 -->
  190. <dependency>
  191. <groupId>commons-io</groupId>
  192. <artifactId>commons-io</artifactId>
  193. <version>2.4</version>
  194. </dependency>
  195.  
  196. <dependency>
  197. <groupId>commons-fileupload</groupId>
  198. <artifactId>commons-fileupload</artifactId>
  199. <version>1.2.2</version>
  200. </dependency>
  201. <!--json-->
  202. <dependency>
  203. <groupId>com.alibaba</groupId>
  204. <artifactId>fastjson</artifactId>
  205. <version>1.2.5</version>
  206. </dependency>
  207.  
  208. <!-- urlrewrite伪静态-->
  209. <dependency>
  210. <groupId>org.tuckey</groupId>
  211. <artifactId>urlrewritefilter</artifactId>
  212. <version>4.0.4</version>
  213. </dependency>
  214. </dependencies>
  215.  
  216. <build>
  217. <finalName>springmvcdemo</finalName>
  218. <resources>
  219. <!-- 先指定 src/main/resources下所有文件及文件夹为资源文件 -->
  220. <resource>
  221. <directory>src/main/resources</directory>
  222. <includes>
  223. <include>**/*</include>
  224. </includes>
  225. </resource>
  226. </resources>
  227. <plugins>
  228. <plugin>
  229. <groupId>org.apache.maven.plugins</groupId>
  230. <artifactId>maven-war-plugin</artifactId>
  231. <version>2.3</version>
  232. <inherited>true</inherited>
  233. <executions>
  234. <execution>
  235. <id>war-exploded-on-test</id>
  236. <phase>test</phase>
  237. <goals>
  238. <goal>exploded</goal>
  239. </goals>
  240. </execution>
  241. </executions>
  242. <configuration>
  243. <outputDirectory>/data/www/deploy</outputDirectory>
  244. <warName>${project.artifactId}</warName>
  245. <webappDirectory>${project.build.directory}/springmvcDemo
  246. </webappDirectory>
  247. <archive>
  248. <manifest>
  249. <addDefaultImplementationEntries>true
  250. </addDefaultImplementationEntries>
  251. </manifest>
  252. </archive>
  253. </configuration>
  254. </plugin>
  255. </plugins>
  256. </build>
  257. </project>

然后在src/main/resoures目录下分别新建配置文件目录:spring、mybatis、springmvc、properties

配置spring文件:在sping目录下新建applicationContext.xml:

  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"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  11. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
  12.  
  13. <!-- 自动扫描 -->
  14. <context:component-scan base-package="com.mlxs.mvc" />
  15.  
  16. <!-- 引入jdbc配置文件 -->
  17. <!--<context:property-placeholder location="classpath:properties/jdbc.properties" />-->
  18. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  19. <property name="location" value="classpath:properties/jdbc.properties"/>
  20. </bean>
  21.  
  22. <!-- sqlServer数据源-->
  23. <bean id="sqlServerDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  24. <property name="driverClassName" value="${jdbc.sqlserver.driver}"/>
  25. <property name="url" value="${jdbc.sqlserver.url}"/>
  26. <property name="username" value="${jdbc.sqlserver.username}"/>
  27. <property name="password" value="${jdbc.sqlserver.password}"/>
  28. <property name="initialSize" value="${jdbc.initialSize}"/>
  29. <property name="minIdle" value="${jdbc.minIdle}"/>
  30. <property name="maxIdle" value="${jdbc.maxIdle}"/>
  31. <property name="maxActive" value="${jdbc.maxActive}"/>
  32. <property name="maxWait" value="${jdbc.maxWait}"/>
  33. <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
  34. <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
  35. <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/>
  36. <property name="testWhileIdle" value="${jdbc.testWhileIdle}"/>
  37. <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
  38. <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}"/>
  39. <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
  40. </bean>
  41.  
  42. <!-- mysql数据源-->
  43. <bean id="mySqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"
  44. destroy-method="close">
  45. <property name="driverClassName" value="${jdbc.mysql.driver}"/>
  46. <property name="url" value="${jdbc.mysql.url}"/>
  47. <property name="username" value="${jdbc.mysql.username}"/>
  48. <property name="password" value="${jdbc.mysql.password}"/>
  49. <property name="initialSize" value="${jdbc.initialSize}"/>
  50. <property name="minIdle" value="${jdbc.minIdle}"/>
  51. <property name="maxIdle" value="${jdbc.maxIdle}"/>
  52. <property name="maxActive" value="${jdbc.maxActive}"/>
  53. <property name="maxWait" value="${jdbc.maxWait}"/>
  54. <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
  55. <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
  56. <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/>
  57. <property name="testWhileIdle" value="${jdbc.testWhileIdle}"/>
  58. <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
  59. <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}"/>
  60. <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
  61. </bean>
  62.  
  63. <!-- 数据源选择,targetDataSources中选择数据源,若找不到,则使用defaultTargetDataSource-->
  64. <bean id="multipleDataSource" class="com.mlxs.mvc.common.MutipleDataSource">
  65. <property name="defaultTargetDataSource" ref="mySqlDataSource"/>
  66. <property name="targetDataSources">
  67. <map>
  68. <entry key="mySqlDataSource" value-ref="mySqlDataSource"/>
  69. <entry key="sqlServerDataSource" value-ref="sqlServerDataSource"/>
  70. </map>
  71. </property>
  72. </bean>
  73.  
  74. <!-- 配置mybatis的sqlSessionFactory -->
  75. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  76. <property name="dataSource" ref="multipleDataSource" />
  77. <!-- 自动扫描mappers.xml文件 ,要加上classpath:com/...-->
  78. <property name="mapperLocations" value="classpath:mybatis/com.mlxs.mvc.mapper/*.xml"></property>
  79. <!-- mybatis配置文件 -->
  80. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
  81. </bean>
  82.  
  83. <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
  84. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  85. <property name="basePackage" value="com.mlxs.mvc.mapper" />
  86. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
  87. </bean>
  88.  
  89. <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
  90. <bean id="transactionManager"
  91. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  92. <property name="dataSource" ref="mySqlDataSource" />
  93. </bean>
  94.  
  95. <!-- 配置事务通知属性 -->
  96. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  97. <!-- 定义事务传播属性 -->
  98. <tx:attributes>
  99. <tx:method name="insert*" propagation="REQUIRED" />
  100. <tx:method name="update*" propagation="REQUIRED" />
  101. <tx:method name="edit*" propagation="REQUIRED" />
  102. <tx:method name="save*" propagation="REQUIRED" />
  103. <tx:method name="add*" propagation="REQUIRED" />
  104. <tx:method name="new*" propagation="REQUIRED" />
  105. <tx:method name="set*" propagation="REQUIRED" />
  106. <tx:method name="remove*" propagation="REQUIRED" />
  107. <tx:method name="delete*" propagation="REQUIRED" />
  108. <tx:method name="change*" propagation="REQUIRED" />
  109. <tx:method name="get*" propagation="REQUIRED" read-only="true" />
  110. <tx:method name="find*" propagation="REQUIRED" read-only="true" />
  111. <tx:method name="load*" propagation="REQUIRED" read-only="true" />
  112. <tx:method name="*" propagation="REQUIRED" read-only="true" />
  113. </tx:attributes>
  114. </tx:advice>
  115.  
  116. <!-- 配置事务切面 -->
  117. <aop:config>
  118. <aop:pointcut id="serviceOperation"
  119. expression="execution(* com.mlxs.service.*.*(..))" />
  120. <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />
  121. </aop:config>
  122. </beans>

添加数据源类com.mlxs.mvc.common.MutipleDataSource:

  1. package com.mlxs.mvc.common;
  2.  
  3. import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
  4.  
  5. /**
  6. * MutipleDataSource:
  7. *
  8. * @author yangzhenlong
  9. * @since 2016/7/13
  10. */
  11. public class MutipleDataSource extends AbstractRoutingDataSource {
  12. private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();
  13.  
  14. public static void setDataSourceKey(String dataSource) {
  15. dataSourceKey.set(dataSource);
  16. }
  17.  
  18. @Override
  19. protected Object determineCurrentLookupKey() {
  20. return dataSourceKey.get();
  21. }
  22.  
  23. }

在mybatis目录下添加mybatis-config.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC
  3. "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <!-- setting name="cacheEnable" value="true"/-->
  8. <setting name="useGeneratedKeys" value="false"/>
  9. <setting name="logImpl" value="LOG4J"/><!--增加mybatis日志-->
  10. </settings>
  11. <mappers>
  12. <!--这里不需要添加mapper.xml文件,在spring的sqlSessionFactory中已经配置了自动扫描-->
  13. </mappers>
  14. </configuration>

在spingmvc目录下添加spring-mvc.xml:

  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"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  8. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  10.  
  11. <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
  12. <mvc:annotation-driven />
  13.  
  14. <!-- 使用注解的包,包括子集 -->
  15. <context:component-scan base-package="com.mlxs.mvc.controller" />
  16.  
  17. <!-- 解决js,css,images访问不到的问题-->
  18. <!--<mvc:resources mapping="/js/**" location="/js/" />
  19. <mvc:resources mapping="/css/**" location="/css/" />
  20. <mvc:resources mapping="/images/**" location="/images/" />
  21. <mvc:resources mapping="/template/**" location="/template/" />-->
  22.  
  23. <!-- 文件上传配置注意:这里申明的id必须为multipartResolver -->
  24. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  25. <property name="maxUploadSize" value="500000"/>
  26. </bean>
  27.  
  28. <!-- 简单的异常处理 -->
  29. <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  30. <property name="exceptionMappings">
  31. <props>
  32. <!-- 映射目录为/WEB-INF/jsp/error/upload_error.jsp -->
  33. <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">/error/upload_error</prop>
  34. </props>
  35. </property>
  36. </bean>
  37.  
  38. <!-- 配置JSP视图 -->
  39. <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  40. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  41. <property name="prefix" value="/WEB-INF/jsp/"/>
  42. <property name="suffix" value=".jsp"/>
  43. <property name="contentType" value="text/html;charset=UTF-8"/>
  44. <property name="order" value="1"/>
  45. </bean>
  46. </beans>

在properties目录下添加jdbc.properties和log4j.properties文件:

jdbc.properties:

  1. #============================================================================
  2. # MySQL
  3. #============================================================================
  4. jdbc.mysql.driver=com.mysql.jdbc.Driver
  5. jdbc.mysql.url=jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf8
  6. jdbc.mysql.username=root
  7. jdbc.mysql.password=root
  8.  
  9. #============================================================================
  10. # MS SQL Server
  11. #============================================================================
  12. jdbc.sqlserver.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
  13. jdbc.sqlserver.url=jdbc:sqlserver://127.0.0.1:1433;database=angular-demo;
  14. jdbc.sqlserver.username=root
  15. jdbc.sqlserver.password=root
  16.  
  17. #============================================================================
  18. # ORACLE
  19. #============================================================================
  20. jdbc.orcl.driver=oracle.jdbc.OracleDriver
  21. jdbc.orcl.url=jdbc:oracle:thin:@localhost::angular-demo
  22. jdbc.orcl.username=root
  23. jdbc.orcl.password=root
  24.  
  25. #============================================================================
  26. # common settings
  27. #============================================================================
  28. jdbc.initialSize=
  29. jdbc.minIdle=
  30. jdbc.maxIdle=
  31. jdbc.maxActive=
  32. jdbc.maxWait=
  33. jdbc.defaultAutoCommit=false
  34. jdbc.removeAbandoned=true
  35. jdbc.removeAbandonedTimeout=
  36. jdbc.testWhileIdle=true
  37. jdbc.timeBetweenEvictionRunsMillis=
  38. jdbc.numTestsPerEvictionRun=
  39. jdbc.minEvictableIdleTimeMillis=

log4j.properties:

  1. ##define output style
  2. ConversionPattern=%d %-5p [%t] %c - %m%n
  3.  
  4. log4j.rootLogger=DEBUG,Console
  5. log4j.logger.com.cnblogs.lzrabbit=DEBUG
  6. log4j.logger.org.springframework=ERROR
  7. log4j.logger.org.mybatis=ERROR
  8. log4j.logger.org.apache.ibatis=ERROR
  9. log4j.logger.org.quartz=ERROR
  10. log4j.logger.org.apache.axis2=ERROR
  11. log4j.logger.org.apache.axiom=ERROR
  12. log4j.logger.org.apache=ERROR
  13. log4j.logger.httpclient=ERROR
  14. #log4j.additivity.org.springframework=false
  15. #Console
  16. log4j.appender.Console=org.apache.log4j.ConsoleAppender
  17. log4j.appender.Console.Threshold=DEBUG
  18. log4j.appender.Console.Target=System.out
  19. log4j.appender.Console.layout=org.apache.log4j.PatternLayout
  20. log4j.appender.Console.layout.ConversionPattern=${ConversionPattern}
  21. #log4j.appender.Console.encoding=UTF-
  22.  
  23. #org.apache.log4j.DailyRollingFileAppender
  24. log4j.appender.DailyFile=org.apache.log4j.DailyRollingFileAppender
  25. log4j.appender.DailyFile.DatePattern='.'yyyy-MM-dd'.log'
  26. log4j.appender.DailyFile.File=${myApp.root}/logs/daily.log
  27. log4j.appender.DailyFile.Append=true
  28. log4j.appender.DailyFile.Threshold=DEBUG
  29. log4j.appender.DailyFile.layout=org.apache.log4j.PatternLayout
  30. log4j.appender.DailyFile.layout.ConversionPattern=${ConversionPattern}
  31. log4j.appender.DailyFile.encoding=UTF-
  32.  
  33. # %c 输出日志信息所属的类的全名
  34. # %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss},
  35. # 输出类似:-- ::
  36. # %f 输出日志信息所属的类的类名
  37. # %l 输出日志事件的发生位置,即输出日志信息的的语句处于它所在的类的第几行
  38. # %m 输出代码中指定的信息,如log(message)中的message
  39. # %n 输出一个回车换行符,Windows平台为"rn",Unix平台为"n"
  40. # %p 输出优先级,即DEBUG.INFO,WARN,ERROR,FATAL.如果是调用debug()输出的,则为DEBUG,以此类推
  41. # %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  42. # %t 输出产生该日志的线程名

在webapp/WEB-INF/web.xml中配置:

  1. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  4. version="3.0">
  5.  
  6. <display-name>Archetype Created Web Application</display-name>
  7. <description>testSpringMVC</description>
  8.  
  9. <!--加载spring配置文件-->
  10. <context-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <param-value>classpath:spring/applicationContext.xml</param-value>
  13. </context-param>
  14.  
  15. <!-- 编码过滤器 -->
  16. <filter>
  17. <filter-name>encodingFilter</filter-name>
  18. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  19. <async-supported>true</async-supported>
  20. <init-param>
  21. <param-name>encoding</param-name>
  22. <param-value>UTF-8</param-value>
  23. </init-param>
  24. </filter>
  25. <filter-mapping>
  26. <filter-name>encodingFilter</filter-name>
  27. <url-pattern>/*</url-pattern>
  28. </filter-mapping>
  29.  
  30. <!-- urlrewrite-->
  31. <filter>
  32. <filter-name>UrlRewriteFilter</filter-name>
  33. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  34. </filter>
  35. <filter-mapping>
  36. <filter-name>UrlRewriteFilter</filter-name>
  37. <url-pattern>/*</url-pattern>
  38. <dispatcher>REQUEST</dispatcher>
  39. <dispatcher>FORWARD</dispatcher>
  40. </filter-mapping>
  41.  
  42. <!-- 日志记录 -->
  43. <context-param>
  44. <!-- 日志配置文件路径 -->
  45. <param-name>log4jConfigLocation</param-name>
  46. <param-value>classpath:properties/log4j.properties</param-value>
  47. </context-param>
  48. <context-param>
  49. <!-- 日志页面的刷新间隔 -->
  50. <param-name>log4jRefreshInterval</param-name>
  51. <param-value>6000</param-value>
  52. </context-param>
  53. <listener>
  54. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  55. </listener>
  56.  
  57. <!-- Spring监听 -->
  58. <listener>
  59. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  60. </listener>
  61.  
  62. <!-- Spring MVC配置 -->
  63. <servlet>
  64. <servlet-name>springMVC</servlet-name>
  65. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  66. <!-- 自定义spring mvc的配置文件名称和路径 -->
  67. <init-param>
  68. <param-name>contextConfigLocation</param-name>
  69. <param-value>classpath:springmvc/spring-mvc.xml</param-value>
  70. </init-param>
  71. <load-on-startup>1</load-on-startup>
  72. </servlet>
  73. <servlet-mapping>
  74. <servlet-name>springMVC</servlet-name>
  75. <url-pattern>/</url-pattern>
  76. </servlet-mapping>
  77.  
  78. <error-page>
  79. <error-code>404</error-code>
  80. <location>/error/404</location>
  81. </error-page>
  82.  
  83. <error-page>
  84. <error-code>500</error-code>
  85. <location>/error/500</location>
  86. </error-page>
  87.  
  88. <welcome-file-list>
  89. <welcome-file>/index.jsp</welcome-file>
  90. <welcome-file>/index.htm</welcome-file>
  91. <welcome-file>/index.html</welcome-file>
  92. </welcome-file-list>
  93. </web-app>

好了,现在所有的配置都完成了,下面就是写model、dao(我这里是mapper,对应mybatis的mapper类)、service、controller类:

1.com.mlxs.mvc.model.User:

  1. package com.mlxs.mvc.model;
  2.  
  3. /**
  4. * User:
  5. *
  6. * @author yangzhenlong
  7. * @since 2016/7/13
  8. */
  9. public class User {
  10. private int id;
  11. private String loginName;
  12. private String loginPwd;
  13. private String realName;
  14. private int sex;
  15. private int age;
  16. private String phone;
  17. private String address;
  18. private String remark;
  19.  
  20. public int getId() {
  21. return id;
  22. }
  23.  
  24. public void setId(int id) {
  25. this.id = id;
  26. }
  27.  
  28. public String getLoginName() {
  29. return loginName;
  30. }
  31.  
  32. public void setLoginName(String loginName) {
  33. this.loginName = loginName;
  34. }
  35.  
  36. public String getLoginPwd() {
  37. return loginPwd;
  38. }
  39.  
  40. public void setLoginPwd(String loginPwd) {
  41. this.loginPwd = loginPwd;
  42. }
  43.  
  44. public String getRealName() {
  45. return realName;
  46. }
  47.  
  48. public void setRealName(String realName) {
  49. this.realName = realName;
  50. }
  51.  
  52. public int getSex() {
  53. return sex;
  54. }
  55.  
  56. public void setSex(int sex) {
  57. this.sex = sex;
  58. }
  59.  
  60. public int getAge() {
  61. return age;
  62. }
  63.  
  64. public void setAge(int age) {
  65. this.age = age;
  66. }
  67.  
  68. public String getPhone() {
  69. return phone;
  70. }
  71.  
  72. public void setPhone(String phone) {
  73. this.phone = phone;
  74. }
  75.  
  76. public String getAddress() {
  77. return address;
  78. }
  79.  
  80. public void setAddress(String address) {
  81. this.address = address;
  82. }
  83.  
  84. public String getRemark() {
  85. return remark;
  86. }
  87.  
  88. public void setRemark(String remark) {
  89. this.remark = remark;
  90. }
  91. }

2.com.mlxs.mvc.mapper.UserMapper:

  1. package com.mlxs.mvc.mapper;
  2.  
  3. import com.mlxs.mvc.model.User;
  4.  
  5. import java.util.List;
  6.  
  7. /**
  8. * UserMapper:
  9. *
  10. * @author yangzhenlong
  11. * @since 2016/7/13
  12. */
  13. public interface UserMapper {
  14. public int save(User user);
  15. public int delete(int id);
  16. public int update(User user);
  17. public User queryByUser(User user);
  18. public List<User> queryAll();
  19. }

3.com.mlxs.mvc.service.UserService

  1. package com.mlxs.mvc.service;
  2.  
  3. import com.mlxs.mvc.model.User;
  4.  
  5. import java.util.List;
  6.  
  7. /**
  8. * UserService:
  9. *
  10. * @author yangzhenlong
  11. * @since 2016/7/13
  12. */
  13. public interface UserService {
  14.  
  15. public List<User> queryAll();
  16. }

3.1com.mlxs.mvc.service.impl.UserServiceImpl

  1. package com.mlxs.mvc.service.impl;
  2.  
  3. import com.mlxs.mvc.mapper.UserMapper;
  4. import com.mlxs.mvc.model.User;
  5. import com.mlxs.mvc.service.UserService;
  6. import org.springframework.stereotype.Service;
  7.  
  8. import javax.annotation.Resource;
  9. import java.util.List;
  10.  
  11. /**
  12. * UserServiceImpl:
  13. *
  14. * @author yangzhenlong
  15. * @since 2016/7/13
  16. */
  17. @Service
  18. public class UserServiceImpl implements UserService {
  19.  
  20. @Resource
  21. UserMapper userMapper;
  22. public List<User> queryAll() {
  23. return userMapper.queryAll();
  24. }
  25. }

4.com.mlxs.mvc.controller.UserController:

  1. package com.mlxs.mvc.controller;
  2.  
  3. import com.mlxs.mvc.model.User;
  4. import com.mlxs.mvc.service.UserService;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.ModelMap;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestMethod;
  9.  
  10. import javax.annotation.Resource;
  11. import java.util.List;
  12.  
  13. /**
  14. * UserController:
  15. *
  16. * @author yangzhenlong
  17. * @since 2016/7/13
  18. */
  19. @Controller
  20. @RequestMapping("/user")
  21. public class UserController {
  22. @Resource
  23. UserService userService;
  24.  
  25. @RequestMapping(value = "/list", method = {RequestMethod.GET, RequestMethod.POST})
  26. public String list(ModelMap modelMap){
  27. List<User> userList = userService.queryAll();
  28. modelMap.addAttribute("userList", userList);
  29. return "userlist";
  30. }
  31. }

然后要添加mapper类对应的maper.xml文件:在resources/mybatis目录下添加:com.mlxs.mvc.mapper目录,然后新建:UserMapper.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="com.mlxs.mvc.mapper.UserMapper">
  6. <insert id="save" parameterType="com.mlxs.mvc.model.User">
  7. INSERT INTO `test`.`user`(`id`,`login_name`,`login_pwd`,`real_name`,`sex`,`age`,`phone`,`address`,`remark`)
  8. VALUES ( NULL,
  9. #{loginName},#{loginPwd},#{realName},#{sex},#{age},#{phone},#{address},#{remark});
  10. </insert>
  11.  
  12. <select id="queryAll" resultType="com.mlxs.mvc.model.User">
  13. SELECT id,
  14. login_name loginName,
  15. login_pwd loginPwd,
  16. real_name realName,
  17. sex,
  18. age,
  19. phone,
  20. address,
  21. remark
  22. FROM test.user
  23. </select>
  24. </mapper>

对应的数据表DDL语句:

  1. CREATE TABLE `user` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `login_name` varchar(64) DEFAULT NULL,
  4. `login_pwd` varchar(64) DEFAULT NULL,
  5. `real_name` varchar(64) DEFAULT NULL,
  6. `sex` tinyint(2) DEFAULT NULL COMMENT '性别(1男,2女)',
  7. `age` int(3) DEFAULT NULL COMMENT '年龄',
  8. `phone` varchar(11) DEFAULT NULL COMMENT '电话',
  9. `address` varchar(128) DEFAULT NULL COMMENT '地址',
  10. `remark` text COMMENT '备注',
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

表中添加数据:

最后,在WEB-INF目录下新建jsp目录,再新建userlist.jsp:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <html>
  4. <head>
  5. <title>用户列表</title>
  6. <style>
  7. table tr td{
  8. width:100px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. 用戶列表頁面
  14. <table style="border:1px solid red;background-color:#eee;">
  15.  
  16. <tr width="100%">
  17. <td>Id</td>
  18. <td>登录名</td>
  19. <td>密码</td>
  20. <td>姓名</td>
  21. <td>性别</td>
  22. <td>年龄</td>
  23. <td>电话</td>
  24. <td>地址</td>
  25. <td>备注</td>
  26. </tr>
  27. <c:forEach items="${userList}" var="user">
  28. <tr>
  29. <td>${user.id}</td>
  30. <td>${user.loginName}</td>
  31. <td>${user.loginPwd}</td>
  32. <td>${user.realName}</td>
  33. <td>${user.sex==1?'男':'女'}</td>
  34. <td>${user.age}</td>
  35. <td>${user.phone}</td>
  36. <td>${user.address}</td>
  37. <td>${user.remark}</td>
  38. </tr>
  39. </c:forEach>
  40. </table>
  41. </body>
  42. </html>

配置server,启动tomcat,访问controller地址:http://localhost:8080/user/list,查看结果:

项目osc git地址:http://git.oschina.net/yangzhenlong/springmvcdemo

使用idea15搭建基于maven的springmvc-mybatis框架的更多相关文章

  1. java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)

    首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...

  2. 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建

    基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Sp ...

  3. 使用intellij idea搭建MAVEN+springmvc+mybatis框架

    原文:使用intellij idea搭建MAVEN+springmvc+mybatis框架 1.首先使用idea创建一个maven项目 2.接着配置pom.xml,以下为我的配置 <projec ...

  4. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一:建立MAVEN Web项目

    一:创建maven web项目er

  5. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

    这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+M ...

  6. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)

    引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一   的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...

  7. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

  8. Spring+SpringMvc+Mybatis框架集成搭建教程

    一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...

  9. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建四:配置springmvc

    在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试的基础上 继续进行springmvc的配置 一:配置完善web.xml文件

随机推荐

  1. MVC中的成员资格,授权,安全性

    使用 Authorize 特性登录 Authorize 是 ASP.NET MVC 自带的默认授权过滤器, 可用来限制用户对操作方法的访问. 保护控制器操作 Authorize 特性在表单身份验证和 ...

  2. python 3.5 关于sys问题总结

    想把自己写的模组直接调用的时候,使用这个sys.path.append(): 但是总是报错(图1): 解决方案,去掉前面的from public; 解决思路: 1.sys.path.append(&q ...

  3. RDIFramework.NET ━ .NET快速信息化系统开发框架 记录所有操作的Sql

    在实际开发或试运行过程中,我们有时需要查看或分析模块执行的所有sql,以便进行相关分析.有时我们可以通过数据库自带的软件抓取,如:SQL Server Profiler.在我们RDIFramework ...

  4. js ajax同步请求造成浏览器假死的问题

    一.问题的起因 今天做一个需求遇到了这么个情况,就是用户个人中心有个功能,点击按钮,可以刷新用户当前的积分,这个肯定需要使用到ajax的同步请求了,当时喀喀喀三下五除二写玩了,大概代码如下: /** ...

  5. 经历alidns在国外的严重延时

    有个域名,是在国外1und1申请的,但dns的解析,国外的空间的功能弱爆了. 之前是放在dnspod,后来又试过dnspod的海外, 最后放回alidns,之前一直都很好的. 这2天国内没问题,在德国 ...

  6. Design Tic-Tac Toe

    Design a Tic-tac-toe game that is played between two players on a n x n grid. You may assume the fol ...

  7. a biped was detected but cannot be configured properly (Bipe导入Unity 无法正确识别)

    OP stated "I export the biped with 'animation' and 'bake animation' ticked and the correct fram ...

  8. 在使用 CryptoAPITransform进行加密时异常要调用Reset()

    在使用 CryptoAPITransform进行加密时异常要调用Reset() 通过.net源码能看到Reset()里有 public void Reset() { _depadBuffer = nu ...

  9. win10 pro 1511 激活成功

    slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms franklv.ddns.net slmgr /ato

  10. TortoiseGit上传项目到GitHub////////////////////////////z

    1.安装msysgit和TortoiseGit : 2.TortoiseGit 设置: (1).确保安装成功: (2).设置用户名和邮箱: 3.登陆github并进入设置页面: 4.添加 SSH Ke ...