學習java的同學注意了!??! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986 我們一起學Java!
首先談談Java Web需要掌握哪些東西。這里是一些知識點的搜集,暫不做詳細說明,歡迎各位博友補充指正。
Servlet是運行于服務端的java程序,一般實現自己的Java服務端應用都從HttpServlet類繼承,然后實現自己的init | doGet | doPost | service方法。Servlet的生命周期從其加載開始,首先執行一次初始化,調用init方法,之后便可運行自身的服務,當生命周期結束時,調用destroy方法回收資源,結束服務。
僅了解原理當然是不夠的,還要實戰能力,在IDE中寫寫簡單的代碼誰都會,然而真正讓一個程序能夠運行起來也還需要點其他的東西,這里我指的是Servlet的容器。servlet的容器有很多,常用的以Tomcat為例,安裝好Tomcat后,在開發時必須包含進Tomcat的lib。IDE確實慣壞了好多人,目錄如何組織,程序如何編譯、如何部署這些問題都被IDE屏蔽掉了,如果要對整體有比較透徹的了解,建議一切從命令行動手。
具體可參考:《Servlet與jsp核心編程》。
Java Web開發的用到的框架之多簡直令人發指,而且因為版本的更新換代導致的問題也是層出不窮。然而這也是Web技術不斷演化的結果,要么選擇接受,要么引領節奏。
Spring是一個強大而又“輕量級”的Java開發框架,之所以打引號是因為感覺并不是那么輕量。Spring的主要目的在于簡化Java應用開發,以配置方式代替硬編碼方式的編程,模塊解耦,其架構如下圖所示。包括了數據訪問、遠程通信、AOP、核心容器等部分。
Figure 1 Spring體系架構
Spring的核心主要有三點:
IoC:反轉控制。反轉控制就是指將控制權由類內部抽離到容器,由容器類的實例化及動作進行配置管理。
Dependency-injection:依賴注入對象的依賴關系由負責協調系統中各個對象的第三方組件在創建對象時設定。對象不自行創建或管理它們的依賴關系,依賴關系被自動注入到需要它們的對象中。通過參數和配置能夠體會出“注入”這個詞在這里有多形象。依賴注入的最大好處就是松耦合。不需要再類內部去和特定的類進行綁定,而是將一些依賴關系以參數的形式注入到類內部。
aspect Oriented Programming:面向切向編程在軟件開發中,分布于應用中多處的功能被稱為橫切關注點。這些橫切關注點往往和業務邏輯是相分離的,將這些橫切關注點與業務邏輯相分離正式AOP要解決的。AOP編程能夠讓遍布在應用各處的功能分離出來形成可重用的組件。是高內聚低耦合的又一個體現,將通用實現模塊與核心業務模塊相分離。
具體參考:《Spring In Action》
數據持久化框架其實也有很多,需要掌握的不僅是Hibernate,只是因為Hibernate在以前的企業級應用中用的比較多而已,另外MyBatis也占有相當重要的份額。Hibernate是一個全自動的持久化框架,并不是那么方便,所以很多開發者更傾向于使用MyBatis,淘寶就是這樣。
Hibernate的工作流程:首先通過configuration對象讀取配置文件;解析映射信息,創建StandardsessionFactory;調用openSession打開session;創建事務transaction,之后進行持久化操作;完成后提交事務,關閉session,關閉sessionFactory。
Figuer 2 Hibernate工作流程
要理解ORM的理念:ORM意為對象關系映射。是一種為了解決程序的面向對象模型與數據庫關系模型互不匹配問題的技術。
hibernate中比較重要的是對象的4種狀態轉換及條件。分別是transient瞬時態、persistent持久態、detached游離態和移除態,狀態轉換如下:
Figure 3 Hibernate對象狀態轉換圖
Struts出現的最早,也是思想提供者之一,從名字就可以看得出其重要性,其設計目的是為了簡化Java開發,統一事務切面化。
Struts最關鍵的地方在于Action的執行,攔截器的原理、valuestack及OGNL。
具體參考:《Struts in Action》
這個不用多談,太重要了,作為Web開發者,如果不特別熟悉Http將會是一件很麻煩的事。
Http的報頭格式Http協議的各種返回碼是什么意思https如何實現B/S架構的工作原理Cookie和Session的原理restful API這里就不列舉23種模式了,個人覺得純粹看書學習《設計模式》并沒有什么用,要在實際應用中碰到,并且多問幾個為什么,而且自己寫代碼時能有使用設計模式的意識才能對各種設計模式有更深的領悟。
當然Web開發遠不止這么些東西,我這里暫時也只好先列些重要的。應用開發后,還有部署的問題,因此又會涉及CDN和負載均衡等問題就更復雜了......
另外在Web開發的過程中,要養成良好的開發習慣,比如開發之前能夠熟練地使用UML類圖,交互圖等,這將避免你犯很多錯誤。感謝面試官輕虐,自己覺得還有許多不扎實的地方,還需要繼續努力才能對得起這次機會。
學習Java的同學注意了?。?! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986 我們一起學Java!
新聞熱點
疑難解答