SSM 框架即 SpringMVC+Spring+Mybatis,相信各位朋友在投遞簡歷時已直觀感覺到它的重要性,JavaWeb 相關工做的招聘要求中基本都包括了這三項技術能力。前端
因爲其輕量級、易用性等特色,大多公司都選用了 SSM 框架。本達人課將以 SSM 框架做爲課程主題,經過實戰項目帶你們全面瞭解 SSM 框架及相關技術,並切實應用到實際的開發工做中。課程的最後增長了優化提高的知識技能,好比負載均衡、集羣部署以及緩存模塊的整合,經過學習,不僅僅學會使用,還可靈活應用於性能優化提高的實戰項目中。git
不管您的技術功底如何,即使您以前對 JavaWeb 開發只知其一;不知其二,經過本課程的學習,均可以完成對 SSM 框架的全面深刻學習,真正得到實際開發能力。課程最後的優化教程也將進一步打通您的「任督二脈」,對網站的性能優化再也不迷茫!spring
經過本課程,您將學習到如下內容:docker
課程共包含四大部分:數據庫
第一部分(第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 運維及項目管理工做。
讓咱們從某招聘網站上發佈的數個 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後臺管理系統。
爲了達成這一目的,我對課程作了以下規劃:
經過本課程,不只僅讓你學會開發,也會讓你學會網站優化,進一步提高技術能力和技術積累!
該達人課適合如下人羣閱讀:
在學習本課程以前,須要瞭解 Java 開發及 JavaWeb 相關知識等基礎技能。
經過本課程,您將學習到如下內容:
點擊這裏查看:gitchat-ssm
對於絕大部分 JavaWeb 開發者來講,開發的第一個項目應該都是以 JSP 或者 JSP+Servlet 形式完成的項目,以後陸陸續續、大大小小的項目應該也是以此爲基礎進行開發,當你看到你一個個完美的做品竣工完結之時,心滿意足之餘你可能會有這樣一種疑惑,明明使用 JSP+Servlet 技術就能夠完成的項目爲何要使用各類框架?
首先,這些項目只是學習過程當中的練習項目,其次,這些項目是我的項目並非企業應用,學習 JavaWeb 開發的目的是企業級應用的開發,閉門造車的思惟模式不可取。一箇中小型項目所有使用 JSP+Servlet 進行開發和維護,其成本就會很高,更不用說大型項目了,那簡直就是一個災難,開發成本、迭代成本、維護成本將會更高。真實的企業應用開發有幾個比較重要的關注點分別是:代碼複用、標準化、可維護性、開發成本,JSP+Servlet的封裝和抽象程度與框架相比起來就毫無優點可言了。
代碼複用:框架的封裝和抽象程度較高,企業開發中的不少功能都作了相應的實現,例如 JDBC、請求分發、對象管理、事務管理等底層代碼,若是不使用框架而選擇本身開發的話,代碼量着實不小,框架的使用爲開發人員減小了大部分的編碼工做,提高開發效率。
標準化:對於上述的功能,若是沒有使用框架,每一個企業應該確定會有本身的封裝。各企業封裝的思路不一樣及業務場景的不一樣也會致使或大或小的差別性,這將給員工帶來比較大的學習成本。從一家公司換到另一家公司,須要從新學習使用公司內部的框架,這種作法每每會加大學習成本。而使用框架,上述的問題將不復存在,大部分公司都在用這套框架和這套框架下的開發模式,最終產生一個你們都接受的標準化流程,框架實際上也是一種規範,可讓每位開發人員保持相似的開發風格和開發方式。
可維護性:代碼複用程度高、開發流程的規範化和標準化帶來的就是開發效率的提高;框架的引入也使得代碼分層更加清晰,底層技術細節的封裝,使得開發人員的關注點更加傾向於具體業務上;這些緣由會使得企業應用擁有更優秀的可維護性。
其實,說得簡單點,當優秀的框架逐漸成爲趨勢、成爲標準之時,開發者的學習成本下降了,同時也減小了開發者的重複編碼工做,簡化開發,加快開發進度,下降維護難度。
談到框架之時,我相信你的腦海中會迅速出現一個詞語——「三大框架」,每一個 JavaWeb 學習者對該詞確定都印象深入。開始接觸 Java 開發框架時,這個詞語也就隨之深入在腦海中,由於周圍的開發者乃至本身都會時常提到它。
「三大框架」已成爲你們接受的叫法,在進入公司後,隨着開發經驗的增加,「三大框架」被提到得愈來愈少了。伴隨着可以使用的優秀框架愈來愈多,已經不止是「三大框架」了。「三大框架」的每一種技術,雖然是獨立的技術,用於企業級應用開發時又是緊密結合在一塊兒,並不孤立,「三大框架」主要用來開發 Web 應用,分別負責 MVC 開發模式下的不一樣模塊功能。
這個詞語所表明的含義也不是固定的,我初學 JavaWeb 開發時,「三大框架」表明的是 SSH(即 Spring、Struts二、Hibernate),而在今天,「三大框架」已經逐漸過渡成爲 SSM(即 Spring、SpringMVC、MyBatis),本課程選擇的技術即爲 Spring+SpringMVC+MyBatis。
咱們能夠登陸幾大招聘網招,看看企業 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 是一個輕量級的企業級應用開發框架,於2004年由 Rod Johnson 發佈了1.0 版本,通過多年的更新迭代,已經逐漸成爲 Java 開源世界的第一框架,Spring 框架號稱 Java EE 應用的一站式解決方案,與各個優秀的 MVC 框架如 SpringMVC、Struts二、JSF 等能夠無縫整合,與各個 ORM 框架如 Hibernate、MyBatis、JPA 等也能夠無縫銜接,其餘各類技術也由於 Spring 的存在而被很容易地整合進項目開發之中,如 Redis 整合、Log4J 整合、ElasticSearch 整合、RabbitMQ 整合、Quartz 整合、Thymeleaf 整合等等,只要你開發中須要使用到的技術,Spring 都提供了極好的封裝和整合體驗,這也是爲什麼 Spring 生命力如此強大的緣由,暫時尚未可以替代 Spring 的框架出現。
Spring 框架提供約20個模塊,以下圖:
Spring 框架並不強制應用徹底依賴於 Spring,開發者可自由選擇須要的模塊。
總結起來,Spring 框架有以下優勢:
SpringMVC 是 Spring 框架體系中的全功能 MVC 模塊,在前面 Spring 結構圖中能夠看到這一關係,其中的 Web MVC 即 SpringMVC。SpringMVC 是基於 Java 語言實現 MVC 設計模式的請求驅動類型的輕量級 Web 框架,目的是將 Web 開發模塊化及代碼簡化。其提供了 DispatcherServlet 前端控制器分派請求,同時提供靈活的配置處理程序映射、視圖解析,並支持文件上傳,目前已是衆多 MVC 框架中的佼佼者。
下圖爲 SpringMVC 框架的工做流程圖及註釋:
SpringMVC 框架的優勢以下:
MyBatis 的前身是 Apache 社區的一個開源項目 iBatis,於2010年改名爲 MyBatis。MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架,避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集,使得開發人員更加關注 SQL 自己和業務邏輯,不用再去花費時間關注整個複雜的 JDBC 操做過程。
如下爲 MyBatis 的結構圖:
MyBatis 的優勢以下:
因爲篇幅有限,本文只簡單介紹了 SSM 技術棧。本達人課的側重點在實戰開發上,所以,後續文章將專一於實戰教程部分。本達課保證文章的篇幅充足、過程詳細,讓你不枉此行,必定會有收穫。
另外,與 SSH 技術棧的比較不在本文的討論範圍內,我認爲這種框架之間的對比對於學習者來講也只是看個熱鬧,只有真正的使用過才能懂得其中的區別。同時,我也認爲技術之間沒有高低優劣之分,只有適不適合本身,所以就再也不花費篇幅去作對比了,有興趣的朋友能夠去實際體驗一下再作對比,切不可眼高手低。
閱讀全文: http://gitbook.cn/gitchat/column/5b4dae389bcda53d07056bc9