• 全栈开发实战 | SSM框架整合完整教程


    一个人最好的状态:梦想藏在心里,行动落于腿脚。

    目录

    1、前言

    2、基本概念

    2.1 MyBatis

    2.2 Spring

    2.3 SpringMVC

    3、开发环境搭建

     3.1 整合Spring框架

    3.2 整合SpringMVC框

    3.3 添加SpringMVC框架支持

    3.4 配置SpringMVC核心控制器

    3.5 测试SpringMVC框架

    4、部署Tomcat和相关环境

    5、整合MyBtis框架

    5.1 测试MyBatis框架


    1、前言

    前几篇我的几个系列文章分别介绍了MyBatis、Spring、SpringMVC框架的基本入门以及一些常用知识点,既然框架各有优点,那么我们是否可以将这几个框架进行整合?

    下面就开始手把手教你搭建SSM框架,在这之前我们先总结一下这三个框架。

    2、基本概念

    2.1 MyBatis

    MyBatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

    2.2 Spring

    Spring是一个开源的重量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低开发者的开发难度

    Spring提供的IOC和AOP应用,可以将组建的耦合度降到最低(即解耦),便于系统日后的维护和升级

    Spring为系统提供了一个整体的解决方案,开发者可以利用它自身提供的功能外,也可以与第三方框架和技术整合应用,可以自由选择利用哪种技术进行开发

    2.3 SpringMVC

    SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需中间层整合

    SpringMVC提供了基于MVC(模型—视图—控制器)架构和用于开发灵活和松耦合的web应用程序的组件

    3、开发环境搭建

    创建一个基于maven的web工程

    • 点击File,新建Project项目

     

    • 选中Maven,勾上Creater from archetype选项,按照图中数字顺序选中后点击Next按钮即可

     

    • 依次填写groupid和artifactid后点击next即可

     

    • 选中提前配置好的maven,点击next

     

    • 输入项目名称Spring,点击Finish即可

     

    • 这样就创建好了一个名称为SSM的maven  web项目,结构如下图:

    • 项目创建完成之后没有的java,resources,test包自己创建即可
    • 我们可以看到包创建好之后是灰色的,需要选中相应的文件夹右击Mark Directory as,选中相应的颜色即可

    • 现在项目的结构就变成了如下样子:

     3.1 整合Spring框架

    • 在pom.xml文件中导入所需要的的jar包

    1. <dependency>
    2. <groupId>junitgroupId>
    3. <artifactId>junitartifactId>
    4. <version>4.11version>
    5. <scope>testscope>
    6. dependency>
    7. <dependency>
    8. <groupId>org.springframeworkgroupId>
    9. <artifactId>spring-coreartifactId>
    10. <version>5.1.5.RELEASEversion>
    11.         dependency>
    12. <dependency>
    13. <groupId>org.springframeworkgroupId>
    14. <artifactId>spring-contextartifactId>
    15. <version>5.1.5.RELEASEversion>
    16. dependency>
    17. <dependency>
    18. <groupId>org.springframeworkgroupId>
    19. <artifactId>spring-testartifactId>
    20. <version>5.1.5.RELEASEversion>
    21. <scope>testscope>
    22. dependency>
    23. <dependency>
    24. <groupId>org.springframeworkgroupId>
    25. <artifactId>spring-aopartifactId>
    26. <version>5.1.5.RELEASEversion>
    27. dependency>
    28. <dependency>
    29. <groupId>aopalliancegroupId>
    30. <artifactId>aopallianceartifactId>
    31. <version>1.0version>
    32. dependency>
    33. <dependency>
    34. <groupId>org.aspectjgroupId>
    35. <artifactId>aspectjrtartifactId>
    36. <version>1.9.2version>
    37. dependency>
    38. <dependency>
    39. <groupId>org.aspectjgroupId>
    40. <artifactId>aspectjweaverartifactId>
    41. <version>1.9.2version>
    42. <scope>runtimescope>
    43. dependency>
    44. <dependency>
    45. <groupId>org.springframeworkgroupId>
    46. <artifactId>spring-jdbcartifactId>
    47. <version>5.1.5.RELEASEversion>
    48. dependency>
    49. <dependency>
    50. <groupId>org.springframeworkgroupId>
    51. <artifactId>spring-txartifactId>
    52. <version>5.1.5.RELEASEversion>
    53. dependency>
    54. <dependency>
    55. <groupId>org.projectlombokgroupId>
    56. <artifactId>lombokartifactId>
    57. <version>1.18.8version>
    58. dependency>

    3.2 整合SpringMVC框

    • 在pom.xml文件中导入所需要的的jar包

    1. <dependency>
    2. <groupId>org.springframeworkgroupId>
    3. <artifactId>spring-webartifactId>
    4. <version>5.1.5.RELEASEversion>
    5. dependency>
    6. <dependency>
    7. <groupId>org.springframeworkgroupId>
    8. <artifactId>spring-webmvcartifactId>
    9. <version>5.1.5.RELEASEversion>
    10. dependency>

    3.3 添加SpringMVC框架支持

    • 在项目名SpringMVC上右击选择Add framework support

     

    • 按照图中方框中的提示选中后点击ok按钮即可

     注意:如果我们在点击Add framework support中找不到Spring,那么有可能项目中已经存在了Spring文件,但不一定是完善的,我们只需要把它删除然后重新添加即可

    方法:点击File,选择Project Structure,选择Facets,就会看到有一个Spring,右击它,点删除就行啦,然后再回到上一个步骤重新Add framework support,Spring就会出现啦。

     添加SpringMVC支持后,我们会发现项目目录中多了两个文件,我又单独创建了一个views用来存放映射文件JSP等

    3.4 配置SpringMVC核心控制器

    1. <web-app version="3.0" 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
    4. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    5. <servlet>
    6. <servlet-name>springMVCservlet-name>
    7. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    8. <init-param>
    9. <param-name>contextConfigLocationparam-name>
    10. <param-value>/WEB-INF/dispatcher-servlet.xmlparam-value>
    11. init-param>
    12. <load-on-startup>1load-on-startup>
    13. <async-supported>trueasync-supported>
    14. servlet>
    15. <servlet-mapping>
    16. <servlet-name>springMVCservlet-name>
    17. <url-pattern>/url-pattern>
    18. servlet-mapping>
    19. <context-param>
    20. <param-name>contextConfigLocationparam-name>
    21. <param-value>/WEB-INF/applicationContext.xmlparam-value>
    22. context-param>
    23. <listener>
    24. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    25.     listener>
    26. web-app>
    • 在web.xml中配置SpringMVC的核心信息

    • 配置SpringMVC乱码处理过滤器

    1. <filter>
    2. <filter-name>CharacterEncodingFilterfilter-name>
    3. <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    4. <init-param>
    5. <param-name>encodingparam-name>
    6. <param-value>utf-8param-value>
    7. init-param>
    8. filter>
    9. <filter-mapping>
    10. <filter-name>CharacterEncodingFilterfilter-name>
    11. <url-pattern>/*url-pattern>
    12. filter-mapping>
    • 配置dispatcher-servlet.xml文件信息

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    3. xmlns:context="http://www.springframework.org/schema/context"
    4. xsi:schemaLocation="http://www.springframework.org/schema/mvc
    5. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    6. http://www.springframework.org/schema/beans
    7. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    8. http://www.springframework.org/schema/context
    9. http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    10. <mvc:default-servlet-handler/>
    11. <mvc:annotation-driven>mvc:annotation-driven>
    12. <context:component-scan base-package="com.cn.controller">context:component-scan>
    13. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    14. <property name="prefix" value="/WEB-INF/views/"/>
    15. <property name="suffix" value=".jsp"/>
    16. bean>
    17. beans>

    3.5 测试SpringMVC框架

    • 创建并编写HelloController类

    1. @Controller
    2. public class HelloController {
    3. /**
    4. * 这个注解用于:映射请求的资源路径(/hello)和当前方法(hello)的对应关系
    5.      * 当浏览器请求 /hello 路径时, 将会访问(执行)当前这个方法 
    6. */
    7.     @RequestMapping("/hello")
    8. public String hello() {
    9. System.out.println("hello springmvc...");
    10. return "home";
    11. }
    12. }
    • 在WEB-INF/views/目录下创建home.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>Titletitle>
    5. head>
    6. <body>
    7. <h1>hello springmvc~~~h1>
    8. body>
    9. html>

    4、部署Tomcat和相关环境

    • 在 Run 菜单项下找到 Edit Configurations 

     

    • 配置Tomcat环境

     

     

    • 选择好本地的Tomcat并修改好名称

     

    • 在Deployment页面下完成以下操作

     

    • 在弹出框中选中SSM:war exploded后点击OK

     

    • 启动Tomcat服务器,进行测试

     成功在浏览器页面上显示出了页面中的数据内容

    5、整合MyBtis框架

    在之前的文章中我写过一篇关于MyBatis的快速入门教程,可以参考以下链接:

    全栈开发实战 | MyBatis框架快速入门第一篇

    • 在pom.xml文件中导入所需要的的jar包

    1. <dependency>
    2. <groupId>org.mybatisgroupId>
    3. <artifactId>mybatisartifactId>
    4. <version>3.4.4version>
    5. dependency>
    6. <dependency>
    7. <groupId>org.mybatisgroupId>
    8. <artifactId>mybatis-springartifactId>
    9. <version>1.3.2version>
    10. dependency>
    11. <dependency>
    12. <groupId>mysqlgroupId>
    13. <artifactId>mysql-connector-javaartifactId>
    14. <version>8.0.16version>
    15.         dependency>
    • 在resources文件包下创建db.properties文件

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

    之前我们在MyBatis快速入门教程里是在mybatis-config.xml文件中配置MyBatis的核心信息,现在我们要做SSM框架整合,可以将MyBatis的配置交给Spring去处理

    • 配置applicationContext.xml文件信息

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    3. xmlns:context="http://www.springframework.org/schema/context"
    4. xsi:schemaLocation="http://www.springframework.org/schema/mvc
    5. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    6. http://www.springframework.org/schema/beans
    7. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    8. http://www.springframework.org/schema/context
    9. http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    10. <context:property-placeholder location="classpath:jdbc.properties">context:property-placeholder>
    11. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    12. <property name="driverClassName" value="${db.driverClassName}"/>
    13. <property name="url" value="${db.url}"/>
    14. <property name="username" value="${db.username}"/>
    15. <property name="password" value="${db.password}"/>
    16. bean>
    17. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    18. <property name="dataSource" ref="dataSource">property>
    19. bean>
    20. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    21. <property name="basePackage" value="com.cn"/>
    22.     bean>
    23. beans>

    5.1 测试MyBatis框架

    • 创建Student实体类,并使用lombok注解代替get、set、有参构造和无参构造等方法

    1. @Data
    2. @AllArgsConstructor
    3. @NoArgsConstructor
    4. public class Student  {
    5. private String id;
    6. private String name;
    7. private String birth;
    8.     private String sex;
    9. }
    • 创建StudentMapper接口类,并提供getStudentById方法

    1. package com.cn.dao;
    2. import com.cn.pojo.Student;
    3. public interface StudentMapper {
    4. Student getStudentById(String id);
    5. }
    • 创建StudentMapper.xml文件(实体类的映射文件)

    1. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="com.cn.dao.StudentMapper">
    4. <select id="getStudentById" parameterType="string" resultType="com.cn.pojo.Student">
    5. SELECT * from Student where id= #{id};
    6. select>
    7. mapper>
    • 创建并编写TestSSM类

    1. /**
    2. * 测试SSM开发环境
    3. */
    4. @Controller
    5. public class TestSSM {
    6. @Autowired
    7. StudentMapper studentMapper;
    8. @RequestMapping("/testSSM")
    9. public void testSSM(){
    10. Student student = studentMapper.getStudentById("01");
    11. System.out.println(student);
    12. }
    13. }
    • 输出结果

     

    我们看到报异常了,大概意思就是找不到mapper的映射文件,也就是说JAVA在编译的时候把  mapper.xml  文件给漏掉了,解决方案就是在pom.xml文件中添加如下代码即可:

    1. <build>
    2. <resources>
    3. <resource>
    4. <directory>src/main/javadirectory>
    5. <includes>
    6. <include>**/*.propertiesinclude>
    7. <include>**/*.xmlinclude>
    8. includes>
    9. <filtering>truefiltering>
    10. resource>
    11. resources>
    12. build>
    • 再次访问,输出结果

    到这里这个简单的ssm框架就算搭建完成了,看起来过程很长,但实际操作起来应该是没有太大难度,细心一点就可以了

    这一篇是在之前文章的基础上做了一个框架之间的整合,方便我们以后开发,大家对之前的文章感兴趣可以点击以下链接:

    全栈开发实战 | MyBatis框架快速入门第一篇

    全栈开发实战 | MyBatis框架快速入门第二篇

    全栈开发实战 | Spring框架快速入门第一篇

    全栈开发实战 | Spring框架快速入门第二篇

    全栈开发实战 | Spring框架快速入门第三篇

    全栈开发实战 | SpringMVC框架快速入门第一篇

    全栈开发实战 | SpringMVC框架快速入门第二篇

    全栈开发实战 | SpringMVC框架快速入门第三篇

  • 相关阅读:
    JavaScript脚本操作CSS
    Rust机器学习之Plotters
    【车道线检测】车道线检测算法汇总
    Jenkins 权限管理
    外汇天眼:虚假宣传 FCA发出最新警告 远离该平台!
    Javaweb-学习路线
    1. Vue项目中element-ui版本进行升级
    Steam中如何设置HTTP服务器防封
    【转载】LLM-Native 产品的变与不变
    2款Notepad++平替工具(实用、跨平台的文本编辑器)
  • 原文地址:https://blog.csdn.net/vx1271487114/article/details/125833185