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

目录

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包

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--Spring 框架基本的核心工具类--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.5.RELEASE</version></dependency><!--Junit等测试框架的简单封装--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.5.RELEASE</version><scope>test</scope></dependency><!--Aop切面--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.9.2</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.2</version><scope>runtime</scope></dependency><!--Spriing jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.5.RELEASE</version></dependency><!--事务--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency>

3.2 整合SpringMVC框

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

       <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.5.RELEASE</version></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核心控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- 注册springmvc框架核心控制器 --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!--配置dispatcher.xml作为mvc的配置文件--><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcher-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--把applicationContext.xml加入到配置文件中--><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>
  • 在web.xml中配置SpringMVC的核心信息

  • 配置SpringMVC乱码处理过滤器

<!-- 解决POST提交中文乱码问题 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><!-- 设置编码格式 --><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
  • 配置dispatcher-servlet.xml文件信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd"><!--此文件负责整个mvc中的配置--><!-- 1.配置前端控制器放行静态资源(html/css/js等,否则静态资源将无法访问) --><mvc:default-servlet-handler/><!-- 2.配置注解驱动,用于识别注解(比如@Controller) --><mvc:annotation-driven></mvc:annotation-driven><!-- 3.配置需要扫描的包:spring自动去扫描 base-package 下的类,如果扫描到的类上有 @Controller、@Service、@Component等注解,将会自动将类注册为bean--><context:component-scan base-package="com.cn.controller"></context:component-scan><!-- 4.配置内部资源视图解析器prefix:配置路径前缀suffix:配置文件后缀--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/></bean>
</beans>

3.5 测试SpringMVC框架

  • 创建并编写HelloController类

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>hello springmvc~~~</h1>
</body>
</html>

4、部署Tomcat和相关环境

  • 在 Run 菜单项下找到 Edit Configurations

  • 配置Tomcat环境

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

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

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

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

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

5、整合MyBtis框架

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

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

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

<!-- 整合MyBatis框架 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.4</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency><!-- MySql驱动  --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
  • 在resources文件包下创建db.properties文件

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

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

  • 配置applicationContext.xml文件信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 1.加载jdbc.properties文件的位置 --><context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder><!--2.配置数据库连接 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${db.driverClassName}"/><property name="url" value="${db.url}"/><property name="username" value="${db.username}"/><property name="password" value="${db.password}"/></bean><!-- 3.整合spring和mybatis框架将SqlSession等对象的创建交给Spring容器id值(sqlSessionFactory)是固定值--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 3.2.配置连接池(数据源) ref指向连接池bean对象的id值 --><property name="dataSource" ref="dataSource"></property></bean><!--4.Mapper扫描,自动引入mapper类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 扫描所有XxxMapper接口,将接口实例的创建交给spring容器 --><property name="basePackage" value="com.cn"/></bean>
</beans>

5.1 测试MyBatis框架

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

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student  {private String id;private String name;private String birth;private String sex;
}
  • 创建StudentMapper接口类,并提供getStudentById方法

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

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cn.dao.StudentMapper"><!--根据id查找学生信息--><select id="getStudentById" parameterType="string" resultType="com.cn.pojo.Student">SELECT * from Student where id= #{id};</select>
</mapper>
  • 创建并编写TestSSM类

/*** 测试SSM开发环境*/
@Controller
public class TestSSM {@AutowiredStudentMapper studentMapper;@RequestMapping("/testSSM")public void testSSM(){Student student = studentMapper.getStudentById("01");System.out.println(student);}
}
  • 输出结果

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

<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
  • 再次访问,输出结果

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

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

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

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

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

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

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

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

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

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

全栈开发实战 | SSM框架整合完整教程相关推荐

  1. 52abp框架asp.net core Angular全栈开发实战视频课程

    课程标题 52abp框架asp.net core & Angular全栈开发实战视频课程 课程简介 从零开始学 52ABP企业开发框架,企业项目是如何开发和技术选型,代码如何管理,团队协同开发 ...

  2. 读书笔记《Spring Boot+Vue全栈开发实战》(下)

    本书将带你全面了解Spring Boot基础与实践,带领读者一步步进入 Spring Boot 的世界. 前言 第九章 Spring Boot缓存 第十章 Spring Boot安全管理 第十一章 S ...

  3. ehcache springboot_阿里内部进阶学习SpringBoot+Vue全栈开发实战文档

    前言 Spring 作为一个轻量级的容器,在JavaEE开发中得到了广泛的应用,但是Spring 的配置烦琐臃肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了使开发者能 ...

  4. 《Spring Boot+Vue全栈开发实战》读书笔记

    写在前面 嗯,回家处理一些事,所以离职了,之前的公司用开源技术封装了一套自己的低代码平台,所以之前学的spring Boot之类的东西都忘了很多,蹭回家的闲暇时间复习下. 笔记整体以 Spring B ...

  5. 《SpringBoot+vue全栈开发实战项目》笔记

    前言 Spring 作为一个轻量级的容器,在JavaEE开发中得到了广泛的应用,但是Spring 的配置繁琐臃肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了使开发者能 ...

  6. SpringBoot+vue全栈开发实战笔记太香了

    Spring 作为一个轻量级的容器,在JavaEE开发中得到了广泛的应用,但是Spring 的配置繁琐臃肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了使开发者能够快速 ...

  7. 【哈士奇赠书活动 - 18期】-〖Flask Web全栈开发实战〗

    文章目录 ⭐️ 赠书活动 - <Flask Web全栈开发实战> ⭐️ 编辑推荐 ⭐️ 内容提要 ⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书活动 - <Flask Web全栈开发实战& ...

  8. Spring Boot+Vue全栈开发实战——花了一个礼拜读懂了这本书

    很幸运能够阅读王松老师的<Spring Boot+Vue全栈开发实战>这本书!之前也看过Spring Boot与Vue的相关知识,自己也会使用了Spring Boot+Vue进行开发项目. ...

  9. ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用

    <ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用>是一本旨在引领我们进入全栈开发世界的综合指南.通过结合强大的ChatGPT技术和全栈开发的实践,我们将 ...

最新文章

  1. 新的ipad,用xcode编译报错 dyld_shared_cache_extract_dylibs
  2. 傅立叶变换物理意义解析进阶
  3. 201521123052《Java程序设计》第7周学习总结
  4. JDK9的新特性:String压缩和字符编码
  5. JavaScript 正则表达式相关理解
  6. SP1557 GSS2 - Can you answer these queries II
  7. 拼多多:扶贫项目正连续遭受网络舆情涉黑团伙攻击
  8. 用 Nginx 禁止国外 IP 访问我的网站....
  9. 2020年,5 种 将死的编程语言!
  10. Mac笔记本查看端口
  11. Qt总结之十九:Qt中控件new之后需不需要delete的问题
  12. 查找某组织下子库存与物料信息
  13. Mybatis之代码自动生成工具
  14. linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
  15. 生物信息学研究生课程-1
  16. 基于 IPO 经济理论模型对目前 ICO 的理论研究和分析
  17. 自有服务器网站备案,网站放自己服务器备案
  18. 使用DW设置网页背景图
  19. 华为麦芒6支持鸿蒙吗,华为麦芒6支持电信吗_华为麦芒6支持电信卡吗-太平洋IT百科...
  20. 警惕!Python 中少为人知的 10 个安全陷阱!

热门文章

  1. Web应用程序设计十个建议
  2. 阿里规范-为什么不允许魔法值(即未经定义的常量)出现在代码中?
  3. 时间序列分析ARMA模型原理及Python statsmodels实践(上)
  4. Android中利用手机抓包的方法,经典篇
  5. 记一次 Centos7 yum 安装、配置 PgAdmin4
  6. Linux网络管理OSI和TCP/IP
  7. HTML5 + CSS3
  8. 再谈数字化转型的基本认识、重点和策略
  9. 微信公众号开发相关功能
  10. simulink风机光伏并网IEEE9节点系统一次调频,虚拟惯性控制,下垂控制,光伏变化光照强度,phasor模型。