SSM整合:spring + springmvc + mybatis

  1.1 生成Maven项目:ar_ssm

  1.2 添加jar包

  1. <dependencies>
  2. <!-- 单元测试 -->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>4.12</version>
  7. <scope>test</scope>
  8. </dependency>
  9. <!-- 日志处理(mybatis默认的日志处理) -->
  10. <dependency>
  11. <groupId>org.slf4j</groupId>
  12. <artifactId>slf4j-log4j12</artifactId>
  13. <version>1.6.4</version>
  14. </dependency>
  15.  
  16.      <!-- Spring -->
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-context</artifactId>
  20. <version>4.2.8.RELEASE</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework</groupId>
  24. <artifactId>spring-beans</artifactId>
  25. <version>4.2.8.RELEASE</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework</groupId>
  29. <artifactId>spring-webmvc</artifactId>
  30. <version>4.2.8.RELEASE</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework</groupId>
  34. <artifactId>spring-jdbc</artifactId>
  35. <version>4.2.8.RELEASE</version>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework</groupId>
  39. <artifactId>spring-aspects</artifactId>
  40. <version>4.2.8.RELEASE</version>
  41. </dependency>
  42.  
  43. <!-- Mybatis -->
  44. <dependency>
  45. <groupId>org.mybatis</groupId>
  46. <artifactId>mybatis</artifactId>
  47. <version>3.2.8</version>
  48. </dependency>
  49.  
  50. <!-- Mybatis spring 插件 -->
  51. <dependency>
  52. <groupId>org.mybatis</groupId>
  53. <artifactId>mybatis-spring</artifactId>
  54. <version>1.2.2</version>
  55. </dependency>
  56.  
  57. <!-- MySql -->
  58. <dependency>
  59. <groupId>mysql</groupId>
  60. <artifactId>mysql-connector-java</artifactId>
  61. <version>5.1.32</version>
  62. </dependency>
  63. <!-- 连接池 -->
  64. <dependency>
  65. <groupId>com.alibaba</groupId>
  66. <artifactId>druid</artifactId>
  67. <version>1.0.9</version>
  68. </dependency>
  69. <!-- JSP相关 -->
  70. <dependency>
  71. <groupId>jstl</groupId>
  72. <artifactId>jstl</artifactId>
  73. <version>1.2</version>
  74. </dependency>
  75. <dependency>
  76. <groupId>javax.servlet</groupId>
  77. <artifactId>servlet-api</artifactId>
  78. <version>2.5</version>
  79. <scope>provided</scope>
  80. </dependency>
  81. <dependency>
  82. <groupId>javax.servlet</groupId>
  83. <artifactId>jsp-api</artifactId>
  84. <version>2.0</version>
  85. <scope>provided</scope>
  86. </dependency>
  87. <!-- Jackson Json处理工具包 -->
  88. <dependency>
  89. <groupId>com.fasterxml.jackson.core</groupId>
  90. <artifactId>jackson-databind</artifactId>
  91. <version>2.4.2</version>
  92. </dependency>
  93. <!-- 文件处理 -->
  94. <dependency>
  95. <groupId>commons-fileupload</groupId>
  96. <artifactId>commons-fileupload</artifactId>
  97. <version>1.3.2</version>
  98. </dependency>
  99. </dependencies>

pom.xml

  1.3 创建log4j.properties

  1. log4j.rootLogger=DEBUG,A1
  2. log4j.logger.org.mybatis = DEBUG
  3. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  4. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

log4j.properties

   1.4 创建db.properties

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/database_name
  3. jdbc.username=root
  4. jdbc.password=root

db.properties

  2.1 引入myBatis逆向工程:

  2.2 创建mybatis配置文件:mybatis-config.xml

    mybatis启动时会自动读取此配置文件,配置文件内容(除文件头)可以为空,但是配置文件必须存在,否则mybatis启动出错

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5.  
  6. </configuration>

mybatis-config.xml

  3.1 创建spring的配置文件:

    applicationContext-dao.xml:

      dao层的配置文件:

        加载数据库配置文件和其他配置文件

        数据库连接池

        整合mybatis(sqlSessionFactory)

        注入Dao对象(使用sqlSessionFactory和包路径生成mapper的Dao对象)

  1. <!-- 加载数据库配置文件和其他配置文件 -->
  2. <context:property-placeholder location="classpath:db.properties" />
  3.  
  4. <!-- 数据库连接池 -->
  5. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
  6. destroy-method="close">
  7. <property name="url" value="${jdbc.url}" />
  8. <property name="username" value="${jdbc.username}" />
  9. <property name="password" value="${jdbc.password}" />
  10. <property name="driverClassName" value="${jdbc.driver}" />
  11. <!-- 最大连接数据库连接数,设 0 为没有限制 -->
  12. <property name="maxActive" value="10" />
  13. <!-- 最小连接池数量 -->
  14. <property name="minIdle" value="5" />
  15. </bean>
  16.  
  17. <!-- 整合mybatis:SqlsessionFactory -->
  18. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  19. <!-- 数据源 -->
  20. <property name="dataSource" ref="dataSource" />
  21. <!-- mybatis配置文件 -->
  22. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
  23. </bean>
  24.  
  25. <!-- 注入DAO对象:配置mapper MapperFactoryBean:用于生成mapper代理对象 -->
  26. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  27. <!-- 配置扫描包的路径 如果要扫描多个包,中间使用半角逗号分隔 -->
  28. <property name="basePackage" value="com.roxy.arrescue.mapper" />
  29. <!-- 使用sqlSessionFactoryBeanName -->
  30. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  31. </bean>

applicationContext-dao.xml

  1. <!-- 加载数据库配置文件和其他配置文件 -->
  2. <context:property-placeholder location="classpath:db.properties" />
  3.  
  4. <!-- 数据库连接池 -->
  5. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
  6. destroy-method="close">
  7. <property name="url" value="${jdbc.url}" />
  8. <property name="username" value="${jdbc.username}" />
  9. <property name="password" value="${jdbc.password}" />
  10. <property name="driverClassName" value="${jdbc.driver}" />
  11. <!-- 最大连接数据库连接数,设 0 为没有限制 -->
  12. <property name="maxActive" value="10" />
  13. <!-- 最小连接池数量 -->
  14. <property name="minIdle" value="5" />
  15. </bean>
  16.  
  17. <!-- 整合mybatis:SqlsessionFactory -->
  18. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  19. <!-- 数据源 -->
  20. <property name="dataSource" ref="dataSource" />
  21. <!-- mybatis配置文件 -->
  22. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
  23. </

    applicationContext-service.xml:

      service层的配置文件:

        扫描service

        配置事务管理

        通知

        切面

  1. <!-- 扫描service -->
  2. <context:component-scan base-package="com.roxy.arrescue.service" />
  3.  
  4. <!-- 事务管理器 -->
  5. <bean id="transactionManager"
  6. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  7. <!-- 数据源 -->
  8. <property name="dataSource" ref="dataSource" />
  9. </bean>
  10.  
  11. <!-- 通知 -->
  12. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  13. <tx:attributes>
  14. <!-- 传播行为 -->
  15. <!-- REQUIRED:如果有事务,则在事务中执行;如果没有事务,则开启一个新的事物 -->
  16. <tx:method name="save*" propagation="REQUIRED" />
  17. <tx:method name="insert*" propagation="REQUIRED" />
  18. <tx:method name="add*" propagation="REQUIRED" />
  19. <tx:method name="create*" propagation="REQUIRED" />
  20. <tx:method name="delete*" propagation="REQUIRED" />
  21. <tx:method name="update*" propagation="REQUIRED" />
  22. <!-- SUPPORTS:如果有事务,则在事务中执行;如果没有事务,则不会开启事物 -->
  23. <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
  24. <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
  25. <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
  26. </tx:attributes>
  27. </tx:advice>
  28.  
  29. <!-- 切面 -->
  30. <aop:config>
  31. <!-- 定义在service包或者子包里的任意方法的执行 -->
  32. <aop:pointcut id="txPointCut"
  33. expression="execution(* com.roxy.arrescue.service..*.*(..))" />
  34. <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut" />
  35. </aop:config>

applicationContext-service.xml

    spring-mvc.xml:

      扫描controller

      注解驱动

      视图解析器

      静态资源解析

  1. <!-- 扫描controller包下所有标注@Controller的组件 -->
  2. <context:component-scan base-package="com.roxy.arrescue.controller" />
  3.  
  4. <!-- mvc注解驱动 -->
  5. <mvc:annotation-driven />
  6.  
  7. <!-- 视图解析器 -->
  8. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
  9. p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
  10.  
  11. <!-- 静态资源 解析 -->
  12. <mvc:resources location="/script/" mapping="/script/**" />
  13. <mvc:resources location="/css/" mapping="/css/**" />
  14. <mvc:resources location="/images/" mapping="/images/**" />

spring-mvc.xml

  4 web.xml的配置

    加载spring的配置

    加载spring mvc的配置

    处理post乱码

  1. <welcome-file-list>
  2. <welcome-file>index</welcome-file>
  3. </welcome-file-list>
  4.  
  5. <!-- spring:配置spring容器监听器 -->
  6. <context-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:spring/applicationContext-*.xml</param-value>
  9. </context-param>
  10. <listener>
  11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  12. </listener>
  13.  
  14. <!-- SpringMVC:前端控制器 -->
  15. <servlet>
  16. <servlet-name>rescue</servlet-name>
  17. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  18. <!-- 加载springmvc配置 -->
  19. <init-param>
  20. <param-name>contextConfigLocation</param-name>
  21. <param-value>classpath:spring/spring-mvc.xml</param-value>
  22. </init-param>
  23. <load-on-startup>1</load-on-startup>
  24. </servlet>
  25. <!-- 所有的客户端请求 由 DispatcherServlet 来处理 -->
  26. <servlet-mapping>
  27. <servlet-name>rescue</servlet-name>
  28. <url-pattern>/</url-pattern>
  29. </servlet-mapping>
  30.  
  31. <!-- post乱码处理 -->
  32. <filter>
  33. <filter-name>CharacterEncodingFilter</filter-name>
  34. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  35. <init-param>
  36. <param-name>encoding</param-name>
  37. <param-value>utf-8</param-value>
  38. </init-param>
  39. </filter>
  40. <filter-mapping>
  41. <filter-name>CharacterEncodingFilter</filter-name>
  42. <url-pattern>/*</url-pattern>
  43. </filter-mapping>

web.xml

  5 创建service层接口和实现类:

  1. public interface RoleService {
  2.  
  3. public List<ArRole> getRoleList();
  4.  
  5. }

RoleService

  1. @Service
  2. public class RoleServiceImpl implements RoleService{
  3.  
  4. @Autowired
  5. private ArRoleMapper roleMapper;
  6.  
  7. public List<ArRole> getRoleList() {
  8.  
  9. //返回所有的值
  10. roleMapper.selectByExample(null);
  11.  
  12. return null;
  13. }
  14. }

RoleServiceImpl

  6 创建controller层:

  1. @Controller
  2. public class RoleController {
  3.  
  4. @Autowired
  5. private RoleService roleService;
  6.  
  7. //返回JSON数据
  8. @ResponseBody
  9. @RequestMapping("/role/list")
  10. public List<ArRole> getAll(){
  11.  
  12. return roleService.getRoleList();
  13. }
  14.  
  15. }

RoleController

  7 和web项目进行整合

SSM 项目整合的更多相关文章

  1. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  2. SSM项目整合第一步 注册登陆实现

    SSM项目整合第一步  注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...

  3. SSM项目整合Quartz

    一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...

  4. SSM项目整合纪实

    一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...

  5. Solr专题(三)SSM项目整合Solr

    一.环境配置 所需要的jar包: org.apache.solr.solr-solrj maven依赖: <!-- https://mvnrepository.com/artifact/org. ...

  6. ssm项目整合shiro

    pom.xml <properties> <shiro.version>1.2.2</shiro.version> </properties> < ...

  7. SpringMVC详解及SSM框架整合项目

    SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...

  8. SSM框架整合项目 :租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...

  9. SSM 框架 ---项目整合

    一.SSM框架理解 Spring(业务层) Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象. Spring的核心思想是IoC(控 ...

随机推荐

  1. 使用netlify-statuskit 进行系统业务状态报告

    netlify-statuskit 是netlify 团队开源的一款类似github status 的脚手架website,使用此工具 我们可以对于我们系统模块进行报告,同时对于故障时,我们可以进行故 ...

  2. drone secret 使用

      drone 的secret 可以让我们方便的对于需要保密的信息的隐藏,减少账户信息的泄密 环境准备 docker-compose 文件 version: '3' services: drone-s ...

  3. 数学与猜想 数学中的归纳和类比 (G. 波利亚 著)

    第一章 归纳方法 (已看) $1. 经验和信念 $2. 启发性联想 $3. 支持性联想 $4. 归纳的态度 第二章 一般化,特殊化,类比 (已看) $1. 一般化,特殊化,类比和归纳 $2. 一般化 ...

  4. C/S架构程序多种类服务器之间实现单点登录

    (一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...

  5. 20165308 2017-2018-2 《Java程序设计》第2周学习总结

    20165308 2017-2018-2 <Java程序设计>第2周学习总结 教材学习内容总结 标识符与关键字 基本数据类型 输入输出数据 循环语句 break continue语句 if ...

  6. gets_s()函数的参数太少,strcpy_s():形参和实参 2 的类型不同,等c函数在Visual Studio上出现的问题, get()函数和scanf()读取字符串的区别,栈的随机性

    首先,这些C函数,在VS上要加_s后缀的原因是,这些函数存在字符串越界等问题,可以参考这篇文章,https://blog.csdn.net/silleyj/article/details/854540 ...

  7. thinkphp5 列表页数据分页查询3-带搜索条件

    先加载模板然后在前端HTML页面请求数据 /** * 加载列表页模板 * @author 冯广福 */ public function index() { LogWriteService::write ...

  8. ELK-head

    Head从elastic5开始只是支持单独服务器,不能够在通过 elasticsearch/bin/plugin -install mobz/elasticsearch-head 这样简单的方式安装插 ...

  9. ubuntu 客户机安装VMware tools时出现编译错误,无法与主机共享文件(转)

    主机:win7旗舰版 vmware workstation 10.0.7 (其他10.x版本也有这个问题) 客户机:Ubuntu14.04.4-16.x 安装vmware tools时出现下列编译错误 ...

  10. py-day1-5 python 分割 、 字母大小转换

    # partition() 分割为3段 从左往右遇见的第一个开始 test = 'bassaiwoll' v = test.partition('s') print(v) ('ba', 's', 's ...