1. 程式人生 > >java後端開發(一):基本認知之web開發是什麼

java後端開發(一):基本認知之web開發是什麼

前言

  前兩篇都是和資料庫基本知識有關的: 資料表設計與mysql入門(一)資料表設計與mysql入門(二) 。邏輯上會設計資料表操作資料庫了,但是還需要結合實際專案去加深印象。但是往下走之前,我們有必要先了解一下java web開發的相關背景知識和基礎知識。

前置條件

  必看! 圖解TCP/IP ,具體看哪部分,書籤欄已經標註了。如果你有這本書,那麼就看第一章,第二章,第8章第5小節即可。就是講述了網路的基本概念,通俗易懂很有趣。

網站、瀏覽器VS作業系統、軟體

  瀏覽器可以比作是電腦系統,他只是個執行環境,而網站就相當於電腦作業系統上的一個個軟體,軟體程式執行在電腦作業系統上,對應的就是網站(程式碼)執行在瀏覽器上。我們說的軟體程式設計也就是編寫程式碼,而我們的網站其實本質上就是一行行的程式碼,只不過被瀏覽器解析成你看到的介面與功能。電腦軟體也是一樣,你的excel就是一堆程式碼,只不過被電腦系統解析成你看到的樣子。
  而電腦軟體和網站的區別之一在於:電腦軟體是你安裝的時候就一次性的永久的把軟體程式碼下載到電腦上了(除非你刪掉),你每次使用軟體都是作業系統在解析程式碼的過程;而你在瀏覽器中輸入網址後,瀏覽器才會將網站程式碼下載下來,並進行解析後展示給你,你關掉了瀏覽器那麼這些程式碼也就被刪除了。
  所以這也是為什麼你關掉瀏覽器然後斷開網路,你再次開啟瀏覽器輸入網站地址卻打不開網站的原因,因為網站程式碼刪掉了,瀏覽器沒有可以解析的東西,並且因為網路原因瀏覽器也不能下載網站程式碼,所以沒法展示給你網站資訊,只能提示你網路有問題。

一個問題

  你登入CSDN總要輸入使用者名稱和密碼吧?輸入了正確的使用者名稱和密碼後,就可以看到自己的部落格列表。那麼CSDN怎麼知道你輸入的使用者名稱和密碼正確與否呢?

  • 存在瀏覽器中。換一個瀏覽器怎麼辦?
  • 存在電腦上。換一個電腦登入怎麼辦?
  • 將賬號密碼寫死在網頁中。別人登入怎麼辦?

  也就是說CSDN想要校驗你輸入的使用者名稱和密碼正不正確,他必須要去儲存正確賬號和密碼的地方去讀取才行,比如所有使用者的賬號和密碼存在CSDN這家公司中的一臺電腦上的Excel中。聽起來好像不錯,但是先不說能不能實現,光這種方案就感覺漏洞很多。不過我們目前可以認同的是:使用者名稱和密碼肯定要儲存在和CSDN這家公司相關的機器上,這樣子全國各地的使用者才能不限時間地點的正確登入。
  CSDN那邊到底怎麼儲存呢?百思不得其解?去前言找找答案?
  答案當然是資料庫。看過前兩篇的同學肯定對資料庫不陌生。CSDN將使用者名稱和密碼儲存在他們公司的資料庫中,當用戶在介面上輸入賬號密碼時,CSDN網站會去資料庫中查詢該使用者名稱對應的密碼,如果查到的密碼和使用者輸入的密碼一樣,就可得知使用者輸入正確,所以登入操作就會成功。
那麼你有感到奇怪嗎?上段中的描述:

CSDN網站會去資料庫中查詢該使用者名稱對應的密碼

  資料庫在CSDN公司裡面,網站就在我開啟的瀏覽器上,那麼網站是怎麼去資料庫中查詢的呢?
  通過前置條件中針對網路基礎的學習,我相信你已經理解 協議 這個概念了,簡單理解就是一種語言。而我們的瀏覽器只知道 HTTP 這種語言(當然,這樣表述並不十分準確)。但是資料庫我們說過了,他是解析 SQL 這種語言的,實際上 mysql 的語言是另外一種語言,總之和 HTTP 完全不同。
並且,
  說了這麼多,我們再回來。不論網站程式碼怎麼樣,瀏覽器不支援其他協議你能怎麼辦?可是你又必須要去讀取資料庫的資料啊。現在我們的境遇是:
  一邊是支援 HTTP

協議的瀏覽器,一邊是支援特殊協議的 mysql 。二者肯定不能直接通訊了,那麼該怎麼辦?

如何處理

  我們是不是可以找一箇中間人,它既支援 HTTP 協議又可以支援 mysql 自定義的協議呢?就相當於找一個即會英語又會漢語的翻譯員。
  好的,CSDN在公司的電腦上編寫了一個軟體,該軟體的作用就是接收外界發來的 HTTP 請求,然後根據請求內容決定去如何操作資料庫。這樣子,當你在CSDN網站上輸入賬號密碼點選登入按鈕後,網站程式碼就會請求瀏覽器去發出一條包含你輸入的使用者名稱和密碼資訊的 HTTP 請求,該請求會發送到CSDN公司編寫的軟體上,然後該軟體解析以後發現是要驗證輸入的資訊正確與否,它就去資料庫進行查詢並驗證,然後再將正確資訊告知你開啟的CSDN網站,最終你就可以成功登入了。
  上述的例子中有兩大塊東西,一塊是網站本身,一塊是中間層的那個軟體,這兩塊都是需要CSDN公司來開發的。而瀏覽器市場上已經有很多了,資料庫也有很多可以選擇的,所以他們除外。那麼具體開發什麼?

  • 網站本身

    • 介面佈局:就和你畫畫一樣,總要安排好哪裡放什麼怎麼放吧
    • 互動設計:你滑鼠移動到 “寫部落格” 按鈕上他就會由白變紅等等。
    • 頁面跳轉:比如你登入成功後展示給你的是哪個介面,你點選使用者資訊後展示給你的又是哪個介面
    • 業務功能:比如你輸入的使用者名稱不能包含特殊字元,當然可以有很多複雜的業務功能,這裡不再描述。
  • 那個轉換軟體

    • 接收HTTP請求:總要知道網站要他幹嘛吧,是要讀取使用者資訊還是處理登入驗證
    • 去和資料庫互動:因為所有需要儲存的資料都是儲存在資料庫的
    • 業務功能:比如使用者註冊請求,使用者密碼總不能以明文的形式儲存在資料庫吧,這樣子太不安全了,需要加密後再儲存。又或者使用者上傳的頭像,我們把頭像圖片儲存在別的地方,然後再在資料庫中儲存該使用者頭像的連結地址。當然可以有很多複雜的業務功能,這裡不再描述。

最終總結

  上邊的網站開發用專業術語來說就是 前端 開發,那個轉換軟體按照專業術語來說就是 後端 開發。前端開發主要面向的是使用者,後端開發主要面向的是資料庫。我們將要學習的自然就是後端開發了。前後端加起來就是web開發。二者聯絡緊密卻又有各自獨立的技術棧。
  下篇文章我們將會講述web開發的歷史,web開發的技術棧,以及我們現在採用的web開發的方式。

推薦閱讀

本篇沒有推薦閱讀,可以自行搜尋前端、後端、web開發進行了解。