Java Web學習路線

轉載自--Java團長html

Java 基礎

Java 是一門純粹的面向對象的編程語言,因此除了基礎語法以外,必須得弄懂它的 oop 特性:封裝、繼承、多態。此外還有泛型、反射的特性,不少框架的技術都依賴它,好比 Spring 核心的 Ioc 和 AOP,都用到了反射,並且 Java 自身的動態代理也是利用反射實現的。此外還有 Java 一些標準庫也是很是常見,好比集合、I/O、併發,幾乎在 Web 開發中無處不在,也是面試常常會被問到的,因此在自學 Java 後端以前,不妨先打好這些基礎,另外還有 Java8 的一些新特性,也要重點關注,好比 Lambda 表達式、集合的 Stream 流操做、全新的 Date API 等等,關於新特性,我也寫了幾篇關於這方面的博客,請自行找吧,就不貼出來了。java

關於書籍推薦,我是不建議初學者一開始就拿着「Java 編程思想」啃的,由於當初我就是那個當天下午決定自學 Java,晚上就抱着這本書啃的人,說實話,我當時真的不懂它在說啥,由於我沒有一點的面嚮對象語言編程的基礎,而這本書又寫得太博大精深了,在當時的我來講,徹底是天書,可是我認爲它仍然是 Java 界的聖經,每讀一次都有所收穫。我在這裏推薦大家一開始先看「Java 核心技術」,這本書講得比較通俗易懂,初學者比較能接受。linux

關於視頻推薦,我當初就是聽某客的畢向東老師講的 Java 基礎教程(能夠關注個人微信公衆號獲取),畢老師講的實在是太生動有趣了,不知不覺把我帶進 Java 的坑裏沒法自拔,有時候我會聽他視頻時笑出聲來,也許是我那段自學階段最有趣的時刻了。web

數據庫

關於 sql 方面:SQL 教程、MySQL 教程面試

我是瞭解了一些基礎語法以後,就直接跟着視頻的老師作一些表操做實戰練習了,好比單表查詢、多表查詢等。我建議學 sql 切勿眼高手低,需多加練習,不要只看懂了就行,由於工做中寫得一手簡練的 sql 是很是重要的。在這裏我說下我在項目一直秉承着 sql 語句是能避免多表查詢就避免多表查詢,可以分開多條語句就分開多條語句,由於這裏涉及到多表查詢性能和數據庫擴展的問題。redis

關於 JDBC 方面:JDBC 教程、 JDBC 獲取鏈接對象源碼分析spring

你須要弄懂 JDBC API 的用法,其實它只是一組規範接口,全部數據庫驅動只要實現了 JDBC,那麼咱們就能夠經過標準的 API 調用相應的驅動,徹底不用知道驅動是怎麼實現的,這就是面向接口編程的好處。並且對於 JDBC 我是直接看視頻去理解的,跟着視頻作了一個基於 Apache Dbutils 工具作了一個具備事務性的小工具,我特地用思惟導圖總結了一下:sql

databasedocker

jdbc-utils源碼地址:jdbc-utils數據庫

Web 基礎

曾經開源中國創始人紅薯寫了一篇文章「初學 Java Web 開發,請遠離各類框架,從 Servlet 開發」,我以爲他說的太對了,在現在 Java 開發中,不少開發者只知道怎麼使用框架,但根本不懂 Web 的一些知識點,其實框架不少,但都基本是一個套路,因此在你學習任何框架前,請把 Web 基礎打好,把 Web 基礎打好了,看框架真的是如魚得水。

關於 Http 協議,這篇文章就寫得很清楚:Http協議

關於 Web 基礎這方面數據推薦,我當時是看的是「Tomcat 與 Java Web 開發技術詳解」,很詳細地講解了整個 Java Web 開發的技術知識點,但如今看來,我以爲裏面講的有一些技術確實有點老舊了,不過能夠了解一下 Java Web 開發的歷史也是不錯的。因此在 Web 基礎這方面我都是看某客的崔老師講的「超全面 Java Web 視頻教程」,講得很詳細很生動,還有實戰項目!

關於 JSP,你只要瞭解它其實就是一個 Servlet 就好了,關於它的一些標籤用法,我認爲能夠直接忽略,由於如今互聯網幾乎沒哪間公司還用 JSP,除了一些老舊的項目。如今都是流行先後端分離,單頁應用,後端只作 API 接口的時代了,因此時間寶貴,把這些時間重點放在 Servlet 規範上面吧。

關於 Tomcat,它是一個 Web 容器,咱們寫的後端項目都要部署到Web容器才能運行,它實際上是一個遵循 Http,經過 Socket 通訊與客戶端進行交互的服務端程序:Tomcat結構及處理請求過程

Web 主流框架

Java Web 框架多如牛毛,等你有必定經驗了,你也能夠寫一個 Web 框架,網上不少說 Spring、Struts二、Hibernate 是 Java 三架馬車,我只想說,那是好久遠的事情了,我嚴重不推薦 Struts二、Hibernate,相信我,一開始只須要上手 Spring、SpringMVC、Mybatis 就能夠了,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的。

可是提醒一點就是,千萬不要沉迷於各類框架不能自拔,以會多種用法而沾沾自喜,致使知其然而不知其因此然。

Spring其核心思想就是 IOC 和 AOP:

談談對 Spring IOC 的理解

Spring 面向切面編程

SpringMVC 它的思想是所有請求統一用一個 Servlet 去作請求轉發與控制,這個 Servlet 叫 DispatcherServlet:

SpringMVC 初始化過程

SpringMVC 處理請求過程

Mybatis 它可實現動態拼裝 sql,避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集:

mybatis 入門教程

Mybatis 深刻淺出系列

Web 框架進階

使用了 SSM 框架後,你會以爲框架也不過這麼回事,若是你對 Spring 有過大概瞭解,你也會產生想寫一個「山寨版」Spring 的心思了,一個輕量級 Web 框架主要具有如下功能:

可讀取用戶自定義配置文件,並以此來初始化框架;
具有 Bean 容器,管理項目的類的對象生命週期;
具有依賴注入,下降類之間的耦合性;
具有 AOP 功能,使項目可進行橫向編程,可不改變原有代碼的狀況增長業務邏輯;
具有 MVC 框架模式。
其實除了 SSM 以外,Web 框架可謂是百家齊放,其中以 Spring 全家桶最爲耀眼,在這裏我極力推薦兩個 Spring 家族框架:SpringBoot 和 SpringCloud。

SpringBoot 彌補了 Spring 配置上的缺點,不再用爲繁雜的 xml 費勁精力了,堪稱是 Java 後端開發的顛覆者,推薦書籍「Java EE 開發的顛覆者:SpringBoot實戰」

SpringBoot 構建 web 項目

SpringBoot 自動化配置源碼分析

自定義 SpringBoot Starter

spring-boot-starter-tutorial

SpringCloud 是一個微服務架構,可以將項目按照業務分紅一個個微服務,每一個微服務均可獨立部署,服務之間互相協調。當一個項目愈來愈大時,隨之而來的是愈來愈難以維護,此時將項目拆分紅若干個微服務、單獨維護、單獨部署,也能夠下降項目不一樣業務間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務架構實戰」,這本書將 Docker 與微服務完美地結合在一塊兒,堪稱完美!

Spring Cloud 中文官網

史上最簡單的 Spring Cloud 教程

我寫的有關於 Spring Cloud 的博客:

SpringCloud微服務架構之服務註冊與發現

SpringCloud微服務架構之服務消費者

SpringCloud微服務架構之斷路器

SpringCloud微服務架構之服務網關

其它技術

Redis:一個高性能的 key-value 數據庫,當有併發量很高的請求時,將數據緩存在 Redis 中,將提升服務器的響應性能,大大減輕數據庫的壓力。

redis 中文官網

redis 教程

Git:世界上最早進的分佈式版本控制系統,建議全部初學者從命令行開始使用 Git!

Git 官網

最全 Git 教程

Git 的一些經常使用命令

Maven:一個用於構建項目的工具,將項目間的依賴經過 xml 完美地組織到一塊兒,可經過編譯插件將項目編譯成字節碼文件。還有相似的 Gradle 也是不錯的選擇。

maven 的 pom.xml 文件詳解

Linux:至少要求經常使用的命令會用,可以在 linux 環境下部署項目。

Linux 命令大全

最全的 SSH 鏈接遠程終端教程

Docker:簡直是項目部署神器啊,來不及解釋了,看我 Docker 系列博客,開啓 Docker 之旅吧!推薦書籍「Docker 技術入門與實戰」,中國首部 Docker 著做!

Docker 實戰(一)

Docker 實戰(二)

Docker 實戰(三)

docker-deploy-tutorial

開發工具

工欲善其事,必先利其器,如下是我推薦的一些開發工具:

Intellij IDEA:Java 開發最好的 IDE,這個是公認的,我一開始是用 Eclipse 的,後來用了 Intellij IDEA,才發現 Eclipse 就是一坨屎,因此我以過來人勸大家不要使用 Eclipse,直接 Intellij IDEA!

IntelliJ IDEA 使用教程

Iterm2:macOS 最好用的終端!

Iterm2 使用指南

Chrome:人生苦短,請用 Chrome,來不及解釋了,快上車!

Postman:很好用的一個接口調試工具。

Postman 官網

我有一個微信公衆號,常常會分享一些Java技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「Java團長」或者「javatuanzhang」關注。

相關文章
相關標籤/搜索