寫一個工具生成數據庫實體類java
項目地址在:github.com/hjx60149632… 。git
測試代碼在:github.com/hjx60149632… 。github
寫了好幾年的java程序,基本上每一個項目都有用到mvc的框架,多是spring mvc也多是struts。這些框架怎麼用相信你們也都很熟悉了,可是有沒有想過本身寫一個屬於本身的mvc的框架呢?有沒有想過爲啥你請求一個http的地址,你的一個class裏的方法就能被執行了呢?如今我們開始寫一個mvc框架吧。spring
由於2年前本身寫過一個mvc的框架,比較爛,可是也能用。因此大體須要的知識點我寫在下面,再寫一個應該也仍是這些東西。數據庫
反射json
基本上要寫點框架性質的代碼就都須要用到反射的知識。mvc
json,xml之類的配置文件的解析框架
或多或少均可能須要一點。jsp
註解方面的工具
若是不想使用配置文件的話,自定義註解是確定要有的。
servlet
由於http的入口就是這一個,確定要用到。若是你要是要用filter,那你就要比較熟悉filter。
asm
這個是由於要獲取方法上的參數名稱,使用反射取參數名稱通常都是arg0,arg1這樣的,除非有特別的配置。
別的應該沒了
大體說一下要寫一個mvc我們都須要乾點啥。
你須要一個 地址和一個方法的映射(這個地址但是一個http的地址,也能夠單純的就是一個隨意的字符串或者別的東西,由於這裏寫的是mvc框架,因此就肯定它是一個http的請求地址)。
這個映射關係能夠先用一個java對象保存起來,以後咱們能夠根據不一樣的形式來獲取到這些數據並填充這個對象。這些數據或許是經過註解,或許是xml文件,也多是json文件來獲得,只須要根據不一樣的形式來寫不一樣的實現代碼就行了,最終只要獲取到這個映射關係就好。
請求地址與方法的映射建立完成以後,咱們須要知道這個方法裏面都有那些參數,每一個參數的名稱和參數類型是什麼。
這是使用了asm框架。不瞭解的的同窗能夠搜一下,他是一個處理java字節碼的工具,各大知名框架裏都有用到,很是強大。我在這裏用這個的主要緣由是使用它獲取方法的參數名稱,由於反射的話沒有特殊配置是取不到正確的名稱的,可是我又不想有特殊配置~~~
由於咱們是經過http請求來調用java的方法,因此咱們要把http請求中的參數取出來並轉換成爲對應方法中實際的參數類型。好比一個方法的入參是 兩個int類型的數據,咱們就要將http請求中的String類型的數據轉換成爲int類型。
這一步咱們不須要先直接處理http的請求,先用一些String類型的數據作一些測試便可。處理http請求的地方能夠在後面再寫。
這裏沒什麼好說的,反射中的知識點。
這裏開始寫一個請求的入口了,spring使用的入口是一個 servlet,struts用的是一個filter,我在這裏也用一個servlet。
這裏咱們須要定義一個配置文件,用來描述上面的映射關係。若是要使用註解的形式,還要自定義一些註解,並寫一個包掃描的來處理這些註解。總之就是要吧上面定義的 請求地址與方法映射 的這個對象數據填充起來。
而後將每次請求過來以後,根據不一樣的請求路徑,獲取其映射的方法。以後執行這個方法。
這裏可能有點麻煩,由於要能適應到不一樣的視圖解析之類的,多是jsp,freemarker,或者別的啥的。須要好好設計一下代碼。
由於我本身尚未寫到,因此先打算以字符串形式直接返回。
這個東西我剛開始寫,代碼在:github.com/hjx60149632… 。
至於何時寫完?這個就要看公司裏忙不忙了,可是基本上能保證這個是能寫完的。
博客的話通常我是本身先寫一部分代碼,而後在根據寫代碼的思路寫一點博客,可能寫着寫着就和以前的不太同樣了。不過我儘可能吧我本身的思路說清楚。
如今就開始寫吧~
嗯。下一篇開始具體更新每一步怎麼寫。