日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

freemarker三宗罪

系統 1715 0

FreeMarker是Quake Wang推薦我使用的。剛學FreeMarker的時候,發現freemarker真的很棒!簡單易用,功能強大。但是用它做了幾個項目以后開始不爽了。

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

二宗罪:freemarker的map限定key必須是string,其他數據類型竟然無法操作!這一點就不講了,JavaEye上面已經有人抱怨過了。連Webwork的開發人員Pat Lightboy都在抱怨這一點。


三宗罪:freemarker為了編程方便把不可序列化的東西往session里面放!
freemarker支持在頁面里面直接操作Session,request等,例如${Session[...]},方便確實很方便,但是一旦需要做群集,就會報錯。
今天是???問起我這個問題,他在做Tomcat群集的時候發現freemarker報錯,HttpSessionHashModel不可序列化。他修改該類源代碼,讓他實現序列化接口,仍然報錯。我一看,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;??



登時暈倒,這樣的東西還往Session里面放?bad smell!
嚴重警告應用需要往群集上面發布應用的同學們,千萬別用freemarker!

不過瑕不掩瑜,freemarker也是有優點的:

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

2、功能強大
比Velocity強大多了,還支持JSP Tag。不過最有意義的是macro功能,可以自定義常用的macro,實現頁面常規操作的可復用性。

3、報錯信息友好
很多應用服務器的JSP報錯信息是無法定位到源代碼行的。不過freemarker報錯定位很準確,絲毫不差,而且信息豐富,一看就知道怎么回事(雖然那個黃黃的頁面看起來讓人難受)

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

freemarker三宗罪


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 剑川县| 囊谦县| 凌海市| 白山市| 纳雍县| 台南县| 茶陵县| 武夷山市| 陆河县| 思茅市| 从江县| 融水| 白河县| 台东市| 松阳县| 闽清县| 宿迁市| 伊宁县| 长垣县| 怀柔区| 个旧市| 奉新县| 叶城县| 克山县| 开江县| 保德县| 合山市| 大荔县| 晋城| 常山县| 金溪县| 奉化市| 盘锦市| 东宁县| 甘德县| 西乡县| 汤原县| 靖边县| 卢湾区| 民乐县| 石屏县|