如何搭建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>
AI 代码解读

当依赖加载完成后,需要做一件事,如下操作。确保编译后的项目存在这些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去做-->
AI 代码解读


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>
AI 代码解读


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>
AI 代码解读


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>
AI 代码解读


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"/>
AI 代码解读


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>
AI 代码解读

//代码效果参考: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) 完成图书的基本增,删,改,查操作。效果如下:

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
本文针对高校体育场管理系统的开发与实现进行详细介绍。随着经济快速发展,人们对手机软件需求增加,高校体育场管理系统应运而生。系统采用JAVA技术、Mysql数据库和SSM框架等成熟技术,通过分析功能需求、可行性及性能,设计出包含管理员、用户和学生角色的功能模块。系统实现用户注册登录、信息管理等功能,简化传统手工统计模式,提高管理效率,满足用户对信息获取的及时性与准确性需求。
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
86 17
基于ssm的台球厅管理系统,附源码+数据库+论文
本项目为新锐台球厅管理系统,支持管理员和会员两种角色。管理员可进行会员管理、台球桌管理、订单管理等;会员可查看台球桌、预约、购买商品等。技术框架基于Java,采用B/S架构,前端使用Vue+HTML+JavaScript+CSS+LayUI,后端使用SSM框架,数据库为MySQL。运行环境为Windows,JDK8+MySQL5.7+Tomcat8.5。提供演示视频及详细文档截图。
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
56 5
ssm026校园美食交流系统(文档+源码)_kaic
本文介绍了基于Java语言和MySQL数据库的校园美食交流系统的设计与实现。该系统采用B/S架构和SSM框架,旨在提高校园美食信息管理的效率与便捷性。主要内容包括:系统的开发背景、目的及内容;对Java技术、MySQL数据库、B/S结构和SSM框架的介绍;系统分析部分涵盖可行性分析、性能分析和功能需求分析;最后详细描述了系统各功能模块的具体实现,如登录、管理员功能(美食分类管理、用户管理等)和前台首页功能。通过此系统,管理员可以高效管理美食信息,用户也能方便地获取和分享美食资讯,从而提升校园美食交流的管理水平和用户体验。
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
94 19
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
113 17
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
67 10
ssm064农产品仓库管理系统系统(文档+源码)_kaic
农产品仓库管理系统基于现代经济快速发展和信息化技术的升级,采用SSM框架、Java语言及Mysql数据库开发。系统旨在帮助管理者高效处理大量数据信息,提升事务处理效率,实现数据管理的科学化与规范化。该系统涵盖物资基础数据管理、出入库订单管理等功能,界面简洁美观,符合用户操作习惯,并提供数据安全解决方案,确保信息的安全性和可靠性。通过自动化和集中处理,系统显著提高了仓库管理的效率和准确性。
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等