SSM 搭建精美实用的管理系统
课程介绍
SSM 框架即 SpringMVC+Spring+Mybatis,相信各位朋友在投递简历时已直观感受到它的重要性,JavaWeb 相关工作的招聘要求中基本都包括了这三项技术能力。
由于其轻量级、易用性等特点,大多公司都选用了 SSM 框架。本达人课将以 SSM 框架作为课程主题,通过实战项目带大家全面了解 SSM 框架及相关技术,并切实应用到实际的开发工作中。课程的最后增加了优化提升的知识技能,比如负载均衡、集群部署以及缓存模块的整合,通过学习,不单单学会使用,还可灵活应用于性能优化提升的实战项目中。
无论您的技术功底如何,即便您之前对 JavaWeb 开发一知半解,通过本课程的学习,都可以完成对 SSM 框架的全面深入学习,真正获得实际开发能力。课程最后的优化教程也将进一步打通您的“任督二脉”,对网站的性能优化不再迷茫!
通过本课程,您将学习到以下内容:
- Spring+SpringMVC+MyBatis 框架的整合及运用;
- MySQL 8 数据库的基本使用方法;
- Maven 的配置及使用;
- Tomcat8 的配置及使用;
- Druid 数据库连接池;
- AJAX 异步技术;
- AdminLTE3、Bootstrap4、SweetAlert、JqGrid、JQuery 等前端框架组件及控件的使用;
- 多图上传技术;
- 大文件上传与文件的断点续传;
- 文件导入导出功能;
- Linux 系统部署及发布项目;
- Redis 缓存数据库的配置及使用方法;
- 前后端分离;
- Nginx 的配置及使用;
- Tomcat 集群的搭建及负载均衡;
- 使用 Nginx 实现动静分离部署;
- JavaWeb 性能优化的基本技巧。
课程共包含四大部分:
第一部分(第01-04课),基础篇,讲解前期准备工作及基础环境搭建,包括 Maven 使用、MySQL 的安装和使用、SpringMVC+Spring+Mybatis 框架的整合,Tomcat 的安装和使用、项目部署。
第二部分(第05-15课),实战篇 ,主要讲解系统设计及项目主要功能的实现。首先对系统整体设计、主要功能点、后台所需功能和页面布局做基本介绍,之后讲解如何做技术选型及插件选择,接着便开始功能的具体实现,包括登录功能、分页功能、富文本编辑器整合、图片上传及回显、页面交互优化,及项目打包部署与发布,最后回顾总结整个开发过程,包括知识点及开发过程中可能遇到的问题总结等。
第三部分(第16-20课),优化篇,内容包括 DAO 层优化、MySQL 优化、缓存整合、测试模块的增加、日志模块的整合及代码整洁的重要性。
第四部分(第21-23课),提升篇,主要包括 Nginx 的配置和使用、负载均衡、反向代理、Tomcat 集群部署、使用 Nginx动静分离部署等内容。
考虑到让大家更易上手学习,每篇课程的实战内容都提供了对应的源码,大家可以按课程提示下载练习。
作者介绍
十三,现就职于某网络科技公司任职高级 Java 开发工程师,CSDN 博客作者,13blog.site 站长,在 GitHub 维护参与多个开源项目,擅长 Java 后端开发、Linux 运维及项目管理工作。
课程内容
导读:自己动手实现 JavaWeb 后台管理系统
课程背景
让我们从某招聘网站上发布的数个 Java 工程师招聘信息来开始本达人课。
Java 实习生[3k-5k]
岗位要求:
- 热爱技术并有钻研精神,Java 基础扎实,熟悉Spring、SpringMVC、MyBatis、MySQL、Linux;
- 熟悉 JavaScript,有 JavaScript 框架使用经验优先;
- 具备良好的沟通能力、抗压能力和团队合作精神。
Java 研发工程师[6k-12k]
岗位职责:
- 熟练 Java 语言基础,熟悉 J2EE 体系架构,具有 JSP、JavaScript、jQuery、BootStrap、Servlet、Spring、MyBatis、XML 等开发经验;
- 熟练 Oracle、MySQL 等数据库设计与开发,并熟练掌握 SQL;
- 熟悉使用 Tomcat、Eclipse、IntelliJ、Jetty 等应用服务器软件及开发工具;
- 根据项目分配,快速完成开发任务。
Java 开发工程师[10k-15k]
岗位要求:
- 计算机相关专业本科毕业,2年以上 Java 开发经验;
- 熟练掌握 Spring、SpringMVC、Mybatis 主流开发框架;
- 精通一种以上关系数据库,如 MySQL;
- 熟悉分布式缓存,如 Redis。
这里,暂且不谈 Spring 的辉煌历史,也不过多谈论 ORM 框架给广大开发人员带来的便捷,我们着眼于现实。通过上面几则招聘信息,相信大家应该都能从中直观的感受到,不管你是初学者,或者是刚入行的实习生,亦或是已经有了几年工作经验的开发者,都不能忽视这样一个事实:
SpringMVC+Spring+Mybatis 这套技术栈是绝大部分公司明确要求掌握的技术,而 SpringMVC+Spring+Mybatis 的组合搭配已经渐渐成为 JavaWeb 开发者必备的技能,虽然不是全部,但目前的趋势即是如此,掌握 SSM 技能栈刻不容缓。
前几年工作中,我一直使用 SpringMVC+Spring+Mybatis 的组合进行开发,平时也会対其做一些研究和体验。在这个过程中发现,网上关于 SpringMVC+Spring+Mybatis 组合的介绍文章和教程虽然很多,但很多难以满足学习者的需要——要么只有简单的介绍没有详细教程,要么有较为详细的教程却没有源码,要么有源码但源码不全,很难上手使用,还有的提供了详细的源码但却没有与之对应的界面和 Demo,为学习者提供实际的操作体验。
这些情况对于有经验的开发者来说并不是大问题,但对于初学者来说却如入冰窟,而对于一个个刚入门的初学者们来说,更如同一面厚实的砖墙堵在了学习的道路上。
于是,自2017年年初起,我开始在网络上连载了 SpringMVC+Spring+Mybatis 组合的系列文章,源码也开放在 GitHub 和 Gitee 开源网站上,并且每一个教程都有对应的演示网站供读者体验和学习,这种教程+源码+实际体验的模式受到许多网友的喜欢和关注。
2018年年中,与 GitChat 达人课策划编辑达成协议将这套教学系列文章重新整理和优化,以达人课的形式呈现给各位读者。该课对整体内容进行了更为合理的划分,同时,增加了针对初学者的详细教程。不仅如此,对于有经验的朋友,在教程后半部分增添了优化提升课程,让您更为直观、真实地体验网站的优化过程,对系统优化中集群部署及分布式开发不再迷茫!同时,也更新了项目的视觉效果、优化了网站的交互体验,在原来的基础上更贴近于企业网站,让你切身体会如何使用 SpringMVC+Spring+Mybatis 开发并且可以真实应用到实际的开发工作中。
十三温馨提示:文中有部分 Gif 图片,可能因为文章格式问题导致有些模糊,放大即可,都是高清无码版本,学习起来更舒适!
课程目的
花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似。以下是这次实战项目的 Demo 演示。
登录页:
富文本编辑页:
图片上传:
退出登录:
课程目的也很简单,希望通过此课程,学员可以自己动手实现一个精美且实用的 JavaWeb后台管理系统。
为了达成这一目的,我对课程做了如下规划:
- 课程开始,为针对于初学者的详细教程,介绍SpringMVC+Spring+Mybatis的基础整合及如何进行快速开发;
- 接着,开启后台管理系统的设计及开发过程,进行实战演练;
- 最后,优化提升的技巧和实战分享,让你学会如何在企业开发中有一个良好的开发习惯以及如何对系统进行优化升级。
通过本课程,不仅仅让你学会开发,也会让你学会网站优化,进一步提升技术能力和技术积累!
学员定位
该达人课适合以下人群阅读:
- 从事 Java 相关领域的开发或者有一定 JavaWeb 基础的人员;
- 需要 SSM 源码练习的人员;
- 传统开发领域,急迫想打破原有开发模式的开发人员;
- 对系统优化缺乏实战经验的开发人员。
在学习本课程之前,需要了解 Java 开发及 JavaWeb 相关知识等基础技能。
课程介绍
开发环境:
- Windows/Linux
- IntelliJ IDEA
- JDK 1.8
- MySQL 8
- Tomcat
收获
通过本课程,您将学习到以下内容:
- Spring+SpringMVC+MyBatis 框架的整合及运用;
- MySQL8 数据库的基本使用方法;
- Maven 的配置及使用;
- Tomcat 8 的配置及使用;
- Druid 数据库连接池;
- AJAX 异步技术;
- AdminLTE3、Bootstrap 4、SweetAlert、JqGrid、JQuery 等前端框架组件及控件的使用;
- 多图上传技术;
- 大文件上传与文件的断点续传;
- 文件导入导出功能;
- Linux 系统部署及发布项目;
- Redis 缓存数据库的配置及使用方法;
- 前后端分离;
- Nginx 的配置及使用;
- Tomcat 集群的搭建及负载均衡;
- 使用 Nginx 实现动静分离部署;
- JavaWeb 性能优化的基本技巧。
演示站点
点击这里查看:gitchat-ssm
第01课:Spring MVC+ Spring + Mybatis “三大框架”介绍
为什么要使用框架?
对于绝大部分 JavaWeb 开发者来说,开发的第一个项目应该都是以 JSP 或者 JSP+Servlet 形式完成的项目,之后陆陆续续、大大小小的项目应该也是以此为基础进行开发,当你看到你一个个完美的作品竣工完结之时,心满意足之余你可能会有这样一种疑惑,明明使用 JSP+Servlet 技术就可以完成的项目为什么要使用各种框架?
首先,这些项目只是学习过程中的练习项目,其次,这些项目是个人项目并不是企业应用,学习 JavaWeb 开发的目的是企业级应用的开发,闭门造车的思维模式不可取。一个中小型项目全部使用 JSP+Servlet 进行开发和维护,其成本就会很高,更不用说大型项目了,那简直就是一个灾难,开发成本、迭代成本、维护成本将会更高。真实的企业应用开发有几个比较重要的关注点分别是:代码复用、标准化、可维护性、开发成本,JSP+Servlet的封装和抽象程度与框架相比起来就毫无优势可言了。
代码复用:框架的封装和抽象程度较高,企业开发中的很多功能都做了相应的实现,例如 JDBC、请求分发、对象管理、事务管理等底层代码,如果不使用框架而选择自己开发的话,代码量着实不小,框架的使用为开发人员减少了大部分的编码工作,提升开发效率。
标准化:对于上述的功能,如果没有使用框架,每个企业应该肯定会有自己的封装。各企业封装的思路不同及业务场景的不同也会导致或大或小的差异性,这将给员工带来比较大的学习成本。从一家公司换到另外一家公司,需要重新学习使用公司内部的框架,这种做法往往会加大学习成本。而使用框架,上述的问题将不复存在,大部分公司都在用这套框架和这套框架下的开发模式,最终产生一个大家都接受的标准化流程,框架实际上也是一种规范,可以让每位开发人员保持类似的开发风格和开发方式。
可维护性:代码复用程度高、开发流程的规范化和标准化带来的就是开发效率的提升;框架的引入也使得代码分层更加清晰,底层技术细节的封装,使得开发人员的关注点更加倾向于具体业务上;这些原因会使得企业应用拥有更优秀的可维护性。
其实,说得简单点,当优秀的框架逐渐成为趋势、成为标准之时,开发者的学习成本降低了,同时也减少了开发者的重复编码工作,简化开发,加快开发进度,降低维护难度。
“三大框架”
谈到框架之时,我相信你的脑海中会迅速出现一个词语——“三大框架”,每个 JavaWeb 学习者对该词肯定都印象深刻。开始接触 Java 开发框架时,这个词语也就随之深刻在脑海中,因为周围的开发者乃至自己都会时常提到它。
“三大框架”已成为大家接受的叫法,在进入公司后,随着开发经验的增长,“三大框架”被提到得越来越少了。伴随着可使用的优秀框架越来越多,已经不止是“三大框架”了。“三大框架”的每一种技术,虽然是独立的技术,用于企业级应用开发时又是紧密结合在一起,并不孤立,“三大框架”主要用来开发 Web 应用,分别负责 MVC 开发模式下的不同模块功能。
这个词语所代表的含义也不是固定的,我初学 JavaWeb 开发时,“三大框架”代表的是 SSH(即 Spring、Struts2、Hibernate),而在今天,“三大框架”已经逐渐过渡成为 SSM(即 Spring、SpringMVC、MyBatis),本课程选择的技术即为 Spring+SpringMVC+MyBatis。
状态火热的 SSM 技术栈
我们可以登录几大招聘网招,看看企业 JavaWeb 相关岗位的招聘文案,通过招聘信息中的要求得出以下结论:
SSM 这套技术栈是绝大部分公司明确要求掌握的技术,而 SSM 的组合搭配已经渐渐成为 JavaWeb 开发者必备的技能,虽然不是全部,但仍是目前的主要趋势,掌握 SSM 技能栈刻不容缓。
由此可以看出 SpringMVC+Spring+Mybatis 技术栈有着很高的受欢迎程度!那么,SpringMVC+Spring+Mybatis 到底有多么火热呢?我找出了一些数据给大家展示一下。
此图来自于百度指数,我在2018年6月14日查询了 SSM 关键词的数据,从图中可知,自百度指数有数据统计以来,SpringMVC+Spring+Mybatis 的搜索指数一直很高,自2011年至2018年也一直呈现连年稳定增长的趋势,近四年的搜索指数也一直保持在一个极高的水平上。
十三也找了其他几组数据进行对比:
以上两张图片同样来自于百度指数,分别为近几年比较火热的技术和话题:大数据、Docker 技术,这两个词语的火热程度应该不用我多说,唯有炙手可热来描述了。三张图片结合观察,同大数据和 Docker 相比起来,SSM 也丝毫不落下风!十分稳定的保持在一个极高的水准之上。
一直增长、搜索指数数值极高、且极其稳定,这些状态加在一起,如果要找一个合适的词语来形容的话,那就只能是恐怖了!一时风头无两的 SSM 技术栈! 我近两年也一直在做关于 Spring+SpringMVC+MyBatis 的技术文章分享,因此本达人课选择的主要技术栈仍为 Spring+SpringMVC+MyBatis,下面将分别对其进行介绍。
Spring
Spring 是一个轻量级的企业级应用开发框架,于2004年由 Rod Johnson 发布了1.0 版本,经过多年的更新迭代,已经逐渐成为 Java 开源世界的第一框架,Spring 框架号称 Java EE 应用的一站式解决方案,与各个优秀的 MVC 框架如 SpringMVC、Struts2、JSF 等可以无缝整合,与各个 ORM 框架如 Hibernate、MyBatis、JPA 等也可以无缝衔接,其他各种技术也因为 Spring 的存在而被很容易地整合进项目开发之中,如 Redis 整合、Log4J 整合、ElasticSearch 整合、RabbitMQ 整合、Quartz 整合、Thymeleaf 整合等等,只要你开发中需要使用到的技术,Spring 都提供了极好的封装和整合体验,这也是为何 Spring 生命力如此强大的原因,暂时还没有能够替代 Spring 的框架出现。
Spring 框架提供约20个模块,如下图:
Spring 框架并不强制应用完全依赖于 Spring,开发者可自由选择需要的模块。
总结起来,Spring 框架有如下优点:
- Spring 的 IOC 容器将对象之间的依赖关系交由 Spring 控制,提高了组件之间的解耦,简化 Java 开发;
- 面向切面编程,Spring AOP 是面向对象编程(OOP)的一种补充,通过这种方式将系统中的一些通用任务提取出来进行单独处理,比如事务处理、日志模块、权限控制、性能监控等,避免大量的代码重复,使得代码更加简洁,复用性更强,也帮助开发人员更加关注业务逻辑;
- 非侵入式,代码的污染极低;
- 无与伦比的兼容性,与其他优秀的第三方框架无缝整合;
- Spring 框架的源码是无与伦比的 Java 代码盛宴;
- 高度的开放性;
- 开源社区十分活跃,文档齐全,学习成本不高。
SpringMVC
SpringMVC 是 Spring 框架体系中的全功能 MVC 模块,在前面 Spring 结构图中可以看到这一关系,其中的 Web MVC 即 SpringMVC。SpringMVC 是基于 Java 语言实现 MVC 设计模式的请求驱动类型的轻量级 Web 框架,目的是将 Web 开发模块化及代码简化。其提供了 DispatcherServlet 前端控制器分派请求,同时提供灵活的配置处理程序映射、视图解析,并支持文件上传,目前已经是众多 MVC 框架中的佼佼者。
下图为 SpringMVC 框架的工作流程图及注释:
SpringMVC 框架的优点如下:
- Spring 和 SpringMVC 无需复杂的操作即可整合,天生契合,灵活度高,非侵入性;
- 配置简单,学习成本低;
- 设计合理,各模块分工明确,功能强大;
- 非常容易与第三方视图技术集成整合;
- 能够进行 Web 层的单元测试;
- 支持灵活的 URL 到页面控制器的映射;
- 灵活且强大的数据验证、格式化和数据绑定机制;
- 开源社区十分活跃,文档齐全。
MyBatis
MyBatis 的前身是 Apache 社区的一个开源项目 iBatis,于2010年更名为 MyBatis。MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,使得开发人员更加关注 SQL 本身和业务逻辑,不用再去花费时间关注整个复杂的 JDBC 操作过程。
以下为 MyBatis 的结构图:
MyBatis 的优点如下:
- 封装了 JDBC 大部分操作,减少开发人员工作量;
- 相比一些自动化的 ORM 框架,“半自动化”使得开发人员可以自由的编写 SQL 语句,灵活度更高;
- Java 代码与 SQL 语句分离,降低维护难度;
- 自动映射结果集,减少重复的编码工作;
- 开源社区十分活跃,文档齐全,学习成本不高。
总结
由于篇幅有限,本文只简单介绍了 SSM 技术栈。本达人课的侧重点在实战开发上,因此,后续文章将专注于实战教程部分。本达课保证文章的篇幅充足、过程详细,让你不虚此行,一定会有收获。
另外,与 SSH 技术栈的比较不在本文的讨论范围内,我认为这种框架之间的对比对于学习者来说也只是看个热闹,只有真正的使用过才能懂得其中的区别。同时,我也认为技术之间没有高低优劣之分,只有适不适合自己,因此就不再花费篇幅去做对比了,有兴趣的朋友可以去实际体验一下再做对比,切不可眼高手低。
第02课:前期准备工作及基础环境搭建
第03课:三大框架的整合
第04课:Tomcat 8 安装部署及功能改造
第05课:产品设计之搭建精美实用的后台管理系统
第06课:前端选型 AdminLTE3
第07课:登录模块的系统设计和实现
第08课:使用 JqGrid 插件实现分页功能
第09课:弹框组件整合——完善添加和修改功能
第10课:图片管理模块
第11课:多图上传与大文件分片上传、断点续传
第12课:文件导入导出功能
第13课:富文本信息管理模块
第14课:SweetAlert 插件整合及搜索功能实现
第15课:项目发布——Linux 命令及发布流程
第16课:项目优化篇之日志输出
第17课:项目优化之单元测试
第18课:项目优化之数据库连接池
第19课:项目优化之 Druid 整合
第20课:项目优化之缓存整合
第21课:网站架构演进及 Nginx 介绍
第22课:Nginx + Tomcat 集群搭建
第23课:Nginx 动静分离
阅读全文: http://gitbook.cn/gitchat/column/5b4dae389bcda53d07056bc9
SSM 搭建精美实用的管理系统的更多相关文章
- SSM整合案例:图书管理系统
目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...
- 精美实用的jQuery插件精选
jQuery的确是一款相当强大的Javascript框架,同时jQuery的插件就多入牛毛,如果你善于收集,那么你在写前端页面的时候肯定会更加方便.本文精选了一些精美实用的jQuery插件供大家参考. ...
- Angularjs,WebAPI 搭建一个简易权限管理系统
Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一) 1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...
- idea+maven+ssm搭建boot_crm项目遇到的问题
使用idea+maven+ssm搭建一个boot_crm项目,遇到的问题如下: 1.环境搭建好了,相关配置文件都配置好了,也部署到了tomcat,但是无法启动首页. 通过百度,google找到了,原因 ...
- SSM搭建Spring单元测试环境
原文链接:https://jingyan.baidu.com/article/93f9803f5a97a4e0e46f55c8.html SSM搭建Spring单元测试环境
- SSM搭建
SSM搭建 SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架.. Sprin ...
- 搭建Nexus Repository包管理系统
搭建Nexus Repository包管理系统 下载安装程序 下载Nexus Repository最新版本 配置说明 将下载后的文件传输到服务器上 #修改配置文件 vi /etc/security/l ...
- 课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统
课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架: ...
- SSM搭建一个后台管理系统
看一下效果图: 登陆界面: 图片上传页面: 我也把项目放到服务器上了,可以直接查看项目内容: http://codingcoge.cn/ssm-demo/login.html 1 我也放到github ...
随机推荐
- hadoop 核心概念及入门
Hadoop Hadoop背景 什么是HADOOP HADOOP是apache旗下的一套开源软件平台HADOOP提供利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理,HADOOP的核 ...
- 【Spring】30、Spring,SpringMVC用法汇总
SpringMVC的工作原理图: springMVC中的几个组件: 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU. 处理器映射器(HandlerMappin ...
- 【github&&git】1、github中的watch、star、fork的作用
[转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...
- Matlab 根号的输入
二次根号: sqrt(a)或a^0.5 三次根号: x^(1/3)或者x.^(1/3) 根据x的数据结构类型 矩阵.数组需要.^
- Nginx负载均衡配置调优
worker_processes ; error_log logs/error.log crit; #日志位置和日志级别 pid logs/nginx.pid; worker_rlimit_nofil ...
- php curl中x-www-form-urlencoded与multipart/form-data 方式 Post 提交数据详解
multipart/form-data 方式 post的curl库,模拟post提交的时候,默认的方式 multipart/form-data ,这个算是post提交的几个基础的实现方式. $post ...
- 【读书笔记】iOS-对iOS应用进行模糊测试
一,模糊测试,是指通过反复向待测应用发送畸形的数据,对应用进行动态测试的过程. 二,模糊测试,也称动态分析,是一种构造非法输入并将其提供给应用,以期让应用暴露出某些安全问题的艺术和科学. 参考资料:& ...
- 【读书笔记】iOS-多点触摸事件与界面几何
边缘与中心检测: CGRectGetMinX 返回矩形左边缘的坐标. CGRectGetMinY 返回矩形底部边缘的坐标. CGRectGetMidX 返回矩形中心的x坐标. CGRectGetMid ...
- http-server服务跨域设置
http-server --cors -p 9999 ------------------------------------------------------------------------- ...
- Android学习笔记----天地图API开发之UnsatisfiedLinkError
由于在jniLibs目录下移除了x86的相关so文件,后来又因为需要在PC模拟器上调试,将该文件夹恢复后,增加了天地图的sdk,却忘记将libMapEngine.so文件同时拷贝至x86目录下,导致如 ...