上回有一段時(shí)間,做了個(gè).net的項(xiàng)目, 于是就上網(wǎng)查了一些.net的開(kāi)源框架,發(fā)現(xiàn)很多都是Java下的開(kāi)源框架改寫(xiě)的。而正如spring在Java語(yǔ)言的地位,.net下比較火的開(kāi)源框架蠻多是Castle出的??戳艘粋€(gè)叫MonoRails的MVC框架,是從ROR下吸收了一些思想。大致看了一下,發(fā)現(xiàn)還是有很多特性是比較好的。
于是有感而發(fā),就在Java下也做了一個(gè)類(lèi)似MonoRails的框架,大致是具有了以下的一些特性:
Webwork的Interceptor機(jī)制。
具有IOC,用Setter的注射法,不用配置文件,加annotation即可
而比較主要的就是,一次請(qǐng)求的流程是,servlet自動(dòng)根據(jù)請(qǐng)求尋找以名字匹配的Model和Control,將參數(shù)和值注入Model中,轉(zhuǎn)到Control去處理,再根據(jù)Control的結(jié)果去找相應(yīng)的頁(yè)面。而這里有些是從MonoRails學(xué)來(lái)的特性:缺省的,頁(yè)面的文件名就是Control中的方法名,頁(yè)面所在的文件夾就是Control的類(lèi)名。這樣就省了很多配置和寫(xiě)跳轉(zhuǎn)結(jié)果的代碼。
如果url中請(qǐng)求的方法名在這個(gè)Control中不存在的話,就經(jīng)過(guò)interceptor后直接去找頁(yè)面,也就是說(shuō),不經(jīng)過(guò)Control處理了。
還有一點(diǎn),很爽的就是Layout的功能:在Control里面的方法加個(gè)Annotation,Layout,Layout寫(xiě)上頁(yè)面框架的文件名,則每個(gè)跳轉(zhuǎn)出來(lái)的頁(yè)面,自動(dòng)內(nèi)嵌到頁(yè)面框架中。這點(diǎn)就有點(diǎn)類(lèi)似sitemesh了。
這個(gè)MVC框架做完后,大致就這些功能??上?,這個(gè)框架就是一個(gè)自己寫(xiě)著好玩的框架,并沒(méi)有用在實(shí)際的開(kāi)發(fā)項(xiàng)目中,如果有機(jī)會(huì)的話,還真希望將這個(gè)框架做完整,到網(wǎng)上開(kāi)源。

文章來(lái)源:
http://blog.csdn.net/Wingel/archive/2006/11/26/1414832.aspx