話說工欲善其事必先利其器,一個(gè)優(yōu)秀的web框架可以說是程序員的利器,Spring框架應(yīng)是其中牛角,有了它程序員可以更好的關(guān)注業(yè)務(wù)和功能的實(shí)現(xiàn),編碼水平瞬間被提升了一個(gè)等級(jí),然而在每天使用框架的時(shí)候,很多參加JAVA培訓(xùn)的同學(xué)會(huì)好奇或者迷惑,為什么它能夠運(yùn)行起來?為什么僅是添加一個(gè)注解就能夠?qū)⒁粋€(gè)實(shí)例賦值給一個(gè)被注解的變量?那些聽起來高端的概念(如:IOC、DI、AOP等)是如何實(shí)現(xiàn)的呢?
本文我們將通過實(shí)現(xiàn)一個(gè)簡單的JavaWeb框架來理解框架的工作原理和IOC等概念的實(shí)現(xiàn),暫且叫它fine。
首先給出JavaWeb框架工作流程:
下面是具體實(shí)現(xiàn):
1.創(chuàng)建一個(gè)maven項(xiàng)目實(shí)現(xiàn)fine框架創(chuàng)建mavne項(xiàng)目添加相關(guān)依賴,需要的包大致有:servlet、jsp、jstl、log4j、mysql、json、等以及一些工具包,如果你不打算使用視圖層可以忽略jsp和jstl的依賴包。
2.編寫加載配置項(xiàng)的工具類ConfigHelper。加一些需要的配置變量。
3.開發(fā)類加載器ClassUtil。在程序啟動(dòng)之初加載基礎(chǔ)包下所有類。
4.編寫注解類,比如@Action(接受http請求的方法),@Inject(依賴注入)等。注解的概念在書《Java編程思想》中介紹的很清楚,是一種標(biāo)記,本框架中的注解就是為了在運(yùn)行中框架能夠讓程序知道被注解的類、方法或者變量有哪些。
5.實(shí)現(xiàn)Bean容器ClassHelper。利用反射機(jī)制,將上一步加載的類實(shí)例化成對象,并將這些對象放入一個(gè)靜態(tài)的Map中,此Map就是Bean容器,它記錄了類與對象的關(guān)系,以后需要單例的對象時(shí)就從Bean容器中取出。
6.實(shí)現(xiàn)依賴注入,也就是IoC(控制反轉(zhuǎn)),框架來控制對象之間的依賴關(guān)系,將一個(gè)對象賦值給一個(gè)加了相應(yīng)標(biāo)記(注解)的變量。具體實(shí)現(xiàn)過程是將第4步中的Bean容器(Map)做遍歷操作,查看當(dāng)前類的成員變量是否帶有Inject注解,若帶有該注解,就從Bean容器中取出對象,賦值給當(dāng)前成員變量。
7.實(shí)現(xiàn)Controller層,通過一個(gè)類ControllerHelper統(tǒng)計(jì)請求路徑與方法的對應(yīng)關(guān)系。通過反射獲取帶有@Action注解的方法,獲取@Action注解中的請求表達(dá)式(請求路徑信息),封裝一個(gè)請求對象(Request)與處理對象(Handler),將Request與Handler建立映射關(guān)系,處理請求。
8.實(shí)現(xiàn)一個(gè)請求轉(zhuǎn)發(fā)器,處理所有請求,從HttpServletRequest對象中獲取請求路徑與參數(shù),將請求路徑與ControllerHelper統(tǒng)計(jì)的請求路徑做對應(yīng)關(guān)系,并將參數(shù)傳入ControllerHelper中的相應(yīng)方法。
至此,一個(gè)能夠處理http請求的框架終于開發(fā)完成,其中還有很多不足之處,但是通過此框架能夠深入的理解現(xiàn)在工程中使用的優(yōu)秀框架的工作原理,有利于我們更好的在實(shí)際中排查問題,甚至定義一些特定規(guī)則優(yōu)化現(xiàn)有框架。
框架相關(guān)視頻教程
struts入門教程:http://www.bjpowernode.com/v36/
hibernate入門教程:http://www.bjpowernode.com/v39/
Java spring框架教程:http://www.bjpowernode.com/v38/
全套免費(fèi)ssm整合視頻教程:http://www.bjpowernode.com/v92/
以上就是長沙中公優(yōu)就業(yè)Java培訓(xùn)機(jī)構(gòu)小編介紹的“如何自學(xué)Java web框架”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)內(nèi)容
深入淺出的Java學(xué)習(xí)路徑,Java練手項(xiàng)目學(xué)習(xí)
新手Java的三大框架ssh學(xué)習(xí)
JavaSSH框架教學(xué)視頻