国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

談一談快速構(gòu)建Java Web開發(fā)框架

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-29 08:36:28

  我在我們應該怎樣看待框架 中,實現(xiàn)了一個JDBC版的Base類,和一個Hibernate版的Base類,取模仿RoR的ActiveRecord,這樣我們編程的時候,只需要實現(xiàn)一個Base的子類,就可以完成CRUD了。

  我的畢設題目是與Rest ,更準確說是與ROA有關的,另外就是在看Spring MVC對于慣例優(yōu)先 (Convention over Configuration,CoC)原則的實現(xiàn)。

  Web架構(gòu)的四個元素

  無論是Rails還是Spring MVC都是MVC實現(xiàn),因此我的研究也肯定是基于MVC模式的。那么分別來關注M,V和C,另外就是將url和C進行映射的Router(或者說是Struts里的映射文件)。

  首先是M,我不想自己編M,那就自動生成,怎么才能自動生成呢,根據(jù)數(shù)據(jù)庫自動生成,而且我生成要是一個ActiveRecord模式的類。所以不是像過去弄個HashMap就能混過去了。之后就是看了ASM3.1和ClassLoader的知識,發(fā)現(xiàn)這是可以實現(xiàn)的。如下:

  先整個測試:

  @Test publicvoidgerneratorClass(){ try{ Mapfields=newHashMap();fields.put("id",1l);fields.put("name","wanxing");EntityGernerator.generateEntity("Student",fields);EntityGernerator.invoke("add");}catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace();} }public void gerneratorClass() { try { Map fields=new HashMap();fields.put("id", 1l);fields.put("name", "wanxing");EntityGernerator.generateEntity("Student",fields );EntityGernerator.invoke("add");} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();}這塊的實現(xiàn)我想了一下,EntityGernerator的generateEntity方法到底只是創(chuàng)建一個class還是連同實例化對象,而其還有invoke方法,這看上去不太對,嗯,它應該是只生成class就結(jié)束使命了。不過以后再迭代吧。

  實現(xiàn)的代碼很簡單,就是利用了ASM3.1,就搞定了。有兩點需要聲明:

  1、可以按需要設定生成類的父類

  2、只能創(chuàng)建類屬性,不能創(chuàng)建方法,因為方法的實現(xiàn)太復雜,用JVM指令寫會死人,不如轉(zhuǎn)向動態(tài)語言了,而且它繼承了有用的父類,就已經(jīng)完成了自己的使命了。

  V和C都可以用通用的,就像用通用DAO一樣。關于V有個特別之處,那就是FrontController,它來調(diào)配各個Controller,依照URI和Controller的Mapping,這符合Roy Fielding博士對于資源的定義:資源是 一種概念上的映射 ——服務器接收到標識符(標識這個映射),將它應用于當前的映射實現(xiàn)(mapping implementation,通常是與特定集合相關的樹的深度遍歷和/或哈希表的組合)上,以發(fā)現(xiàn)當前負責處理該資源的處理器實現(xiàn) ,然后處理器實現(xiàn)基于請求的內(nèi)容選擇適當?shù)膭幼?響應 .在RoR里這叫做Router.另外V中可以根據(jù)HTTP請求返回適當?shù)腜resentation.

  REST與CoC

上一篇:Java賦值運算符與賦值表達式
下一篇:Java編程中影響性能的一些特點

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關注我們
在線咨詢
嘿,我來幫您!
忻州市| 南充市| 陇西县| 会泽县| 永修县| 苏尼特左旗| 东乌珠穆沁旗| 汝阳县| 涿鹿县| 海盐县| 武平县| 山东省| 招远市| 德江县| 寿阳县| 扶风县| 积石山| 竹北市| 大丰市| 南溪县| 鹿邑县| 共和县| 泽州县| 大连市| 辽宁省| 台州市| 安溪县| 泾源县| 建始县| 常山县| 通渭县| 湘潭市| 巴林右旗| 塔河县| 平潭县| 林甸县| 开原市| 垣曲县| 迁西县| 无棣县| 扎鲁特旗|