jhtm 入门级框架

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

很有创意的构想,顶一下。

Jsp简单,但是代码多了不容易维护,如果克服缺点,弘扬优点,是一个方向。