Java 后端開發(fā) 快速入門知識

Java 后端開發(fā) 快速入門需要學習的核心知識主要包括 Java、Servlet、JDBC、MySQL、Redis、Spring、MyBatis 等。

0、開發(fā)工具

推薦使用idea,當然其他的也可以考慮。可以通過以下路徑獲取
https://github.com/judasn/IntelliJ-IDEA-Tutorial

1、JAVA

2、Servlet

Servlet 是 Java Web 的底層技術,雖然現(xiàn)在因為有 Spring 框架,我們已經(jīng)不需要直接編寫 Servlet 了,但作為底層技術,我們還是要了解其原理,這樣我們才能更好地理解在其之上的 Spring 框架等。

Servlet 其實就是 Server Applet —— 服務器小程序,即運行在服務器上的一個小程序,也是一個基于 Java 技術的 Web 組件。

Servlet 容器也稱為 Web 容器,目前主要就是 Tomcat 與 Jetty,Jetty 更滿足公有云的分布式環(huán)境的需求,而 Tomcat 更符合企業(yè)級環(huán)境。通常我們使用Tomcat。

目前 Servlet 規(guī)范已經(jīng)演進到 4.0 版本,相比之前的版本,主要是新增了對 HTTP/2 的支持。另外,3.0 版本相比之前的 2.5 版本,最重要的則是新增了對 WebSocket 的支持,3.0 版本之前的 Servlet 只支持 HTTP 請求。那么,對于目前的 Servlet 來說,需要學習哪些知識點呢?這次,我先把核心的知識點羅列出來,后面再來推薦一些相關的學習資源。

  • 環(huán)境配置:包括開發(fā)環(huán)境部署環(huán)境,要熟悉這兩種環(huán)境的搭建,開發(fā)環(huán)境主要就是 JDK 和 IDEA 的安裝配置,部署環(huán)境則是 Web 容器 Tomcat 的安裝配置。另外,Java Web 普遍使用 Maven 作為構(gòu)建工具,所以也要了解下 Maven 的用法。雖然 Gradle 比 Maven 更先進,但在 Java 后端大部分項目目前依然還在使用 Maven。

  • 生命周期:要了解 Servlet 的生命周期,并了解 Servlet 容器對 Servlet 實例是如何管理的。

  • API:Servlet 的常用 API 要熟悉,主要包括 Servlet 接口、ServletConfig、ServletContext、RequestDispatcher、ServletRequest、ServletResponse、HttpServlet、HttpServletRequest、HttpServletResponse,尤其是最后兩個類 HttpServletRequest、HttpServletResponse 必須要非常熟悉,這是在實際開發(fā)中會頻繁使用到的。

  • 過濾器:Servlet 過濾器可以攔截請求和響應,并進行一些處理。主要用于對用戶請求進行鑒權、做日志記錄、對數(shù)據(jù)進行過濾或替換、對數(shù)據(jù)進行解碼或解密等等,多個過濾器可以組成一條過濾器鏈。

  • 監(jiān)聽器:Servlet 監(jiān)聽器主要用來監(jiān)聽 ServletContext、HttpSession、ServletRequest 對象的生命周期事件,以及這些對象的屬性改變事件。

  • WebSocket:需要注意的是,網(wǎng)上有些繼承 WebSocketServlet 的實現(xiàn)方式已經(jīng)是 Deprecated(過期)的,根據(jù) Oracle 發(fā)布的 Java 的 WebSocket 的 JSR356規(guī)范所展示的實現(xiàn)方式有兩種,一種是使用 @ServerEndpoint 注解,另一種是繼承 javax.websocket.Endpoint 類,推薦使用注解。關于 WebSocket 的開發(fā)入門可以看這篇文章:java WebSocket開發(fā)入門WebSocket

  • Servlet 教程:https://www.runoob.com/servlet/servlet-tutorial.html

3、JDBC

JDBC = Java DataBase Connectivity(Java 數(shù)據(jù)庫連接),是一套訪問數(shù)據(jù)庫的標準 Java API。通過調(diào)用這套 API,就可以連接到數(shù)據(jù)庫,可以執(zhí)行 SQL 語句,對數(shù)據(jù)庫里的數(shù)據(jù)進行處理。不過,JDBC API 只是一套規(guī)范接口,真正與數(shù)據(jù)庫進行連接的則是 JDBC 驅(qū)動程序,不同的數(shù)據(jù)庫采用不同的 JDBC 驅(qū)動程序。

JDBC 的核心接口和類就只有幾個:Driver、DriverManager、Connection、Statement、ResultSet、SQLException。要了解這幾個接口和類的用法,以及了解使用 JDBC 的流程,簡單來說就是五個步驟:

注冊 JDBC 驅(qū)動程序;
建立與數(shù)據(jù)庫的連接;
執(zhí)行 SQL 語句;
獲取結(jié)果數(shù)據(jù);
清理資源。

另外,也要了解下對事務的處理,包括事務的提交和回滾。以及了解如何對 SQL 進行批量處理。所有這些內(nèi)容在上面的 JDBC 教程中都有講述,我就不展開說了。

4、數(shù)據(jù)庫

數(shù)據(jù)庫分為關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫兩大類。關系型數(shù)據(jù)庫主要就是 MySQL、Oracle、DB2、PostgreSQL 等,標準數(shù)據(jù)查詢語言 SQL 就是一種基于關系型數(shù)據(jù)庫的語言。非關系型數(shù)據(jù)庫也稱 NoSQL(Not only SQL),主要包括 Redis、MongoDB、HBase 等。如今,很多項目都會使用一種以上的數(shù)據(jù)庫,其中,Redis 可以說是必選的。另外,MySQL 作為最流行的關系型數(shù)據(jù)庫,開源而且入門簡單,因此我們就先熟悉這兩個數(shù)據(jù)庫。

對于 MySQL,目前我們也還不需要去研究比較深入的東西,比如存儲引擎、存儲過程、觸發(fā)器、事務隔離級別、分布式事務、鎖機制等等,最初級的主要了解以下內(nèi)容:

  • 安裝配置:這不用說,最最基本的
  • SQL:對 SQL 肯定要非常熟悉,這也是最基本的
  • 數(shù)據(jù)類型:要了解 MySQL 有哪些數(shù)據(jù)類型,以及不同數(shù)據(jù)類型之間有哪些差異
  • 約束:了解并熟悉各種約束的用法,包括主鍵約束、非空約束、唯一性約束、自增約束、默認值約束等
  • 索引:索引很重要,必須要懂,當然,如何用好索引也是門學問
  • 函數(shù):了解一些常用的函數(shù),如 count、sum、avg、max、min、now 等等

對于 Redis,因為是基于內(nèi)存的,所以性能非常高,很多項目用它作緩存。雖然是一個 key - value 數(shù)據(jù)庫,但 value 可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)、有序集合(Sorted Sets) 等類型。推薦一個菜鳥的簡明教程,可以簡單入門:

5、Spring

我們?nèi)腴T只先了解兩個項目:Spring Boot 和 Spring Framework。其中,Spring Framework 是我們要學習的核心框架,但也不是要了解這個項目的全部內(nèi)容,只先了解一些基礎的東西,能夠支撐到我們進行入門級的開發(fā)就足夠了。

那么,先來聊聊 Spring Framework,目前最新版本是 Spring Framework 5.0。Spring Framework 包含有20多個模塊,包括 spring-corespring-aop、spring-beans、spring-context、spring-jdbc、spring-web、spring-webmvc、spring-websocket 等等,具體列表可以查看 Spring Framework 的 Github 項目。不過,一般我們不需要將所有模塊都引入到項目中,根據(jù)所需去引入即可。

學習 Spring Framework,有兩個核心設計思想是要掌握的,就是 控制反轉(zhuǎn)(Inversion of Control,簡稱 IoC)面向切面編程(Aspect Oriented Programming,簡稱 AOP)。說到控制反轉(zhuǎn),還有一個概念也要理解,叫 依賴注入(Dependency Injection,簡稱 DI),區(qū)別就是,控制反轉(zhuǎn)是一種設計思想,而依賴注入則是其中一種實現(xiàn)的方式,還有另一個實現(xiàn)方式叫依賴查找(Dependency Lookup)。不過,大部分都是采用依賴注入,Spring 使用的也是依賴注入的方式。另外,Spring 核心還有一個控制反轉(zhuǎn)容器(IoC Container),主要就是通過配置文件以及利用反射在運行時創(chuàng)建所需要的實現(xiàn)類。要理解這幾個概念,推薦看知乎上的一個回答,深入淺出,非常好理解:

AOP 同樣也是一種設計思想,主要是為了分離出一些非業(yè)務邏輯的代碼,如日志記錄、性能統(tǒng)計,安全控制,事務處理,異常處理等。在 Spring 底層是通過動態(tài)代理的方式實現(xiàn)了 AOP 的內(nèi)部機制,另外,上層也支持 AspectJ 的注解方式。AOP 中還有幾個相關概念需要理解:AspectJoint point、Pointcut、AdviceWeave、Introduction、Target Object、AOP Proxy。那么,為了幫助大家理解 AOP 這些概念和原理,以及 Spring 中要如何使用 AOP,我找了兩篇文章分享給大家學習:

接著,再來了解下 Spring Boot,Spring Boot 能夠簡化基于 Spring 的應用的搭建和開發(fā),Spring Cloud 就是基于 Spring Boot 的。Spring Boot 從根本上來說就是一些庫的集合,這些庫的 artifactId 一般都是以 spring-boot-starter- 為前綴。使用 Spring Boot 搭建項目也是非常簡單的,我就分享《Spring Cloud微服務實戰(zhàn)》一書的作者翟永超博客的兩篇文章給大家吧:

要相對系統(tǒng)地入門 Spring,我推薦評價最高的兩本書:《Spring實戰(zhàn)(第4版)》《精通Spring 4.x:企業(yè)應用開發(fā)實戰(zhàn)》。兩本書都是基于 Spring 4 的,基于 Spring 5 的書籍還沒有,不過這對于入門來說并沒什么影響。另外,《精通Spring 4.x:企業(yè)應用開發(fā)實戰(zhàn)》這本書中還加了 Spring Boot 的章節(jié)。Spring Framework 的官方文檔也可以看,內(nèi)容畢竟是最新也是最詳細的,只是內(nèi)容太多了,據(jù)說有600多頁,所以一時半會是看不完的,一般也不推薦初學者直接看官方文檔,只建議對某些點理解得還不是很深的情況下可以去翻來看看,加深理解。Spring Boot 的官方文檔也是一樣。

6、MyBatis

前面我們知道,Java 訪問數(shù)據(jù)庫的標準 API 是 JDBC,只是,直接使用 JDBC API 進行編碼操作數(shù)據(jù)庫的話,代碼非常繁瑣,可擴展性非常低,因此,才會衍生出 Hibernate、MyBatisSpringJDBC 等對 JDBC 進行了封裝的 ORM 框架,以簡化開發(fā)。那么,為什么選擇 MyBatis,而不是 Hibernate 或 SpringJDBC 呢?主要是因為目前最流行的還是 MyBatis,另外 MyBatis 也容易上手。

先來了解下 ORM 這個概念,ORM = Object Relational Mapping,稱為對象關系映射,即業(yè)務實體對象和關系數(shù)據(jù)庫之間建立起一種映射關系,最簡單的映射關系就是:一個類對應一張數(shù)據(jù)表,類的每個實例對應表中的一條記錄,類的每個屬性則對應表的每個字段。Hibernate 是一個標準的 ORM 框架,在實體類和數(shù)據(jù)庫之間建立了完整的映射關系,基本不需要開發(fā)人員自己寫 SQL,內(nèi)部會自動生成 SQL 語句,因此,對于數(shù)據(jù)量非常大的應用,想要優(yōu)化 SQL 語句就比較困難。MyBatis 則是一個半自動化的 ORM 框架,不同于 Hibernate 提供了從實體類到數(shù)據(jù)庫表的全套映射機制,SQL 是自動生成的;而 MyBatis 則只是在實體類和 SQL 之間建立映射關系,并不自動生成 SQL 語句,因此,開發(fā)人員是需要自己寫 SQL 的。這樣,對 SQL 進行優(yōu)化則比較方便了。

要了解 MyBatis 的用法,直接看官方文檔即可,內(nèi)容不多,且還有中文版本,以下是鏈接地址:

實戰(zhàn)

前面的內(nèi)容非常多,要通過實戰(zhàn)項目將所有知識點全部串起來還真的比較難,主要是如今已經(jīng)找不到項目會直接編寫 Servlet 和 JDBC 了,而這兩塊是 Java Web 的底層技術,必須要理解透徹。那么,我們只能拆開來學習,Servlet 和 JDBC 原生部分,建議就按照書籍上的 Demo 去練習,主要目的是要通過編碼對那些核心的知識點形成深刻理解。Spring、MyBatis、數(shù)據(jù)庫這些,則可以通過一些開源項目進行學習,我找到一個基于 Spring Boot 的不錯的學習項目,推薦給大家:

里面的每個小項目都非常簡單,建議重點看 springboot-mybatis-redis 這個小項目,最貼合我們需要學習的內(nèi)容。因為項目太簡單,建議對其進行擴展,比如,自己多增加一個表,并通過增加新的 REST 接口對其進行增刪改查;或者添加用戶注冊登錄功能,并使用過濾器對用戶作統(tǒng)一鑒權;或者再添加對 WebSocket 的支持。最好是將其擴展成一個相對完整的 Java Web 項目,比如做一個簡化的電商項目,不需要界面,只需要提供接口。當你能完成這個完整的 Java Web 項目之后,也算真正入門了。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.JVM 堆內(nèi)存和非堆內(nèi)存 堆和非堆內(nèi)存按照官方的說法:“Java 虛擬機具有一個堆(Heap),堆是運行時數(shù)據(jù)...
    yanzhu728閱讀 1,014評論 0 0
  • 一. Java基礎部分.................................................
    wy_sure閱讀 4,033評論 0 11
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風情閱讀 1,861評論 0 3
  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,901評論 0 9
  • 今天的《創(chuàng)意寫作》的主題是“童詩創(chuàng)編——遇見夏天”,主講是溫柔的李茜老師。 夏天是有趣的,而夏天的...
    長洲區(qū)149鄧婉妮閱讀 808評論 0 0

友情鏈接更多精彩內(nèi)容