Maven+SpringMvc4+MyBatis+Jdk8+整合ssm架构

这篇文章的ssm架构事务是xml形式的,其实都是差不多,其实公司用注解事务更多一些,因为容易控制。

代码我也是放在git上面了。

如果你不想看文章,可以直接下载源码浏览,

1、https://gitee.com/redpigstu/ssm_demo_xml

2、https://gitee.com/imjcoder/ssm_demo_interface

1、在eclipse中新建maven项目
新建完你的项目如图:

这时候java、test都没有,需要简单配置下,右击项目选择最后一个属性:

做一些配置


之后你的项目会如下图:

2、下面开始配置把相关的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/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <groupId>ssm_demo </groupId>
  5. <artifactId>ssm_demo </artifactId>
  6. <packaging>war </packaging>
  7. <version>0.0.1-SNAPSHOT </version>
  8. <name>ssm_demo Maven Webapp </name>
  9. <url>http://maven.apache.org </url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit </groupId>
  13. <artifactId>junit </artifactId>
  14. <version>3.8.1 </version>
  15. <scope>test </scope>
  16. </dependency>
  17. <!-- spring 相关jar -->
  18. <!-- Spring 4.3.3 -->
  19. <!-- Core Container 核心容器 -->
  20. <!-- 核心工具类,Spring其它模块大量使用Spring-core -->
  21. <dependency>
  22. <groupId>org.springframework </groupId>
  23. <artifactId>spring-test </artifactId>
  24. <version>4.3.3.RELEASE </version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework </groupId>
  28. <artifactId>spring-core </artifactId>
  29. <version>4.3.3.RELEASE </version>
  30. </dependency>
  31. <!-- 运行时Spring容器 -->
  32. <dependency>
  33. <groupId>org.springframework </groupId>
  34. <artifactId>spring-context </artifactId>
  35. <version>4.3.3.RELEASE </version>
  36. </dependency>
  37. <!-- Spring容器对第三方包的集成 -->
  38. <dependency>
  39. <groupId>org.springframework </groupId>
  40. <artifactId>spring-context-support </artifactId>
  41. <version>4.3.3.RELEASE </version>
  42. <type>jar </type>
  43. <scope>compile </scope>
  44. </dependency>
  45. <!-- Spring定义Bean的支持 -->
  46. <dependency>
  47. <groupId>org.springframework </groupId>
  48. <artifactId>spring-beans </artifactId>
  49. <version>4.3.3.RELEASE </version>
  50. </dependency>
  51. <!-- 使用表达式语言在运行时查询和操作对象 -->
  52. <dependency>
  53. <groupId>org.springframework </groupId>
  54. <artifactId>spring-expression </artifactId>
  55. <version>4.3.3.RELEASE </version>
  56. </dependency>
  57. <!-- End Core Container 核心容器 -->
  58. <!-- AOP -->
  59. <!-- 基于代理的AOP支持 -->
  60. <dependency>
  61. <groupId>org.springframework </groupId>
  62. <artifactId>spring-aop </artifactId>
  63. <version>4.3.3.RELEASE </version>
  64. </dependency>
  65. <!-- 基于AspectJ的AOP支持 -->
  66. <dependency>
  67. <groupId>org.springframework </groupId>
  68. <artifactId>spring-aspects </artifactId>
  69. <version>4.3.3.RELEASE </version>
  70. </dependency>
  71. <!-- aspectj -->
  72. <dependency>
  73. <groupId>org.aspectj </groupId>
  74. <artifactId>aspectjrt </artifactId>
  75. <version>1.8.5 </version>
  76. </dependency>
  77. <dependency>
  78. <groupId>org.aspectj </groupId>
  79. <artifactId>aspectjweaver </artifactId>
  80. <version>1.8.5 </version>
  81. </dependency>
  82. <!-- End AOP -->
  83. <!-- web -->
  84. <!-- 提供基础的web集成的功能,在web项目中提供Spring容器 -->
  85. <dependency>
  86. <groupId>org.springframework </groupId>
  87. <artifactId>spring-web </artifactId>
  88. <version>4.3.3.RELEASE </version>
  89. </dependency>
  90. <!-- 提供基于Servlet的SpringMVC -->
  91. <dependency>
  92. <groupId>org.springframework </groupId>
  93. <artifactId>spring-webmvc </artifactId>
  94. <version>4.3.3.RELEASE </version>
  95. </dependency>
  96. <!-- 提供WebSocket功能 -->
  97. <dependency>
  98. <groupId>org.springframework </groupId>
  99. <artifactId>spring-websocket </artifactId>
  100. <version>4.3.3.RELEASE </version>
  101. </dependency>
  102. <!-- 提供Portlet环境支持 -->
  103. <dependency>
  104. <groupId>org.springframework </groupId>
  105. <artifactId>spring-webmvc-portlet </artifactId>
  106. <version>4.3.3.RELEASE </version>
  107. </dependency>
  108. <!-- json -->
  109. <dependency>
  110. <groupId>org.codehaus.jackson </groupId>
  111. <artifactId>jackson-core-lgpl </artifactId>
  112. <version>1.9.6 </version>
  113. </dependency>
  114. <dependency>
  115. <groupId>org.codehaus.jackson </groupId>
  116. <artifactId>jackson-core-asl </artifactId>
  117. <version>1.9.4 </version>
  118. </dependency>
  119. <dependency>
  120. <groupId>org.codehaus.jackson </groupId>
  121. <artifactId>jackson-mapper-asl </artifactId>
  122. <version>1.9.5 </version>
  123. </dependency>
  124. <dependency>
  125. <groupId>org.codehaus.jackson </groupId>
  126. <artifactId>jackson-mapper-lgpl </artifactId>
  127. <version>1.9.6 </version>
  128. </dependency>
  129. <!-- End web -->
  130. <!-- DataAccess/Integration 数据访问/集成 -->
  131. <!-- 提供以JDBC访问数据库的支持 -->
  132. <dependency>
  133. <groupId>org.springframework </groupId>
  134. <artifactId>spring-jdbc </artifactId>
  135. <version>4.3.3.RELEASE </version>
  136. </dependency>
  137. <!-- 提供编程式和声明式的事务支持 -->
  138. <dependency>
  139. <groupId>org.springframework </groupId>
  140. <artifactId>spring-tx </artifactId>
  141. <version>4.3.3.RELEASE </version>
  142. </dependency>
  143. <!-- 提供对 对象/关系映射技术的支持 -->
  144. <dependency>
  145. <groupId>org.springframework </groupId>
  146. <artifactId>spring-orm </artifactId>
  147. <version>4.3.3.RELEASE </version>
  148. </dependency>
  149. <!-- 提供对JMS的支持 -->
  150. <dependency>
  151. <groupId>org.springframework </groupId>
  152. <artifactId>spring-jms </artifactId>
  153. <version>4.3.3.RELEASE </version>
  154. </dependency>
  155. <!-- End DataAccess/Integration 数据访问/集成 -->
  156. <dependency>
  157. <groupId>org.codehaus.jackson </groupId>
  158. <artifactId>jackson-mapper-asl </artifactId>
  159. <version>1.9.13 </version>
  160. </dependency>
  161. <!-- End Spring 4.0 -->
  162. <!-- mybatis jar -->
  163. <dependency>
  164. <groupId>org.mybatis </groupId>
  165. <artifactId>mybatis </artifactId>
  166. <version>3.4.1 </version>
  167. </dependency>
  168. <dependency>
  169. <groupId>org.mybatis </groupId>
  170. <artifactId>mybatis-spring </artifactId>
  171. <version>1.3.0 </version>
  172. </dependency>
  173. <dependency>
  174. <groupId>mysql </groupId>
  175. <artifactId>mysql-connector-java </artifactId>
  176. <version>5.1.21 </version>
  177. </dependency>
  178. <dependency>
  179. <groupId>c3p0 </groupId>
  180. <artifactId>c3p0 </artifactId>
  181. <version>0.9.1.2 </version>
  182. <type>jar </type>
  183. </dependency>
  184. <!-- 打印日志 -->
  185. <dependency>
  186. <groupId>org.slf4j </groupId>
  187. <artifactId>slf4j-api </artifactId>
  188. <version>1.7.22 </version>
  189. </dependency>
  190. <dependency>
  191. <groupId>org.slf4j </groupId>
  192. <artifactId>slf4j-log4j12 </artifactId>
  193. <version>1.7.22 </version>
  194. </dependency>
  195. <dependency>
  196. <groupId>log4j </groupId>
  197. <artifactId>log4j </artifactId>
  198. <version>1.2.17 </version>
  199. </dependency>
  200. <dependency>
  201. <groupId>jstl </groupId>
  202. <artifactId>jstl </artifactId>
  203. <version>1.2 </version>
  204. </dependency>
  205. <!-- jsp jar -->
  206. <!-- JSP相关 -->
  207. <dependency>
  208. <groupId>javax.servlet </groupId>
  209. <artifactId>servlet-api </artifactId>
  210. <version>2.5 </version>
  211. <scope>provided </scope>
  212. </dependency>
  213. <dependency>
  214. <groupId>javax.servlet </groupId>
  215. <artifactId>jsp-api </artifactId>
  216. <version>2.0 </version>
  217. <scope>provided </scope>
  218. </dependency>
  219. </dependencies>
  220. <build>
  221. <finalName>ssm_demo </finalName>
  222. <resources>
  223. <resource>
  224. <directory>src/main/resources </directory>
  225. <includes>
  226. <include>**/*.properties </include>
  227. <include>**/*.xml </include>
  228. <include>**/*.tld </include>
  229. </includes>
  230. <filtering>false </filtering>
  231. </resource>
  232. <resource>
  233. <directory>src/main/java </directory>
  234. <includes>
  235. <include>**/*.properties </include>
  236. <include>**/*.xml </include>
  237. <include>**/*.tld </include>
  238. </includes>
  239. <filtering>false </filtering>
  240. </resource>
  241. </resources>
  242. <plugins>
  243. <plugin>
  244. <groupId>org.apache.maven.plugins </groupId>
  245. <artifactId>maven-compiler-plugin </artifactId>
  246. <version>3.1 </version>
  247. <configuration>
  248. <source>1.8 </source>
  249. <target>1.8 </target>
  250. <encoding>UTF-8 </encoding>
  251. <failOnError>true </failOnError>
  252. <showDeprecation>true </showDeprecation>
  253. <showWarnings>true </showWarnings>
  254. </configuration>
  255. </plugin>
  256. <plugin>
  257. <groupId>org.apache.maven.plugins </groupId>
  258. <artifactId>maven-surefire-plugin </artifactId>
  259. <version>2.4.3 </version>
  260. <configuration>
  261. <skipTests>true </skipTests>
  262. </configuration>
  263. </plugin>
  264. </plugins>
  265. </build>
  266. </project>
3、开始配置mybatis

在src/main/resources下面新建文件夹mybatis,以及mybatis的xml配置文件:mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!-- 全局参数 -->
  5. <settings>
  6. <!-- 使全局的映射器启用或禁用缓存。 -->
  7. <setting name="cacheEnabled" value="true"/>
  8. <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
  9. <setting name="lazyLoadingEnabled" value="true"/>
  10. <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
  11. <setting name="aggressiveLazyLoading" value="false"/>
  12. <!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
  13. <setting name="multipleResultSetsEnabled" value="true"/>
  14. <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
  15. <setting name="useColumnLabel" value="true"/>
  16. <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false -->
  17. <setting name="useGeneratedKeys" value="false"/>
  18. <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
  19. <setting name="autoMappingBehavior" value="PARTIAL"/>
  20. <!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) -->
  21. <setting name="defaultExecutorType" value="SIMPLE"/>
  22. <!-- 使用驼峰命名法转换字段。 -->
  23. <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
  24. <!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
  25. <setting name="localCacheScope" value="SESSION"/>
  26. <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
  27. <setting name="jdbcTypeForNull" value="NULL"/>
  28. </settings>
  29. </configuration>
4、配置spring相关

在src/main/resources下面新建文件夹spring

   ①、新建文件名: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" xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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.xsd">
  9. <!-- 扫描到有@Component @Controller@Service等这些注解的类 ,则把这些类注册为bean -->
  10. <!-- spring不要扫MVC的controller,否则引起事务失效 -->
  11. <context:component-scan base-package="com">
  12. <context:exclude-filter type="annotation"
  13. expression= "org.springframework.stereotype.Controller" />
  14. </context:component-scan>
  15. <!-- 数据库连接池 :dataSource -->
  16. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  17. destroy-method= "close">
  18. <property name="driverClass" value="com.mysql.jdbc.Driver" />
  19. <property name="jdbcUrl"
  20. value= "jdbc:mysql://localhost:3300/ssm_demo?useUnicode=true&characterEncoding=UTF-8" />
  21. <property name="user" value="root" />
  22. <property name="password" value="root" />
  23. <property name="minPoolSize" value="1" />
  24. <property name="maxPoolSize" value="20" />
  25. <property name="maxIdleTime" value="1800" />
  26. <property name="acquireIncrement" value="2" />
  27. <property name="maxStatements" value="0" />
  28. <property name="initialPoolSize" value="2" />
  29. <property name="idleConnectionTestPeriod" value="1800" />
  30. <property name="acquireRetryAttempts" value="30" />
  31. <property name="breakAfterAcquireFailure" value="true" />
  32. <property name="testConnectionOnCheckout" value="false" />
  33. </bean>
  34. </beans>
   ②、新建文件名

applicationContext-mybatis.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" xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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.xsd">
  9. <!-- 定义Mybatis的SqlSessionFactory -->
  10. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  11. <!-- 定义数据源 -->
  12. <property name="dataSource" ref="dataSource" />
  13. <!-- 指定mybatis全局配置文件 -->
  14. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
  15. <property name="mapperLocations" value="classpath:com/entity/*.xml" />
  16. <!-- 别名扫描包 -->
  17. <property name="typeAliasesPackage" value="com.entity"/>
  18. </bean>
  19. <!-- 配置自动生成接口的实现类
  20. 配置 转换器,对于在basePackage设置的包(包括子包)下的接口类,如果在Mapper.xml文件中定义过,
  21. 将被转换成spring的BEAN,在调用 的地方通过@Autowired方式将可以注入接口实例-->
  22. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  23. <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  24. <property name="basePackage" value="com.dao"/>
  25. </bean>
  26. </beans>
    ③、新建文件名:applicationContext-transaction.xml
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:context= "http://www.springframework.org/schema/context" xmlns:p= "http://www.springframework.org/schema/p"
  3. xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx"
  4. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  8. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
  9. <!-- 定义事务管理器 -->
  10. <bean id="transactionManager"
  11. class= "org.springframework.jdbc.datasource.DataSourceTransactionManager">
  12. <property name="dataSource" ref="dataSource" />
  13. </bean>
  14. <!-- 定义事务策略 -->
  15. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  16. <tx:attributes>
  17. <!--所有以query开头的方法都是只读的 -->
  18. <tx:method name="query*" read-only="true" />
  19. <!--其他方法使用默认事务策略 -->
  20. <tx:method name="*" />
  21. </tx:attributes>
  22. </tx:advice>
  23. <aop:config>
  24. <!--pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型,
  25. 这里星号表明匹配所有返回类型。 com.abc.dao.*.*(..)表明匹配com.service包下的所有类的所有
  26. 方法 -->
  27. <aop:pointcut id="myPointcut" expression="execution(* com.service.*.*(..))" />
  28. <!--将定义好的事务处理策略应用到上述的切入点 -->
  29. <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />
  30. </aop:config>
  31. </beans>
5、下面开始配置springmvc相关的

  在src/main/resources/ spring文件夹下新建:SpringMVC.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" xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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.xsd">
  9. <!-- 同时开启json格式的支持 -->
  10. <mvc:annotation-driven> </mvc:annotation-driven>
  11. <!-- spring mvc 扫描所有的controller 但是不扫描service -->
  12. <context:component-scan base-package="com">
  13. <context:include-filter type="annotation"
  14. expression= "org.springframework.stereotype.Controller" />
  15. <context:exclude-filter type="annotation"
  16. expression= "org.springframework.stereotype.Service" />
  17. </context:component-scan>
  18. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
  19. <bean
  20. class= "org.springframework.web.servlet.view.InternalResourceViewResolver">
  21. <property name="prefix" value="/WEB-INF/jsp/" />
  22. <property name="suffix" value=".jsp" /> <!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
  23. </bean>
  24. </beans>
6、配置日志

  1. ##root logger , local level: debug, output: stdout ##
  2. ## root logger: better performance than others ##
  3. log4j.rootLogger=info,stdout
  4. log4j.appender.F=org.apache.log4j.DailyRollingFileAppender
  5. log4j.appender.F.DatePattern= '.'yyyy-MM-dd
  6. log4j.appender.F.File=logs/ssm_demo.log
  7. log4j.appender.F.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.F.layout.ConversionPattern=[%d{ISO8601}|%t|%- 5p|%C] - %m%n
  9. log4j.appender.F.encoding=UTF- 8
  10. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  11. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  12. log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}|%- 5p|%c] - %m%n
  13. #show application DEBUG log
  14. log4j.logger.com.asecs = DEBUG,F
  15. #show ibatis DEBUG log
  16. log4j.logger.com.ibatis = DEBUG
  17. log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
  18. log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
  19. log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
  20. log4j.logger.java.sql.Connection = DEBUG
  21. log4j.logger.java.sql.Statement = DEBUG
  22. log4j.logger.java.sql.PreparedStatement = DEBUG
  23. log4j.logger.java.sql.ResultSet = DEBUG
7、配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns= "http://java.sun.com/xml/ns/javaee"
  4. xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. id= "MyWebApp" version= "2.5">
  6. <display-name>my </display-name>
  7. <!-- 加载(spring自身的,事务,mybatis)配置文件-->
  8. <context-param>
  9. <param-name>contextConfigLocation </param-name>
  10. <param-value>classpath:spring/applicationContext*.xml </param-value>
  11. </context-param>
  12. <!-- 防止spring内存溢出监听器 -->
  13. <listener>
  14. <listener-class>org.springframework.web.util.IntrospectorCleanupListener </listener-class>
  15. </listener>
  16. <!--Spring的ApplicationContext 载入:Spring的监听器 -->
  17. <listener>
  18. <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
  19. </listener>
  20. <!-- 加载SpringMVC的配置文件-->
  21. <servlet>
  22. <servlet-name>SpringMVC </servlet-name>
  23. <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
  24. <init-param>
  25. <param-name>contextConfigLocation </param-name>
  26. <param-value>classpath:spring/SpringMVC.xml </param-value>
  27. </init-param>
  28. <load-on-startup>1 </load-on-startup>
  29. </servlet>
  30. <servlet-mapping>
  31. <servlet-name>SpringMVC </servlet-name>
  32. <url-pattern>*.action </url-pattern>
  33. </servlet-mapping>
  34. <filter>
  35. <description>字符集过滤器 </description>
  36. <filter-name>encodingFilter </filter-name>
  37. <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
  38. <init-param>
  39. <description>字符集编码 </description>
  40. <param-name>encoding </param-name>
  41. <param-value>UTF-8 </param-value>
  42. </init-param>
  43. </filter>
  44. <filter-mapping>
  45. <filter-name>encodingFilter </filter-name>
  46. <url-pattern>/* </url-pattern>
  47. </filter-mapping>
  48. <!-- 配置session超时时间,单位分钟 -->
  49. <session-config>
  50. <session-timeout>60 </session-timeout>
  51. </session-config>
  52. <!-- DEFAULT PAGE -->
  53. <welcome-file-list>
  54. <welcome-file>index.jsp </welcome-file>
  55. </welcome-file-list>
  56. </web-app>
8、新建表t_user

  1. CREATE TABLE `t_user` (
  2. `username` varchar( 255) NOT NULL,
  3. `password` varchar( 255) DEFAULT NULL,
  4. PRIMARY KEY ( `username`)
  5. ) ENGINE= InnoDB DEFAULT CHARSET=utf8;
9、新建实体类User

  1. package com.entity;
  2. public class User {
  3. private String username;
  4. private String password;
  5. public String getUsername() {
  6. return username;
  7. }
  8. public void setUsername(String username) {
  9. this.username = username;
  10. }
  11. public String getPassword() {
  12. return password;
  13. }
  14. public void setPassword(String password) {
  15. this.password = password;
  16. }
  17. }
10、新建mybatis mapper配置文件UserMapper.xml

  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.dao.UserDao">
  4. <resultMap id="BaseResultMap" type="com.entity.User">
  5. <result column="username" property="username" />
  6. <result column="password" property="password" />
  7. </resultMap>
  8. <sql id="Base_Column_List" >
  9. username, password
  10. </sql>
  11. <select id="selectId" resultMap="BaseResultMap" parameterType="java.lang.String" >
  12. select
  13. <include refid="Base_Column_List" />
  14. from t_user
  15. where username = #{username,jdbcType=VARCHAR}
  16. </select>
  17. </mapper>
11、创建service接口

  1. package com.service;
  2. import org.springframework.stereotype.Service;
  3. import com.entity.User;
  4. @Service
  5. public interface UserService {
  6. boolean doUserLogin(User user);
  7. }
12、创建service实现类

  1. package com.service;
  2. import java.util.List;
  3. import javax.annotation.Resource;
  4. import javax.annotation.Resources;
  5. import org.springframework.stereotype.Service;
  6. import com.dao.UserDao;
  7. import com.entity.User;
  8. @Service
  9. public class UserServiceImpl implements UserService {
  10. @Resource
  11. private UserDao userDao;
  12. public boolean doUserLogin(User user) {
  13. List<User> list = userDao.selectId(user.getUsername());
  14. if(list.size() == 0){
  15. return false;
  16. } else{
  17. if(list.get( 0).getPassword().equals(user.getPassword())){
  18. return true;
  19. } else{
  20. return false;
  21. }
  22. }
  23. }
  24. }
13、创建UserDao接口

  1. package com.dao;
  2. import java.util.List;
  3. import org.springframework.stereotype.Repository;
  4. import com.entity.User;
  5. @Repository
  6. public interface UserDao{
  7. List<User> selectId(String username);
  8. }

14、创建controller

  1. package com.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import com.entity.User;
  7. import com.service.UserService;
  8. @Controller
  9. @RequestMapping( "/test")
  10. /*@ResponseBody */
  11. public class LoginController {
  12. @Autowired
  13. private UserService userService; //基于接口的,用接口接收
  14. @RequestMapping( "/login.action") //url
  15. public String dologin(User user, Model model){
  16. if(userService.doUserLogin(user)){
  17. System.out.println(user);
  18. model.addAttribute( "successMsg", "登陆成功!"); //返回到页面所夹带的参数
  19. model.addAttribute( "name", user.getUsername());
  20. return "/success"; //返回的页面
  21. } else{
  22. model.addAttribute( "failMsg", "用户不存在或密码错误!");
  23. return "/fail";
  24. }
  25. }
  26. }
至此配置完成,还有前端页面代码没有贴出来,大家需要的话到这里下载:https://gitee.com/redpigstu/ssm_demo_xml

猜你喜欢

转载自blog.csdn.net/wangpengfei163/article/details/81065662
今日推荐