SSM框架整合

悠悠 2022-12-07 12:25 125阅读 0赞

1.创建maven项目,准备实体表

idea创建一个maven项目,选用骨架webapp。创建后边验证要用的数据库和实体表。

  1. create database ssm;
  2. create table account(
  3. id int primary key auto_increment,
  4. name varchar(20),
  5. money double
  6. );

2.删除pom文件中没用的依赖,引入相关依赖

完整的pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.litengbin</groupId>
  5. <artifactId>SSM</artifactId>
  6. <version>1.0-SNAPSHOT</version>
  7. <packaging>war</packaging>
  8. <properties>
  9. <spring.version>5.0.2.RELEASE</spring.version>
  10. <slf4j.version>1.6.6</slf4j.version>
  11. <log4j>1.2.12</log4j>
  12. <mysql.version>5.1.6</mysql.version>
  13. <mybatis.version>3.4.5</mybatis.version>
  14. </properties>
  15. <dependencies>
  16. <dependency>
  17. <groupId>org.aspectj</groupId>
  18. <artifactId>aspectjweaver</artifactId><!--spring aop所要用到的包-->
  19. <version>1.6.8</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework</groupId>
  23. <artifactId>spring-aop</artifactId><!--spring aop要用到的包-->
  24. <version>${spring.version}</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>spring-context</artifactId><!--spring 核心包-->
  29. <version>${spring.version}</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework</groupId>
  33. <artifactId>spring-web</artifactId><!--快速web开发时spring所需要的包-->
  34. <version>${spring.version}</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework</groupId>
  38. <artifactId>spring-webmvc</artifactId><!--springmvc框架相关类-->
  39. <version>${spring.version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework</groupId>
  43. <artifactId>spring-test</artifactId><!--对Junit等测试框架的简单封装-->
  44. <version>${spring.version}</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework</groupId>
  48. <artifactId>spring-tx</artifactId><!--为JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持-->
  49. <version>${spring.version}</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-jdbc</artifactId><!--对JDBC 的简单封装-->
  54. <version>${spring.version}</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>junit</groupId>
  58. <artifactId>junit</artifactId><!--单元测试-->
  59. <version>4.12</version>
  60. <scope>test</scope>
  61. </dependency>
  62. <dependency>
  63. <groupId>mysql</groupId>
  64. <artifactId>mysql-connector-java</artifactId><!--mysql驱动包-->
  65. <version>${mysql.version}</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>javax.servlet</groupId>
  69. <artifactId>servlet-api</artifactId>
  70. <version>2.5</version>
  71. <scope>provided</scope>
  72. </dependency>
  73. <dependency>
  74. <groupId>javax.servlet.jsp</groupId>
  75. <artifactId>jsp-api</artifactId>
  76. <version>2.0</version>
  77. <scope>provided</scope>
  78. </dependency>
  79. <dependency>
  80. <groupId>jstl</groupId>
  81. <artifactId>jstl</artifactId><!--使用spring框架的时候导入jstl标签库-->
  82. <version>1.2</version>
  83. </dependency>
  84. <dependency>
  85. <groupId>log4j</groupId>
  86. <artifactId>log4j</artifactId><!--log4j日志start-->
  87. <version>${log4j}</version>
  88. </dependency>
  89. <dependency>
  90. <groupId>org.slf4j</groupId>
  91. <artifactId>slf4j-api</artifactId>
  92. <version>${slf4j.version}</version>
  93. </dependency>
  94. <dependency>
  95. <groupId>org.slf4j</groupId>
  96. <artifactId>slf4j-log4j12</artifactId><!--log4j日志end -->
  97. <version>${slf4j.version}</version>
  98. </dependency>
  99. <dependency>
  100. <groupId>org.mybatis</groupId>
  101. <artifactId>mybatis</artifactId><!--mybatis依赖-->
  102. <version>${mybatis.version}</version>
  103. </dependency>
  104. <dependency>
  105. <groupId>org.mybatis</groupId>
  106. <artifactId>mybatis-spring</artifactId><!--spring整合mybatis-->
  107. <version>1.3.0</version>
  108. </dependency>
  109. <dependency>
  110. <groupId>com.alibaba</groupId>
  111. <artifactId>druid</artifactId>
  112. <version>1.1.10</version>
  113. </dependency>
  114. </dependencies>
  115. <build>
  116. <finalName>ssm</finalName>
  117. <pluginManagement>
  118. <plugins>
  119. <!--java编译插件-->
  120. <plugin>
  121. <groupId>org.apache.maven.plugins</groupId>
  122. <artifactId>maven-compiler-plugin</artifactId>
  123. <version>3.2</version>
  124. <configuration>
  125. <source>1.8</source>
  126. <target>1.8</target>
  127. <encoding>UTF-8</encoding>
  128. </configuration>
  129. </plugin>
  130. </plugins>
  131. </pluginManagement>
  132. </build>
  133. </project>

创建java、resources目录
在这里插入图片描述

3.整合思路

先spring再springmvc最后mybatis。
先把spring搭建好后保证spring可以使用,后搭建springmvc保证springmvc可以使用后整合两者。同理mybatis。

4.整合spring

spring在三层模型中主要是业务层。

4.1 创建实体类Account

代码略

4.2 编写service层代码和service实现类

实现类代码

  1. public class AccountServiceImpl implements AccountService {
  2. @Override
  3. public List<Account> findAll() {
  4. System.out.println("业务层:查询所有的账户");
  5. return null;
  6. }
  7. }

4.3 配置

目的把service交给IOC进行管理

applicationContext.xml

  1. <!--把类交给IOC容器去管理 开启注解扫描-->
  2. <context:component-scan base-package="com.ltb.service"/>

并在service的实现类上添加@Service注解

4.4 测试spring

编写测试类,单元测试看是否可以调到实现类的方法

  1. public class TestSpring {
  2. @Test
  3. public void test(){
  4. //创建工厂,加载配置文件
  5. ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
  6. //获取service对象,调用方法
  7. AccountService bean = ac.getBean(AccountService.class);
  8. bean.findAll();
  9. }
  10. }

5.整合springmvc

5.1 编写web.xml

  1. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
  2. <web-app>
  3. <display-name>Archetype Created Web Application</display-name>
  4. <!--乱码过滤器-->
  5. <filter>
  6. <filter-name>encodingFilter</filter-name>
  7. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  8. <init-param>
  9. <param-name>encoding</param-name>
  10. <param-value>utf-8</param-value>
  11. </init-param>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>encodingFilter</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. <!--配置前端控制器-->
  18. <servlet>
  19. <servlet-name>dispatcherServlet</servlet-name>
  20. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  21. <!--加载springmvc.xml配置文件-->
  22. <init-param>
  23. <param-name>contextConfigLocation</param-name>
  24. <param-value>classpath:springmvc.xml</param-value>
  25. </init-param>
  26. <!--启动加载,正整数就行-->
  27. <load-on-startup>1</load-on-startup>
  28. </servlet>
  29. <!--前端控制拦截器,拦截以.do结尾的请求-->
  30. <servlet-mapping>
  31. <servlet-name>dispatcherServlet</servlet-name>
  32. <url-pattern>*.do</url-pattern>
  33. </servlet-mapping>
  34. </web-app>

5.2 编写springmvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  3. <!--开启注解扫面,扫描Controller-->
  4. <context:component-scan base-package="com.ltb.controller" />
  5. <!--视图解析器-->
  6. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  7. <property name="prefix" value="/pages/" /><!--前缀-->
  8. <property name="suffix" value=".jsp" /><!--后缀-->
  9. </bean>
  10. <!--异常处理器、文件上传解析器、各种拦截器、哪些资源不拦截等-->
  11. <!--mvc注解支持-->
  12. <mvc:annotation-driven />
  13. </beans>

5.3 编写controller层代码同时编写请求list.jsp和跳转suc.jsp

  1. @Controller
  2. @RequestMapping("/account")
  3. public class AccountController {
  4. @RequestMapping("/findAll.do")
  5. public ModelAndView findAll(){
  6. System.out.println("表现层:查询所有账户");
  7. ModelAndView modelAndView = new ModelAndView();
  8. modelAndView.setViewName("suc");//要跳转的jsp
  9. return modelAndView;
  10. }
  11. }
  12. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  13. <html>
  14. <head>
  15. <title>list.jsp</title>
  16. </head>
  17. <body>
  18. <h3>账户列表页面</h3>
  19. <a href="/account/findAll.do">查询所有</a>
  20. </body>
  21. </html>
  22. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  23. <html>
  24. <head>
  25. <title>suc.jsp</title>
  26. </head>
  27. <body>
  28. <h3>springmvc工作正常</h3>
  29. </body>
  30. </html>

注意跳转jsp的位置和部署tomcat时不要加项目别名

6.spring整合springmvc

在这里插入图片描述

  1. <!--配置监听器,目的是启动时加载spring配置文件,将sevice注入到controller-->
  2. <listener>
  3. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  4. </listener>
  5. <!--全局扫描路径,监听器默认会加载/WEB-INF目录下的配置文件-->
  6. <context-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:applicationContext.xml</param-value>
  9. </context-param>

修改controller层代码,看能否注入service并执行service代码

7. 整合Mybatis

7.1 编写mybatis的配置文件MybatisConfig.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. <environments default="mysql">
  6. <environment id="mysql">
  7. <transactionManager type="JDBC"/>
  8. <dataSource type="POOLED">
  9. <property name="driver" value="com.mysql.jdbc.Driver"/>
  10. <property name="url" value="jdbc:mysql:///mysql"/>
  11. <property name="username" value="root"/>
  12. <property name="password" value="root"/>
  13. </dataSource>
  14. </environment>
  15. </environments>
  16. <!--引入映射文件-->
  17. <mappers>
  18. <package name="com.ltb.dao"/>
  19. </mappers>
  20. </configuration>

7.2 编写dao层代码和测试类

  1. public interface AccountDao {
  2. @Select(value = " select * from account ")
  3. public List<Account> findAll();
  4. }
  5. public class TestMyBatis {
  6. @Test
  7. public void run1() throws IOException {
  8. //加载配置文件
  9. InputStream resourceAsStream = Resources.getResourceAsStream("MybatisConfig.xml");
  10. //构建工厂
  11. SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
  12. //创建session
  13. SqlSession sqlSession = factory.openSession();
  14. //获取代理对象
  15. AccountDao mapper = sqlSession.getMapper(AccountDao.class);
  16. //调用方法
  17. List<Account> all = mapper.findAll();
  18. for (Account account : all) {
  19. System.out.println(account);
  20. }
  21. //关闭资源
  22. sqlSession.close();
  23. resourceAsStream.close();
  24. }
  25. }

8. spring整合mybatis

思想就是将上面的MybatisConfig.xml里的内容整合到applicationContext.xml中

  1. <!--把类交给IOC容器去管理 开启注解扫描-->
  2. <context:component-scan base-package="com.litengbin.service"/>
  3. <!--配置数据库连接池-->
  4. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  5. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  6. <property name="url" value="jdbc:mysql:///mysql"/>
  7. <property name="username" value="root"/>
  8. <property name="password" value="root"/>
  9. </bean>
  10. <!--spring整合mybatis,SqlSessionFactoryBean创建工厂对象-->
  11. <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  12. <property name="dataSource" ref="dataSource"/>
  13. </bean>
  14. <!--配置扫描dao接口所在的包-->
  15. <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  16. <property name="sqlSessionFactory" ref="sessionFactory"/>
  17. <property name="basePackage" value="com.litengbin.dao"/>
  18. </bean>

之后修改controller、service层代码验证

9. 配置事务管理

在applicationContext.xml中添加事务的管理

  1. <!--配置声明式事务管理-->
  2. <!--平台事务管理器-->
  3. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  4. <property name="dataSource" ref="dataSource"/>
  5. </bean>
  6. <!--配置事务的通知-->
  7. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  8. <tx:attributes>
  9. <tx:method name="find*" read-only="true"/><!--以find开头的均认为是select,事务管理只打开只读就可以-->
  10. <tx:method name="*"/><!--其余的就打开事务,这里也可以配置隔离级别之类的-->
  11. </tx:attributes>
  12. </tx:advice>
  13. <!--配置事务的增强-->
  14. <aop:config>
  15. <!--aop:advisor表示增强自己写的service,execution(public * com.litengbin.service.impl.*ServiceImpl.*(..))表示增强*返回类型的impl包的ServiceImpl结尾的不定个数形参的方法-->
  16. <aop:advisor advice-ref="txAdvice" pointcut="execution(public * com.litengbin.service.impl.*ServiceImpl.*(..))"/>
  17. </aop:config>

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SSM框架整合

    1.创建maven项目,准备实体表 idea创建一个maven项目,选用骨架webapp。创建后边验证要用的数据库和实体表。 create database s

    相关 SSM框架整合

    最近接触了不少的项目,从SSM到SSH都接触到了,然而对于这几个项目的架构还是一知半解,我自己花费了一些时间,整理下,写了一个SSM的框架的demo,后期我会给出SSH的一个d

    相关 SSM框架整合

    1、Dao层: Mybatis的配置文件:SqlMapConfig.xml 不需要配置任何内容,需要有文件头。文件必须存在。 applicationContext-d

    相关 ssm框架整合

    整合思路 1、Dao层: Mybatis的配置文件:SqlMapConfig.xml 不需要配置任何内容,需要有文件头。文件必须存在。 application