jhtm 入門級框架

opensourceKenty發表於2007-08-09
jhtm 入門級框架

關於jhtm的設計理念
“儘量相容HTM,並且使HTM程式碼和邏輯程式碼分離”。
它的工作模式就是將HTM程式碼進行標記分割,並作為引數使函式能夠呼叫!
只要懂得如何編寫最基礎的JAVA程式碼,就可以讓它工作的很好!

和STRUTS之類的WEB框架對比所具有的優勢
1、jhtm不需要寫專門的XML
這是在我一開始就這樣設想的!
2、jhtm是非常小巧的框架
僅僅9K,但並不意味著控制能力的薄弱!
3、製作簡單,開發速度比較快
就像編寫ASP或JSP那樣,將各個HTM塊作為引數嵌入到程式碼中!而且可以避免了在邏輯程式碼中夾雜HTM程式碼!
4、HTM程式碼和操作程式碼完全分離
HTM程式碼不能包含任何服務端執行程式碼,這樣可以避免修改HTM的時候破壞邏輯程式碼!
雖然可能將標記程式碼誤刪,但相對於直接刪除邏輯程式碼來說,這將更加安全!
5、相容HTM,修改時不會對邏輯程式碼產生破壞
僅僅需要重新檢查和配置HTM
6、第二個版本安全性相對較高
在此次測試中我使用了TOMCAT做為伺服器,當將修改JAVA檔案編譯成功後,並沒有成功的呼叫到
新編譯好的CLASS檔案!僅當重新啟動TOMCAT後才能看到剛編譯後的結果!
7、非入侵式框架
它可以和JSP,HTM等一起工作!它可以很好的與各框架協作!
8、它沒有花哨的功能
你應該選擇只需要的那些功能,而不是把用不著的功能一起捆綁給你!
9、相對其他框架,學習速度更快
您如果讀到如何使用jhtm時,將驚訝的發現,它竟是如此的簡單!
10、有著相對較高的重用性及程式碼間的互動性
你可以將邏輯程式碼分的很詳細,以便重複呼叫。而且邏輯程式碼都在一起,這樣就有一個互動性。

關於jhtm的2個版本
2個版本都不需要寫XML配置的。但只能任選其一作為WEB框架。
第一個版本jhtm.jar 是一個.jhtm描述配置檔案加上一個對應的類檔案所組成。(既.jhtm+.class)
第二個版本jhtmclass.jar 是一個包含.jhtm描述配置的類檔案加上一個多對應的類檔案所組成。(既.class+.class)

最簡單的使用例子

aa.jhtm(可放在專案的對應目錄下。假設在根目錄)

<h1>first1</h1><jhtm:doFirst><jhtm:arg/>acccaa1 <jhtm:arg/> <h2>second</h2>
<jhtm:arg/>
<h3>thread</h3></jhtm:doFirst>aabbccddeeff1

aa.class(WEB-INF\classes\jhtm目錄下)

package jhtm;//儲存為相對應的包中

import javax.servlet.* ;//如果需要可以加
import javax.servlet.http.* ;//如果需要可以加
import opensource.Kenty.jhtm.DoClass;//必須包含

public class aa //class檔名必須和jhtm檔名一致
{
public String charset="gb2312";//要輸出的編碼,預設為GB2312
HttpServletRequest request;//可選
HttpServletResponse response;//可選
/**
*public StringBuffer doFirst(StringBuffer []args, DoClass doclass)
*必須返回StringBuffer 型別
*doFirst為標記的函式名稱
*StringBuffer []args 相關的引數列表,和<jhtm:arg/>相對應
*doclass,必須,主要為了獲得request和response
*/
public StringBuffer doFirst(StringBuffer []args, DoClass doclass)
{
this.request=doclass.getHttpServletRequest();//獲得request
this.response=doclass.getHttpServletResponse();//獲得response
/*try
{//可選 跳轉,像一般的使用方法一樣。
request.getRequestDispatcher("index.jsp").forward(request,response);
}
catch(Exception e){System.out.println(e);}*/
StringBuffer s=new StringBuffer("<h4>dofirst<h4>");
for(StringBuffer s2:args)
s.append("<h4>"+s2+" is do ok</h4>");
return s;
}
}

最後在WEB.XML中加入
<filter>
<filter-name>action</filter-name>
<filter-class>opensource.Kenty.jhtm.ActionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>action</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
將第一版本的jhtm.jar複製到WEB-INF\lib目錄下,啟動tomcat在位址列裡輸入:路徑名/aa.jhtm即可看到效果

在2個版本的目錄下有詳細的使用說明及DEMO。

應該注意的問題
由於其重複性比較強,所以特地需要注意
1、jhtm和類對應的檔名一致,public class xx 也要一致,並且注意包名。
2、需要注意public StringBuffer 函式名稱(StringBuffer []args, DoClass doclass)
3、函式名稱要與標記相對應
4、函式開始標記和結束標記要對應
5、注意arg引數列表,應該要明確知道傳進來的順序及內容!
6、demo.jhtm的處理arg中你已經看到了不明白arg引數列表所造成的麻煩!所以請配置好HTM並要知道arg引數列表傳進來的順序及內容!
應該將s.append(args[3]);放在s.append("<a href='./demo.jhtm?id=1'>增加一行</a>");之前就可以了。
7、不要有多餘的空格出現。</jhtm:end>是推薦的,而</jhtm: end >可能出錯!

對此出現的未知BUG感到抱歉!如有BUG或者建議、意見可以傳送EMAIL致opensourcejhtm@gmail.com或opensourcejhtm@yahoo.com.cn。我會及時的回覆您的來信。
此框架遵循GNU GPL(GNU General Public License 通用公共許可證)協議!
著作權所有(c) 2007.7 Kenty
允許每個人複製和散佈本授權檔案的完整副本。
下載
http://www.javatx.cn/upfiles/club/20078/2007080919562292527.rar

相關文章