如何搭建SSM框架、图书商城系统

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。

前一段时间将Spring + SpringMVC + Mybatis 的笔记整理了出来【爆肝五万字】传送门 。大家如有需要可以看看,这篇文章介绍如何整合这三个框架,也就是所谓的SSM框架。当然,你也可以直接学SpringBoot框架,但是那个也是在这个基础上进行的封装,了解SSM,更有利于学习后续知识。

该项目源码已发布到GitHub:源码传送门
这里只展示如何整合SSM框架,只给出来几个配置文件的整合哦
在这里插入图片描述

1、新建一个maven项目

填写项目的基本信息

创建好的Maven项目

2、添加web骨架
提示: 添加webapp的方式有多种,我这里是其中一种方式。另外还有:1、可以在选择创建maven项目的时候,勾选webapp骨架。2、也可以手动创建一个webapp的包,然后手动修改相关配置。

我这里直接添加相关骨架,然后在弹出框选择web

添加骨架后的项目结构如下

3、修改pom文件
pom 中相关依赖,

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <junit.version>4.11</junit.version>
    <mysql.connector.java.version>6.0.6</mysql.connector.java.version>
    <c3p0.version>0.9.5.2</c3p0.version>
    <servlet.api.version>2.5</servlet.api.version>
    <jstl.version>1.2</jstl.version>
    <mybatis.version>3.5.2</mybatis.version>
    <mybatis.spring.version>2.0.2</mybatis.spring.version>
    <spring.webmvc.version>5.1.9.RELEASE</spring.webmvc.version>
    <spring.jdbc.version>5.1.9.RELEASE</spring.jdbc.version>
    <log4j.version>1.2.17</log4j.version>
</properties>

<!--导入依赖  Junit  数据库驱动  连接池  servlet  jsp  mybatis  mybatis-spring spring -->
<dependencies>
    <!--junit-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <!--数据库驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.connector.java.version}</version>
    </dependency>

    <!--数据库连接池-->
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>${c3p0.version}</version>
    </dependency>

    <!--Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>${servlet.api.version}</version>
    </dependency>

    <!--jsp-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
    </dependency>

    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>

    <!--mybatis-spring-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>${mybatis.spring.version}</version>
    </dependency>

    <!--spring-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.webmvc.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.jdbc.version}</version>
    </dependency>

    <!-- Log4j 配置 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

</dependencies>

<!--静态资源导出问题-->
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

当依赖加载完成后,需要做一件事,如下操作。确保编译后的项目存在这些jar包。如果不做这个操作,运行项目可能会报类找不到错误提示

4、整合SSM
4.1 项目结构

我这里只给出整合的配置文件,其它代码+数据库 已经上传到Github。如有需要、可自行下载

4.2 整合mybatis
database.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
mybatis-config.xml

<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--1、配置数据源 交给spring去做-->

<!--2、日志打印-->
<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

<!--3、批量设置别名,会自动的将该包下的所有类定义了别名,别名就是其自身且不区分大小-->
<typeAliases>
    <package name="com.zheng.pojo"/>
</typeAliases>

<!--4、将包内的映射器接口全部注册为映射器  交给spring去做-->


Spring整合 Mybatis

<?xml version="1.0" encoding="UTF8"?>

<!--1、关联数据库配置文件-->
<context:property-placeholder location="classpath:database.properties"></context:property-placeholder>

<!--2、连接池
    dbcp:半自动连接,不能自动连接
    c3p0:自动化操作,自动化的加载配置文件,并且可以自动设置到对象中
    druid:hikari
-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>

    <!--c3p0连接池的私有属性-->
    <property name="maxPoolSize" value="30"></property>
    <property name="minPoolSize" value="10"/>
    <!--关闭连接后不自动commit-->
    <property name="autoCommitOnClose" value="false"/>
    <!--获取连接超时时间-->
    <property name="checkoutTimeout" value="10000"/>
    <!--当获取连接失败重试次数-->
    <property name="acquireRetryAttempts" value="2"/>
</bean>

<!--3、sqlsessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!--Mybatis配置文件-->
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>

    <!--mapper.xml所在位置-->
    <property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--mapper接口所在的包-->
    <property name="basePackage" value="com.zheng.dao"/>
</bean>


4.3 整合springmvc
spring-mvc.xml

<?xml version="1.0" encoding="UTF8"?>

<!--1、注解驱动-->
<mvc:annotation-driven/>

<!--2、静态资源过滤-->
<mvc:default-servlet-handler/>

<!--3、自动扫描包(controller)-->
<context:component-scan base-package="com.zheng.controller"/>

<!--4、视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后缀-->
    <property name="suffix" value=".jsp"/>
</bean>


4.4 整合spring
spring-service.xml

这里使用注解的形式注入各个层的对象、直接扫描整个包

<?xml version="1.0" encoding="UTF8"?>



<!--3、声明事务配置-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!--注入数据源-->
    <property name="dataSource" ref="dataSource"/>
</bean>


4.5 汇总
applicationContext.xml

<?xml version="1.0" encoding="UTF8"?>

<import resource="classpath:spring-mybatis.xml"/>
<import resource="classpath:spring-mvc.xml"/>
<import resource="classpath:spring-service.xml"/>


4.6 web.xml
读取配置文件、加载配置文件的信息

<?xml version="1.0" encoding="UTF8"?>

<!--配置DispatchServlet;这个是springMVC的核心,请求分发器,前端控制器-->
<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <!--里边的路径是编写的配置文件-->
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>

    <!--启动级别-->
    <load-on-startup>1</load-on-startup>
</servlet>

<!--在springMVC中,/:代表匹配所有的请求,不包括jsp页面。/*:匹配所有的请求,包括jsp-->
<servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!--乱码过滤-->
<filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

//代码效果参考:http://www.mwgw.cn/sitemap/post.html
//代码效果参考:http://www.intpipe.com/sitemap/post.html
//代码效果参考:http://www.ningluan.com/sitemap/post.html
//代码效果参考:https://www.yopian.com/sitemap/post.html
//代码效果参考:http://www.92demo.com/sitemap/post.html


5、效果
配置Tomcat 的过程略。如有需要可以查看这篇文章:
IDEA 配置Tomcat

在SSM框架的基础上 前端使用BootStrap + jsp(或html) 完成图书的基本增,删,改,查操作。效果如下:

在这里插入图片描述
在这里插入图片描述

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
2月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
5月前
|
搜索推荐 JavaScript Java
计算机Java项目|基于SSM的个性化商铺系统
计算机Java项目|基于SSM的个性化商铺系统
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
|
3月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
5月前
|
Java 物联网 Maven
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
76 1
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
|
4月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
65 1
|
5月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
60 0
杨校老师之基于SSM开发的校园点餐配送系统
|
5月前
|
小程序 前端开发 测试技术
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|SSM酒店客房预定管理系统
计算机Java项目|SSM酒店客房预定管理系统