搞懂了這幾點,你就學會了Web程式設計
做了那麼多年Web程式設計,仔細想想,其實本質上就那點事兒,你抓住了幾個重點問題,學起來一點都不難。
1.理解瀏覽器/伺服器結構(B/S)
B/S是從90年代的客戶端/伺服器端發展而來,共同點都是由一個(或一組)伺服器來服務多個客戶端。
差別在於:首先,C/S結構的客戶端可能是由不同語言編寫的,例如VB,Delphi,PowerBuilder等,B/S結構中瀏覽器成為了一個通用的客戶端,程式以Web的方式呈現,不需要安裝,伺服器端的升級就意味著所有客戶端的升級,這和C/S相比是個翻天覆地的變化。
其次B/S的訪問協議也標準化為HTTP(s),而不是原來各種各樣的私有協議。
最後B/S結構中的伺服器面向全球使用者訪問,而不像C/S那樣僅僅是區域網,所以壓力更大,挑戰更大。
2.Web頁面是怎麼組成的?
簡單來說就是HTML+CSS+Javascript,我們看到的Web介面就是由這三者組成。
HTML負責結構,CSS負責展現,而Javascript負責行為。
我們說的前端開發也主要是做這一塊,對於前端工程師,需要能理解DOM模型,以及如何通過javascript(例如JQuery等框架)來操作DOM模型。
3.瀏覽器和伺服器是怎麼打交道的?
當然是HTTP!HTTP說穿了就是瀏覽器和伺服器聊天是的一種約定,這個約定確保雙方互相理解。
完整的HTTP是非常複雜的,《HTTP權威指南》一書厚達700多頁。
其實我們最常用,也是最重要的也就那麼幾點:
(1)GET和POST。GET從伺服器端獲取資料,POST向伺服器端傳送資料(由此引出圖片上傳問題)
(2)HTTP是個沒有狀態的協議,需要通過額外的機制來維持狀態(例如登入狀態),常用的方法就是cookie。
(3)理解HTTP狀態碼
(4)理解同步vs非同步(由此引出AJAX,以及JQuery等框架)
4.URL和程式碼的對映
理解url和程式碼之間的關聯,例如www.xxx.com?action=login這樣的url是怎麼和後端的業務程式碼關聯起來的?
這樣的規則是在哪裡定義的?用程式碼、註解還是配置檔案?
後端的業務程式碼該如何組織?相信現在不會有人把業務邏輯都寫到Servlet當中了,所以需要很多MVC框架像Struts,SpringMVC來組織程式碼,讓系統清晰易懂。
5.資料的驗證、轉換和繫結
如何保證瀏覽器發過來的資料是符合要求的?
例如不能為空、不超過8個字元、兩個密碼必須相等….,出錯了得給出錯誤提示。
瀏覽器發過來的資料都是形如username=liuxin&password=123456這樣簡單的文字,但是後臺程式卻有著豐富的資料型別,什麼String,Date,Integer等等。所以需要把文字變成指定語言的型別。
型別轉換以後,後端的業務程式碼怎麼才能有效的使用呢?
最簡單的就是弄一個key:value這個樣的Map出來,業務程式碼直接用map.get(key)即可。
高階一點的可以把頁面發來的資料直接繫結到物件的屬性上,並且支援陣列,巢狀等複雜的結構。
例如user.name=liuxin&user.password=123456可以繫結到一個叫User的物件,其中有兩個屬性userName和password。
6.Web安全
如何防止黑客利用SQL隱碼攻擊,跨站指令碼攻擊,跨站請求偽造等手段來攻擊系統?
7.資料庫訪問
這一塊是比較麻煩的,畢竟物件導向(OO)世界和關係(Relational)資料庫之間存在著天然的鴻溝。
對於簡單的應用,直接寫點JDBC就夠用了,只需要掌握Connection,Statement,Resultset這三個基礎。
複雜點的需要用O/RMapping框架來搞定,例如Hibernate,MyBatis,還有RoR的ActiveRecord。
這其中比較棘手的就是表之間的關聯,就是所謂的一對多,一對一,多對多這樣的關係,如何在物件導向的世界裡描述。
擴充套件開去,還需要處理連線池,事務,鎖等各種煩人問題。
8.用什麼技術來生成Web頁面?
這裡說的Web頁面就是第2點中的頁面,包括HTML,CSS,Javascript。
能不能直接用Servlet的PrintWriter直接輸出HTML?當然可以,只是以後就沒有人看懂了。
現在用來建立Web頁面的技術多如牛毛:例如JSP,Velocity,Freemaker,Groovy等等,他們都有一個共同點:模板技術。
說白了就是有一個HTML的模板,裡邊可以嵌入程式碼,這個模板在執行時(例如在Tomcat當中)就可以根據輸入的不同而生成不同內容的Web介面了。
無論哪種模板,都需要面對一個重要問題:如何展示從業務邏輯層傳送來的資料?這一步驟其實和第5步中的資料繫結有密切關係。因為這一步需要確定諸如user.name,user.password這樣的欄位名稱。
9.如何把物件變成XML或者JSON字串?
由於AJAX以及手機端的存在,對於一個URL的請求,他們要求的返回值通常不是HTML頁面,而是XML或者JSON資料,此時需要有框架把物件轉化成相應的字串。
搞定了Web這些基礎的東西,在公司裡做一個Web程式設計師應該不在話下了,接下來需要學習的就是像高併發,快取,搜尋,分散式等高階的內容了。
相關文章
- 如何成為合格的web前端程式設計師?只要學會這幾點!Web前端程式設計師
- 再不學程式設計,你就成文盲了程式設計
- 再不學程式設計 你就成文盲了程式設計
- Redis系列總結--這幾點你會了嗎?Redis
- Web程式設計想要徹底搞懂,這幾點需清楚!Web程式設計
- 學會以下幾個軟體你就會3D遊戲模型了3D遊戲模型
- 學會這幾點,你也能成為面試殺手!面試
- Sql Or NoSql,看完這一篇你就懂了SQL
- 20分鐘輕鬆學會shell程式設計,80%人看過這篇就收藏了程式設計
- 年終了,程式設計師這樣談加薪就穩了!程式設計師
- 我這幾年程式設計師生涯的一點體會(轉)程式設計師
- 學生黨學程式設計,有這個開源專案就夠了!程式設計
- 假如程式設計摧殘了你 那就學會享受吧!程式設計
- 記錄--createObjectURL這個API真好用,我舉幾個場景你們就懂了ObjectAPI
- 程式設計師要搞明白CDN,這篇應該夠了程式設計師
- Linux程式設計就該這麼學!Linux程式設計
- 當你學會炒菜的時候,你就學會了大資料大資料
- 物件導向程式設計,看這篇就夠了物件程式設計
- 這些可愛的動物logo設計,你學會了嗎?Go
- 【python】遞迴聽了N次也沒印象,讀完這篇你就懂了Python遞迴
- 看完這篇 Linux 的基本操作你就會了!Linux
- 在Python中實現非同步程式設計,只需要這幾步就夠了Python非同步程式設計
- 【python】裝飾器聽了N次也沒印象,讀完這篇你就懂了Python
- 設計模式你真的懂了嗎?設計模式
- 你離大神級程式設計師只差這幾步程式設計師
- react-redux一點就透,我這麼笨都懂了!ReactRedux
- 搞透 IOC,Spring IOC 看這篇就夠了!Spring
- 剛開始學程式設計?這幾款小工具能讓你事半功倍程式設計
- 簡單幾步讓你的Excel表格變漂亮,學會Excel就這麼簡單!Excel
- 雲原生技術是什麼?看完這篇文章你就懂了
- 還怕Web 安全程式設計學不會?來這裡,準沒錯!Web程式設計
- 新手入門Web前端,你需要克服這幾點困難Web前端
- 如果你不知道這11款常見的Web應用程式框架,就說明你out了Web框架
- 如果你不知道這11款常見的Web應用程式框架 就說明你out了Web框架
- 程式設計幾點建議程式設計
- NGINX 從入門到精通,學會這些就夠了Nginx
- 運維到底是幹什麼的?看完這篇你就懂了運維
- 學Redis這篇就夠了Redis