JSTL標(biāo)簽是SUN帶頭與apache社區(qū)合作的產(chǎn)品,可惜從一出現(xiàn)就已經(jīng)是一個過時的技術(shù)。SUN的軟件架構(gòu)師似乎缺乏從顧客角度考慮技術(shù)取向的能力,與微軟相比差之千里。就標(biāo)簽技術(shù)而言,它的目的是令菜鳥中的菜鳥變得可以寫JSP,還是令一般程序員寫JSP顯得更方便,更好管理?顯然,SUN的那位笨蛋架構(gòu)師沒有想明白這個道理(越是看得多它的文檔介始,越是覺得那個家伙是個大笨蛋),把SUN數(shù)千名天才工程師的才智白白浪費(fèi)了。
所有人都已經(jīng)知道,JSP出現(xiàn)的目的就是為了讓程序員更方便地寫簡單的servlet,復(fù)雜的多功能的servlet是不容易用JSP實(shí)現(xiàn)的。而JSP希望讓菜鳥寫java動態(tài)頁面的目的并沒有達(dá)到,這條,還不如ASP/PHP。在JSP中散布底層業(yè)務(wù)邏輯既不便于對象組織,也不但于代碼管理,非常低效。這是發(fā)展出javaBean和標(biāo)簽技術(shù)的原因;而JSTL呢,它的基本客戶邏輯竟然是為了幫助使用者更方便地把底層代碼散布在JSP上!?包括數(shù)據(jù)庫連接?!所以這東西是一個新的技術(shù)實(shí)現(xiàn)落后目標(biāo)的產(chǎn)品,面對市場需求整整慢了一拍。
唯一有點(diǎn)價值的是它的循環(huán)邏輯,這條還是很有用的。只不過能夠?qū)崿F(xiàn)的不止它一個,struts.logic標(biāo)簽就是很好用的一種,而且不用指向http:/sun.xxxx/core什么的,事實(shí)上JSTL能夠提供的struts:logic也能夠提供。實(shí)際上struts幾個標(biāo)簽庫中也就logi,有點(diǎn)價值,bean也可以,其他的html是純粹和FormBean為核心的MVC設(shè)想框架提供的。即使這樣,就實(shí)用性而言,strutslib仍比sun實(shí)用得多。
struts標(biāo)簽庫不能很好地面向數(shù)據(jù)對象,這是它的不足,hanva標(biāo)簽就是為了補(bǔ)充這個不足。結(jié)合struts的logic庫,使用hanva標(biāo)簽可以達(dá)到在jsp中聲明和接收變量,可以實(shí)現(xiàn)多種邏輯,可以直接從底層獲得持久性非持外性的數(shù)據(jù)對象,處理并輸出——一個程序大致也就只有這些東西做的。特殊的東西再特殊處理,直接完全使用標(biāo)簽調(diào)用下層服務(wù)daemon程序完成絕大部分功能,已經(jīng)可以做到了。
下面的論壇示例刪除程序是這樣的一個功能,可以處理任何的實(shí)現(xiàn)了hanvaDAO接口規(guī)范的表數(shù)據(jù)的刪除,包括對其相關(guān)數(shù)據(jù)記錄的同步處理。它接收一個對象類型(ent),及ID,判斷這個對象(行記錄)是否存在,然后判斷它的sourceid和id是否一致(是主貼還是跟貼),如果是主貼,就把它的從貼一起刪除,否則就只刪除當(dāng)前貼,然后返回原來調(diào)用的一頁,如果出錯,就轉(zhuǎn)向到errors.jsp頁,顯示出錯信息。
<entity:present ent="${param.ent}" oid="${param.oid}" id="thent" nexto="${header.referer}">
<%--如果記錄存在就繼承內(nèi)嵌邏輯,把該記錄定為ident名--%>
<%--判斷sourcid與id是否一致--%>
<logic:equal name="thent" value="${thent.sourceid}" property="id">
<%--取所有主從貼,集合定名為theobjs--%>
<entity:
新聞熱點(diǎn)
疑難解答
圖片精選