JSP中JavaBean与Tag Library大讨论! (100分)

  • 主题发起人 主题发起人 delphiasp
  • 开始时间 开始时间
D

delphiasp

Unregistered / Unconfirmed
GUEST, unregistred user!
JavaBean技术是JSP技术的重要部分,可以实现代码的可重用,
保护源代码,提高开发效率。“掌握JSP编程的关键一点在于开发出
漂亮的Bean构件”。
那么Tag Library呢?它同样也是实现代码的可重用,在Web开发
中提供自定义的标记。那么Tab Library是否是通过XML技术来扩展JavaBean
技术呢?引用孙老师的话“可以说如果不使用Tag Library,就等于到了中国
而没有登上长城。”
从我个人的观察和感受来看,它们在结构上有一定的相似性,从存放在
目录上看也大致相同,具有一大体一样的目的。
从我个人的角度来看,还有一定的迷茫。所以请大家一同来讨论一下
这两者的的相同与区别?!

再次将问题提前!
 
高手不在,帮你提前
 
随便说两句吧,仅供参考:
一、Server-side JavaBeans是不可视构件,它们应该用来维护会话状态和一些业务信息。
以大富翁为例,就可以用bean来保存当前用户的一些状态,如我现在的状态是
“环顾四周←对帖冥想←题海泛舟”,这些东西用tag来保存,显然是不当的。
而Tags主要用来包装JSP page里的一些aciton,它们应该用来隐藏一些一般性功能
以产生动态内容和控制JSP page的运行流程。实际上,JSP规范已经提供了6个标准action.
在决定用Tags,可以和这些标准action做一下类比。
二、相比JavaBeans 来说,JSP tags对它的JSP运行环境知道得更多一些,它可以直接利用
page context 和servlet context 等。
三、用JavaBeans就肯定要用到scriplet,而用JSP tags可以根本不用到scriplet,
这样的JSP更加简洁、易于理解和维护。
四、象JSP规范里说的,Tag Libraries are particularly
useful to authoring tools because they make intent explicit and the parameters expressed in
the action instance provide information to the tool.
 
:eguy
"JSP tags可以直接利用page context 和servlet context"是指tags放在jsp中使用,
继承TagSupport的java程序 可自动侦察到pageContext,而不用将jsp中pageContext放入
java程序中.是吗?
 
to sphinxe:可以这样理解,在继承TagSupport的java程序中不需要生成pageContext对象,
可以直接利用JSP中的pageContext ,如同在jsp中的scriplet里的java代码一样。
 
转了一圈,在<a href=http://202.120.85.61/delphibbs/DispQ.asp?LID=324365>讨论</a>
就有很精彩的贴子。
我把部分内容copy过来一下:
来自:yysun 时间:00-9-19 22:23:20 ID:341975
CJ, 我正打算写个文章,就是时间不够用啊。
先给文章的核心思想吧,假如您需要在网页中把一个数字转换为人民币大写怎么做?
JSP + JavaBean 的方法:
1. 做个 JavaBean class: RMBConvertor
2. JSP 中
<jsp:useBean id="RMB" scope="page" class="mytools.RMBConvertor" />
<%=RMB.getResult(11.5)%>
JSP + Tag 的方法:
1. 做个 Tag class: BigRMB
2. JSP 中
<%@ taglib uri="BigRMB" prefix="BigRMB" %>
<BigRMB>11.5</BigRMB>
然后作些功能扩展,例如 <BigRMB>11.5 * 0.5 + 120.4 </BigRMB>
仔细看看这些语法,您就会看到 Tag 用起来过瘾得多吧 ...


--------------------------------------------------------------------------------
来自:Crane 时间:00-9-19 23:12:58 ID:342029
孙老师:
1我作了一个Tag library的PowerPoint(30页),包括XML的内容,是否可以上传到
大富翁。
2我现在为首信(首都信息发展有限公司)作HFC网的Java网管程序,不知美国现在
HFC网的情况如何。
3过些日子要给114查号台作网上的全国通查,我觉得用Mobile Agent可能会好一些
但不知国外有没有开始用这个技术。
4我学Java已经1个多月了并完成了一个网站,确实很象VC,但是好象比VC还要博大精
深,如果只作EJB,CORBA,JSP,servlets是否还要学AWT,Swing,JFC等我现在还一点不懂
的东西,这个月的信息量简直太大了,我现在几乎天天作“英语阅读”,太痛苦了(四
级我已经过了:(〕。
5。希望您能经常上大富翁的JAVA板块。
6. 我还有一年毕业,不知毕业论文是不是现在就得开始作了。
7. 在国外,一般用什么JAVA开发环境,用什么写文档?
问题太多了,已经不好意思问了………………………
CJ, 语法结构上 JSP+JavaBean 与 ASP+COM 差别不大。
而 Tag 完全改变了语法结构,封装得更好,感觉舒服多了。
Tag 支持 相互引用、对象传递、嵌套、遍历 等功能,又是 XML 语法,
网页结构复杂时会体现出优点,再给个例子:
<%@ taglib uri="delphibbs" prefix="delphibbs" %>
<delphibbs:login userType="0">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>JSP 大富翁: Nested Tag &amp;
Iteration Tag</title>
</head>
<body>
<hr>
页码:<delphibbs:countq />
<hr>
列表<br>
<delphibbs:listq>
<%=qid%><br>
<%=subject%><br>
<%=user%><br>
...
</delphibbs:listq>
<hr>
页码:<delphibbs:countq />
<hr>
</body>
</html>
</delphibbs:login>


--------------------------------------------------------------------------------
来自:CJ 时间:00-9-23 21:17:02 ID:347017
给我的感觉是:和HTML结合的更紧密,更易读,是的HTML的扩展一样,实际上,这样的技术
给了用户自己扩展HTML的能力,我理解有问题吗?


--------------------------------------------------------------------------------
来自:yysun 时间:00-9-23 21:55:57 ID:347064
HTML有两部分: 界面 + 程序, ASP, JSP 把两者和在了一起.
搞界面的人,一不小心就把程序部分弄乱了,
搞程序的人觉得因为界面颜色变了而修改程序真无聊.
Tag 就是用来解决这个矛盾.


------------------------------------------------------------------------------
来自:yysun 时间:00-9-24 21:55:27 ID:347812
Tag 不是给用户的,Tag 的解释/执行在服务器端完成,客户端浏览器得到的是纯 HTML.
用 Delphi 编程很爽的原因之一是其 Component,
而给 HTML 编程带来了类似 Component 的概念和结构.
稍微解释一下,上面给出的例子,在 delphibbs Tag Lib 中,有3个 Tag
login, countq 和 listq
login 用户验证,可设置参数type=0不验证, type=1需要验证, type=2需要斑竹,
type=3需要yysun
用户验证后得到的用户名,可以保存在 session 中.
countq(统计问题个数) 和 listq(查询问题) 必须嵌入login, 它们同时可设置参数例如:
<delphibbs:countq query=""(关键词), type="1|2"(待答/已答), room="?"(分类)>
<delphibbs:listq query=""(关键词), type="1|2"(待答/已答), room="?"(分类),
page="2"(页码)>
listq 是遍历类型, 每次得到一个问题的信息(id, subject ...),保存在 Page 中.
嵌入 listq 中的代码会重复执行,显示出所有符合条件的问题.



 
javabean 和taglib从技术层面来说,其实现机制基本相同.
在JSP应用之中,javabean是实现了程序代码级别的封装。
taglib 是实现了 页面tag级别的封装。
taglib和javabean封装级别的差异,可以与jsp和servlet
的封装差别做类比
 
多人接受答案了。
 
后退
顶部