整理參考自《劉欣 程序猿》javascript
一、理解瀏覽器/服務器結構 (B/S)
B/S 是從 90年代的客戶端/服務器端發展而來, 共同點都是由一個(或一組)服務器來服務多個客戶端。
差異在於:首先,C/S結構的客戶端多是由不一樣語言編寫的,例如VB,Delphi, PowerBuilder等, B/S結構中瀏覽器成爲了一個通用的客戶端, 程序以Web的方式呈現,不須要安裝,服務器端的升級就意味着全部客戶端的升級,這和C/S相比是個翻天覆地的變化。
其次B/S的訪問協議也標準化爲HTTP(s) ,而不是原來各類各樣的私有協議。
最後B/S結構中的服務器面向全球用戶訪問,而不像C/S那樣僅僅是局域網, 因此壓力更大, 挑戰更大。
二、Web頁面是怎麼組成的?前端
簡單來講就是HTML + CSS + Javascript , 咱們看到的Web界面就是由這三者組成。
HTML負責結構, CSS負責展示, 而Javascript負責行爲。
咱們說的前端開發也主要是作這一塊, 對於前端工程師,須要能理解DOM 模型,以及如何經過javascript(例如JQuery等框架)來操做DOM模型。 java
三、瀏覽器和服務器是怎麼打交道的?程序員
固然是HTTP ! HTTP說穿了就是瀏覽器和服務器聊天是的一種約定, 這個約定確保雙方互相理解。完整的HTTP是很是複雜的,《HTTP權威指南》一書厚達700多頁。其實咱們最經常使用, 也是最重要的也就那麼幾點:數據庫
四、URL 和 代碼的映射後端
理解url 和 代碼之間的關聯, 例如 www.xxx.com?action=login 這樣的url 是怎麼和後端的業務代碼關聯起來的?這樣的規則是在哪裏定義的? 用代碼、註解仍是配置文件?後端的業務代碼該如何組織? 相信如今不會有人把業務邏輯都寫到Servlet當中了, 因此須要不少MVC 框架像Struts , SpringMVC 來組織代碼,讓系統清晰易懂。數組
五、數據的驗證、轉換和綁定瀏覽器
如何保證瀏覽器發過來的數據是符合要求的?緩存
六、Web安全安全
如何防止黑客利用SQL 注入,跨站腳本攻擊, 跨站請求僞造等手段來攻擊系統?
七、數據庫訪問
這一塊是比較麻煩的, 畢竟面向對象(OO)世界和關係(Relational)數據庫之間存在着自然的鴻溝。
對於簡單的應用, 直接寫點JDBC就夠用了,只須要掌握Connection, Statement , Resultset這三個基礎。
複雜點的須要用O/R Mapping 框架來搞定,例如 Hibernate, MyBatis ,還有RoR的ActiveRecord。
這其中比較棘手的就是表之間的關聯, 就是所謂的一對多, 一對一, 多對多這樣的關係, 如何在面向對象的世界裏描述。
擴展開去,還須要處理鏈接池, 事務,鎖 等各類煩人問題。
八、用什麼技術來生成Web頁面?
這裏說的Web頁面就是第2點中的頁面,包括HTML, CSS, Javascript。
能不能直接用Servlet的PrintWriter 直接輸出HTML ? 固然能夠,只是之後就沒有人看懂了。
如今用來建立Web頁面的技術多如牛毛:例如 JSP, Velocity, Freemaker, Groovy 等等, 他們都有一個共同點: 模板技術。
說白了就是有一個HTML的模板, 裏邊能夠嵌入代碼, 這個模板在運行時(例如在Tomcat當中)就能夠根據輸入的不一樣而生成不一樣內容的Web界面了。
不管哪一種模板,都須要面對一個重要問題:如何展現從業務邏輯層發送來的數據? 這一步驟其實和第5步中的數據綁定有密切關係。由於這一步須要肯定諸如user.name , user.password這樣的字段名稱。
九、如何把對象變成XML或者JSON字符串?
因爲AJAX以及手機端的存在,對於一個URL的請求, 他們要求的返回值一般不是HTML頁面, 而是XML或者JSON數據, 此時須要有框架把對象轉化成相應的字符串。 搞定了Web這些基礎的東西,在公司裏作一個Web程序員應該不在話下了, 接下來須要學習的就是像高併發,緩存,搜索,分佈式等高級的內容了。