黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

freemarker三宗罪

系統(tǒng) 1907 0

FreeMarker是Quake Wang推薦我使用的。剛學(xué)FreeMarker的時(shí)候,發(fā)現(xiàn)freemarker真的很棒!簡(jiǎn)單易用,功能強(qiáng)大。但是用它做了幾個(gè)項(xiàng)目以后開始不爽了。

一宗罪:freemarker的變量必須有值,沒有被賦值的變量就會(huì)拋出異常,那個(gè)黃黃的freemarker出錯(cuò)頁(yè)面,真是讓人看了太難過了。
freemarker的FAQ上面冠冕堂皇的說(shuō),未賦值的變量強(qiáng)制拋錯(cuò)可以杜絕很多潛在的錯(cuò)誤,如缺失潛在的變量命名,或者其他變量錯(cuò)誤。但是實(shí) 際的效果是:帶來(lái)的是非常大的編程麻煩,程序里面幾乎所有可能出現(xiàn)空值的變量統(tǒng)統(tǒng)需要加上${xxx?if_exists},有些循環(huán)條件還需要寫if判 斷,這樣不但沒有杜絕應(yīng)該杜絕的錯(cuò)誤,反而極大增加了編程的麻煩。

二宗罪:freemarker的map限定key必須是string,其他數(shù)據(jù)類型竟然無(wú)法操作!這一點(diǎn)就不講了,JavaEye上面已經(jīng)有人抱怨過了。連Webwork的開發(fā)人員Pat Lightboy都在抱怨這一點(diǎn)。


三宗罪:freemarker為了編程方便把不可序列化的東西往session里面放!
freemarker支持在頁(yè)面里面直接操作Session,request等,例如${Session[...]},方便確實(shí)很方便,但是一旦需要做群集,就會(huì)報(bào)錯(cuò)。
今天是???問起我這個(gè)問題,他在做Tomcat群集的時(shí)候發(fā)現(xiàn)freemarker報(bào)錯(cuò),HttpSessionHashModel不可序列化。他修改該類源代碼,讓他實(shí)現(xiàn)序列化接口,仍然報(bào)錯(cuò)。我一看,HttpSessionHashModel包含的屬性:

Java代碼 ? 收藏代碼
  1. private ?HttpSession?session;??
  2. private ? final ?ObjectWrapper?wrapper;??
  3. ??
  4. //?These?are?required?for?lazy?initializing?session ??
  5. private ? final ?FreemarkerServlet?servlet;??
  6. private ? final ?HttpServletRequest?request;??
  7. private ? final ?HttpServletResponse?response;??



登時(shí)暈倒,這樣的東西還往Session里面放?bad smell!
嚴(yán)重警告應(yīng)用需要往群集上面發(fā)布應(yīng)用的同學(xué)們,千萬(wàn)別用freemarker!

不過瑕不掩瑜,freemarker也是有優(yōu)點(diǎn)的:

1、易學(xué)易用
我是看了一天文檔就用得挺熟練了,freemarker文檔寫得太好了,例子豐富,照做一遍全都會(huì)了。

2、功能強(qiáng)大
比Velocity強(qiáng)大多了,還支持JSP Tag。不過最有意義的是macro功能,可以自定義常用的macro,實(shí)現(xiàn)頁(yè)面常規(guī)操作的可復(fù)用性。

3、報(bào)錯(cuò)信息友好
很多應(yīng)用服務(wù)器的JSP報(bào)錯(cuò)信息是無(wú)法定位到源代碼行的。不過freemarker報(bào)錯(cuò)定位很準(zhǔn)確,絲毫不差,而且信息豐富,一看就知道怎么回事(雖然那個(gè)黃黃的頁(yè)面看起來(lái)讓人難受)

總之,用與不用,還是看大家衡量了。我是不想再用freemarker了,準(zhǔn)備回歸JSP Tag了。

freemarker三宗罪


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論