经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
SSM(Spring+SpringMVC+Mybstis)搭建,写给新手
来源:cnblogs  作者:MojxTang  时间:2018/12/18 9:43:51  对本文有异议

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

作用:

SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层

使用spring MVC负责请求的转发和视图管理

spring实现业务对象管理,mybatis作为数据对象的持久化引擎

原理:

SpringMVC:

1.客户端发送请求到DispacherServlet(分发器)

2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller

3.Controller调用业务逻辑处理后,返回ModelAndView

4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图

5.视图负责将结果显示到客户端

搭建:

项目结构如下

1、引用需要的jar包,在pom.xml中添加以下内容

  1. <properties>
  2. <!-- spring版本号 -->
  3. <spring.version>4.3.3.RELEASE</spring.version>
  4. <!-- <spring.version>4.0.2.RELEASE</spring.version> -->
  5. <!-- mybatis版本号 -->
  6. <mybatis.version>3.2.6</mybatis.version>
  7. <!-- log4j日志文件管理包版本 -->
  8. <slf4j.version>1.7.7</slf4j.version>
  9. <log4j.version>1.2.17</log4j.version>
  10. </properties>
  11. <dependencies>
  12.  
  13. <dependency>
  14. <groupId>javax</groupId>
  15. <artifactId>javaee-api</artifactId>
  16. <version>7.0</version>
  17. </dependency>
  18.  
  19.  
  20.  
  21. <dependency>
  22. <groupId>junit</groupId>
  23. <artifactId>junit</artifactId>
  24. <version>4.12</version>
  25. <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
  26. <scope>test</scope>
  27. </dependency>
  28. <!-- spring核心包 -->
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-core</artifactId>
  32. <version>${spring.version}</version>
  33. </dependency>
  34.  
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-web</artifactId>
  38. <version>${spring.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework</groupId>
  42. <artifactId>spring-oxm</artifactId>
  43. <version>${spring.version}</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework</groupId>
  47. <artifactId>spring-tx</artifactId>
  48. <version>${spring.version}</version>
  49. </dependency>
  50.  
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-jdbc</artifactId>
  54. <version>${spring.version}</version>
  55. </dependency>
  56.  
  57. <dependency>
  58. <groupId>org.springframework</groupId>
  59. <artifactId>spring-webmvc</artifactId>
  60. <version>${spring.version}</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>org.springframework</groupId>
  64. <artifactId>spring-aop</artifactId>
  65. <version>${spring.version}</version>
  66. </dependency>
  67.  
  68. <dependency>
  69. <groupId>org.springframework</groupId>
  70. <artifactId>spring-context-support</artifactId>
  71. <version>${spring.version}</version>
  72. </dependency>
  73.  
  74. <dependency>
  75. <groupId>org.springframework</groupId>
  76. <artifactId>spring-test</artifactId>
  77. <version>${spring.version}</version>
  78. </dependency>
  79. <!-- mybatis核心包 -->
  80. <dependency>
  81. <groupId>org.mybatis</groupId>
  82. <artifactId>mybatis</artifactId>
  83. <version>${mybatis.version}</version>
  84. </dependency>
  85. <!-- mybatis/spring包 -->
  86. <dependency>
  87. <groupId>org.mybatis</groupId>
  88. <artifactId>mybatis-spring</artifactId>
  89. <version>1.2.2</version>
  90. </dependency>
  91. <!-- 导入java ee jar 包 -->
  92. <dependency>
  93. <groupId>javax</groupId>
  94. <artifactId>javaee-api</artifactId>
  95. <version>7.0</version>
  96. </dependency>
  97. <!-- 导入Mysql数据库链接jar包 Start -->
  98. <dependency>
  99. <groupId>mysql</groupId>
  100. <artifactId>mysql-connector-java</artifactId>
  101. <version>5.1.30</version>
  102. </dependency>
  103. <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
  104. <dependency>
  105. <groupId>commons-dbcp</groupId>
  106. <artifactId>commons-dbcp</artifactId>
  107. <version>1.2.2</version>
  108. </dependency>
  109. <!--数据库包 End -->
  110.  
  111. <!-- JSTL标签类 -->
  112. <dependency>
  113. <groupId>jstl</groupId>
  114. <artifactId>jstl</artifactId>
  115. <version>1.2</version>
  116. </dependency>
  117.  
  118. <!-- 日志文件管理包 log Start -->
  119. <!-- log start -->
  120. <dependency>
  121. <groupId>log4j</groupId>
  122. <artifactId>log4j</artifactId>
  123. <version>${log4j.version}</version>
  124. </dependency>
  125. <!-- 格式化对象,方便输出日志 -->
  126. <dependency>
  127. <groupId>com.alibaba</groupId>
  128. <artifactId>fastjson</artifactId>
  129. <version>1.1.41</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>org.slf4j</groupId>
  133. <artifactId>slf4j-api</artifactId>
  134. <version>${slf4j.version}</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>org.slf4j</groupId>
  138. <artifactId>slf4j-log4j12</artifactId>
  139. <version>${slf4j.version}</version>
  140. </dependency>
  141. <!-- log End -->
  142.  
  143. <!-- 映入JSON Start -->
  144. <dependency>
  145. <groupId>com.fasterxml.jackson.core</groupId>
  146. <artifactId>jackson-core</artifactId>
  147. <version>2.7.5</version>
  148. </dependency>
  149. <dependency>
  150. <groupId>com.fasterxml.jackson.core</groupId>
  151. <artifactId>jackson-annotations</artifactId>
  152. <version>2.7.5</version>
  153. </dependency>
  154. <dependency>
  155. <groupId>com.fasterxml.jackson.core</groupId>
  156. <artifactId>jackson-databind</artifactId>
  157. <version>2.7.5</version>
  158. </dependency>
  159.  
  160. <dependency>
  161. <groupId>org.codehaus.jackson</groupId>
  162. <artifactId>jackson-mapper-asl</artifactId>
  163. <version>1.9.4</version>
  164. </dependency>
  165.  
  166. <dependency>
  167. <groupId>org.codehaus.jackson</groupId>
  168. <artifactId>jackson-core-asl</artifactId>
  169. <version>1.9.4</version>
  170. </dependency>
  171. <!-- json END -->
  172.  
  173. <!-- 上传组件包 Start -->
  174. <dependency>
  175. <groupId>commons-fileupload</groupId>
  176. <artifactId>commons-fileupload</artifactId>
  177. <version>1.3.1</version>
  178. </dependency>
  179. <dependency>
  180. <groupId>commons-io</groupId>
  181. <artifactId>commons-io</artifactId>
  182. <version>2.4</version>
  183. </dependency>
  184. <dependency>
  185. <groupId>commons-codec</groupId>
  186. <artifactId>commons-codec</artifactId>
  187. <version>1.9</version>
  188. </dependency>
  189. <dependency>
  190. <groupId>commons-httpclient</groupId>
  191. <artifactId>commons-httpclient</artifactId>
  192. <version>3.0</version>
  193. </dependency>
  194. <dependency>
  195. <groupId>commons-logging</groupId>
  196. <artifactId>commons-logging</artifactId>
  197. <version>1.1.1</version>
  198. </dependency>
  199. <!-- 上传组件包 End -->
  200.  
  201. <!--mybatis分页插件 -->
  202.  
  203. <dependency>
  204. <groupId>com.github.pagehelper</groupId>
  205. <artifactId>pagehelper</artifactId>
  206. <version>4.0.0</version>
  207. </dependency>
  208. <!-- Start:excel批量导入 -->
  209. <dependency>
  210. <groupId>org.apache.poi</groupId>
  211. <artifactId>poi</artifactId>
  212. <version>3.15</version>
  213. </dependency>
  214.  
  215. <dependency>
  216. <groupId>org.apache.poi</groupId>
  217. <artifactId>poi-ooxml</artifactId>
  218. <version>3.15</version>
  219. </dependency>
  220. <!-- End:excel批量导入 -->
  221. </dependencies>

 2、整合SpringMVC,配置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:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.1.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
  13. <!-- 告诉spring注册几个默认的bean,用来处理@requestmapping及处理请求的适配器-->
  14. <mvc:annotation-driven/>
  15. <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 (注册@Component,@Controller,@Service,@Repository等注解标记的组件)-->
  16. <context:component-scan base-package="com.mojxtang.controller" />
  17. <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
  18. <bean id="mappingJacksonHttpMessageConverter"
  19. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  20. <property name="supportedMediaTypes">
  21. <list>
  22. <value>text/html;charset=UTF-8</value>
  23. </list>
  24. </property>
  25. </bean>
  26. <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
  27. <bean
  28. class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  29. <property name="messageConverters">
  30. <list>
  31. <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->
  32. </list>
  33. </property>
  34. </bean>
  35. <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
  36. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  37. <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
  38. <property name="prefix" value="/" /> <!-- /WEB-INF/jsp/ -->
  39. <property name="suffix" value=".html" />
  40. </bean>
  41. <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
  42. <bean id="multipartResolver"
  43. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  44. <!-- 默认编码 -->
  45. <property name="defaultEncoding" value="utf-8" />
  46. <!-- 文件大小最大值 -->
  47. <property name="maxUploadSize" value="10485760000" />
  48. <!-- 内存中的最大值 -->
  49. <property name="maxInMemorySize" value="40960" />
  50. </bean>
  51. </beans>

 3、配置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_3_0.xsd"
  5. version="3.0">
  6. <display-name>Archetype Created Web Application</display-name>
  7. <!-- 配置编码过滤器Start -->
  8. <filter>
  9. <!-- url-pattern的值可以是/也可以是/* -->
  10. <filter-name>encodingFilter</filter-name>
  11. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  12. <async-supported>true</async-supported>
  13. <init-param>
  14. <param-name>encoding</param-name>
  15. <param-value>UTF-8</param-value>
  16. </init-param>
  17. </filter>
  18. <filter-mapping>
  19. <filter-name>encodingFilter</filter-name>
  20. <url-pattern>/*</url-pattern>
  21. </filter-mapping>
  22. <!-- 配置编码过滤器End -->
  23. <!-- 如果同一个bean被定义两次,后面一个优先 -->
  24. <!-- classpath*与classpath的区别:前者遍历所有的classpath加载所有符合条件的资源(效率较差),后者只会去找第一个符合条件的资源(避免重名) -->
  25. <context-param>
  26. <description></description>
  27. <param-name>contextConfigLocation</param-name>
  28. <!-- <param-value>classpath*:spring-*.xml</param-value> -->
  29. <param-value>
  30. classpath:spring-mybatis.xml
  31. </param-value>
  32. </context-param>
  33. <!-- 此监听器主要用于解决java.beans.Introspector导致的内存泄漏的问题,回收JavaBean中的缓存垃圾,防止内存变大。默认可以不配 -->
  34. <!-- 此监听器应该配置在web.xml中与Spring相关监听器中的第一个位置(也要在ContextLoaderListener的前面)-->
  35. <listener>
  36. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  37. </listener>
  38. <!-- 启动spring容器用,容器用于管理Bean-->
  39. <listener>
  40. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  41. </listener>
  42. <!-- DispatcherServlet 针对MVC上下文加载,即拦截请求,分发请求给Controller -->
  43. <!-- load-on-startup 标记容器是否在启动的时候就加载这个servlet, >=0时启动,其他情况被选择才启动,相当于懒加载和饿汉模式 -->
  44. <servlet>
  45. <servlet-name>SpringMVC</servlet-name>
  46. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  47. <init-param>
  48. <param-name>contextConfigLocation</param-name>
  49. <param-value>classpath:spring-mvc.xml</param-value>
  50. </init-param>
  51. <load-on-startup>1</load-on-startup>
  52. <async-supported>true</async-supported>
  53. </servlet>
  54. <servlet-mapping>
  55. <servlet-name>SpringMVC</servlet-name>
  56. <url-pattern>/</url-pattern>
  57. </servlet-mapping>
  58. <!-- 解决样式资源丢失问题 -->
  59. <servlet-mapping>
  60. <servlet-name>default</servlet-name>
  61. <url-pattern>*.jpg</url-pattern>
  62. <url-pattern>*.js</url-pattern>
  63. <url-pattern>*.css</url-pattern>
  64. <url-pattern>*.png</url-pattern>
  65. <url-pattern>*.gif</url-pattern>
  66. <url-pattern>*.json</url-pattern>
  67. <url-pattern>*.html</url-pattern>
  68. <url-pattern>*.htm</url-pattern>
  69. <url-pattern>*.swf</url-pattern>
  70. <url-pattern>*.eot</url-pattern>
  71. <url-pattern>*.svg</url-pattern>
  72. <url-pattern>*.ttf</url-pattern>
  73. <url-pattern>*.woff</url-pattern>
  74. <url-pattern>*.woff2</url-pattern>
  75. <url-pattern>*.jpeg</url-pattern><!-- 页面不显示图片,格式不允许 -->
  76. </servlet-mapping>
  77. <listener>
  78. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  79. </listener>
  80. </web-app>

4、配置mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 引入db.properties文件 <properties resource="db.properties"> <property name="driver"
  7. value="oracle.jdbc.driver.OracleDriver"/> </properties> -->
  8. <!-- 开启延迟加载 -->
  9. <settings>
  10. <setting name="lazyLoadingEnabled" value="true" />
  11. <setting name="aggressiveLazyLoading" value="false" />
  12. </settings>
  13. <plugins>
  14. <plugin interceptor="com.github.pagehelper.PageHelper">
  15. <property name="dialect" value="mysql" />
  16. <property name="offsetAsPageNum" value="true" />
  17. <property name="rowBoundsWithCount" value="true" />
  18. <property name="pageSizeZero" value="true" />
  19. <property name="reasonable" value="false" />
  20. <property name="params" value="pageNum=start;pageSize=limit;" />
  21. <property name="returnPageInfo" value="check" />
  22. </plugin>
  23. </plugins>
  24. </configuration>

 5、配置spring-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
  7. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.1.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
  12. <!-- 自动扫描 com.znkj.dao,com.znkj.service-->
  13. <context:component-scan base-package="com.mojxtang"/>
  14. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  15. destroy-method="close">
  16. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  17. <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
  18. <property name="username" value="root"/>
  19. <property name="password" value="123123"/>
  20. </bean>
  21. <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
  22. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  23. <property name="dataSource" ref="dataSource" />
  24. <!-- 加载 mybatis-config.xml文件-->
  25. <property name="configLocation" value="classpath:mybatis-config.xml"></property>
  26. <!-- 自动扫描*.xml文件 -->
  27. <property name="mapperLocations" value="classpath:com/mojxtang/mapper/*.xml"></property>
  28. </bean>
  29. <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
  30. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  31. <property name="basePackage" value="com.mojxtang.dao" />
  32. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
  33. </bean>
  34. <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
  35. <bean id="transactionManager"
  36. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  37. <property name="dataSource" ref="dataSource" />
  38. </bean>
  39. </beans>

 6、配置log4j.properties

  1. log4j.rootLogger=DEBUG, stdout, logfile,ERROR
  2. #配置根Logger:设定日志记录的最低级别,
  3. log4j.category.org.springframework=ERROR
  4. log4j.category.org.apache=INFO
  5. log4j.logger.org.hibernate=ERROR
  6.  
  7. #输出到控制台
  8. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  9. log4j.appender.stdout.Threshold=ERROR
  10. #:指定日志信息的最低输出级别,默认为DEBUG。
  11. log4j.appender.stdout.ImmediateFlush=true
  12. #表示所有消息都会被立即输出,设为false则不输出,默认值是true。
  13. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  14. #可以灵活自定义布局模式
  15. log4j.appender.stdout.Target=System.out
  16. #默认值是System.out。
  17. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  18. #设定以怎样的格式显示消息
  19.  
  20. #文件大小到达指定尺寸的时候产生一个新的文件
  21. log4j.appender.logfile=org.apache.log4j.RollingFileAppender
  22. log4j.appender.logfile.File=${catalina.home}/webapps/error/log.log
  23. #日志的输出文件所在目录
  24. log4j.appender.logfile.Append=false
  25. #true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
  26. log4j.appender.logfile.Threshold=INFO
  27. log4j.appender.logfile.MaxFileSize=2048KB
  28. #后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
  29. log4j.appender.logfile.MaxBackupIndex=2
  30. #指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。
  31. log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
  32. log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
  33.  
  34. #每天产生一个日志文件
  35. log4j.appender.DAILY=org.apache.log4j.DailyRollingFileAppender
  36. log4j.appender.DAILY.Threshold=INFO
  37. log4j.appender.DAILY.File=${catalina.home}/webapps/error/log.log
  38. log4j.appender.DAILY.Append=true
  39. log4j.appender.DAILY.DatePattern='_'yyyy-MM-dd'.txt'
  40. #每天滚动一次日志文件,即每天产生一个新的日志文件。当天的日志文件名为logging.log4j,前一个天的日志文件名为logging.log4j.yyyy-MM-dd。
  41. log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout
  42. log4j.appender.RollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

 

至此,大致的框架配置完成,增加自己需要的业务代码即可,或者如下配置

 

项目源码:SSM_Demo

数据库:db

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号