查看sun的网站,关于JSF的好处一大堆,关于JSTL的理由,好像只有一句:
“你可以避免在页面中写Scriplet”,呵呵,难道避免Scriplet在页面中出现很重要吗?用J2ee1.4的Doc中举的关于JSTL的例子:
A.使用Scriptlet
<% if (user.getRole() == "member")) { %>
<p>Welcome, member!</p>
<% } else { %>
<p>Welcome, guest!</p>
<% } %>B.使用JSTL:<c:choose><c:when test="${user.role == 'member'}">
<p>Welcome, member!</p>
</c:when><c:otherwise>
<p>Welcome, guest!</p>
</c:otherwise></c:choose>1。可读性:
难道不是A更容易阅读吗?一眼看过去,<%%>内的是Java代码,很清晰,
逻辑是所见即所得不需要转化的。在B中,JSTL的标记和HTML的标记混在一起
是对视力和耐心的巨大考验。2。录入难度
A的字节数是124,B的字节数是164,输入“<”,“>”这些符号,需要频繁切换大小写,还有那个":"也是一样。B的形势下,录入的字节数更多,内容更难录入。3。配置
A的形势,不需要做额外的配置。显然B需要。为什么要JSTL呢?
“你可以避免在页面中写Scriplet”,呵呵,难道避免Scriplet在页面中出现很重要吗?用J2ee1.4的Doc中举的关于JSTL的例子:
A.使用Scriptlet
<% if (user.getRole() == "member")) { %>
<p>Welcome, member!</p>
<% } else { %>
<p>Welcome, guest!</p>
<% } %>B.使用JSTL:<c:choose><c:when test="${user.role == 'member'}">
<p>Welcome, member!</p>
</c:when><c:otherwise>
<p>Welcome, guest!</p>
</c:otherwise></c:choose>1。可读性:
难道不是A更容易阅读吗?一眼看过去,<%%>内的是Java代码,很清晰,
逻辑是所见即所得不需要转化的。在B中,JSTL的标记和HTML的标记混在一起
是对视力和耐心的巨大考验。2。录入难度
A的字节数是124,B的字节数是164,输入“<”,“>”这些符号,需要频繁切换大小写,还有那个":"也是一样。B的形势下,录入的字节数更多,内容更难录入。3。配置
A的形势,不需要做额外的配置。显然B需要。为什么要JSTL呢?
你这只是其中的一个特殊的例子,真正在JSP中出现这样简单的代码很少见吧,我还是比较喜欢用标签的,以前在JSP页面中老写些<% %>,与HTML标签夹杂在一起,感觉蛮烦的,所以说,对于第1点说的可读性,我不赞同录入难度:上面只是一个if语句,如果是迭代方面呢?配置方面,其实也就是在JSP多加一条语句,在整个项目中添加JSTL的jar包罢了而且,JSTL除了它原来的标签外,还可以自定义标签,应用还是比较广泛的
不觉得JSTL比Scriptlet更专业 更美观些吗
其外对于封装在request session 等中的对象 JSTL很方便的可以拿得到
至于可读性吗 如果你熟悉了JSTL的标签 就不存在问题了哈
另外,即使字节数上scriplet比jstl少一点,但是你考虑维护和编写的难度了没,scriplet代码的嵌套情况更复杂一些,就大大提升了维护的难度,相反jstl就一目了然。
可读性是针对所有人员而言,如果对于一个完全不懂编程只会做网页的美工人员来说,他是希望全是标签还是全是<%%>?总是需要团队配合的,总不能身为一个Java程序员整天做网页设计吧。2。录入难度
我反而认为A类更难录入,LZ举的例子是短,如果if块代码很长的话,我找到一个很靠后的地方只是为了输入一个<%}%>,我每次录入一个收括号(})便需要录入一个<%%>,一旦括号多了,眼花是必然的,我要翻上翻下找半天,而JSTL作为一个标签,标识作用比大括号强多了。3。配置
配置不过是一句话,一个ctrl+c和ctrl+v的事,需要几秒钟?当然,JavaEE5.0的JSTL包是默认加入的,完全不用你操心
1.代码与页面分离,便于维护与升级。在页面中应尽量少写或尽量不写代码。
2.使用JSTL,可以提高系统速度;而将代码嵌入页面,系统编译运行时,很费时:需要将页面中的代码转换(HTML——JAVA),返回数据时还需转换(JAVA——HTML)。
如果美工也看不懂,那引申出来这个问题:2.JSTL怎么实现程序员和美工各不干扰,各做各的?这种实现是用脚本不能达到的吗?
还有就是5楼的问题,我刚开始学标签,觉得很难记。
JSTL主要是针对前台人员的, 国外项目很多都是前台和后台的代码都是分开来写的。
写前台的人说不定就是一些美工, 他们只会简单的HTML, 而不会java。
对于他们来讲理解JSTL比理解JAVA代码容易多了
这里的美工应该是网页开发方面的美工,因为标签语言的特点就是好学,标签语言里面有的东西拿出来就能用,不像面向对象的语言,有时候要先创建一个类,再把这个类实例化,然后才能用,标签里有的就能用,没有的也基本不能创建。
另一个标签语言的特点是,思维方面,标签语言的思维是我要做什么,而编程语言的思维是我要怎么做。比如同是显示一段字符串,标签语言是<div class="fbart">HelloWorld</div>,意思是我要在这显示一段HelloWorld,怎么实现浏览器你自己看着办,而编程语言你要先String a;再a = 'HelloWorld';最后system.out.println(a);怎么实现我要一步步自己做。
显然不能,前者是服务端的,后者是客户端的,就像asp.net的控件。
等你做开发做久了,你就自然明白了。
实现两者之间的分离。你干你的。我干我的。。
如果管理不善,
会带来难以想象的代码爆炸。比如把应该再后台java中完成的逻辑处理,
由于在jsp中“也能完成”,
就把应该“分清楚的逻辑”放到了V层,也就是表现层中。这是在系统设计中最忌讳(至少对于我个人来说)的事情。简单的说,用jstl是让写程序的人
“不能随意写代码”在freeer之类的模板技术中,这种“善意的限制”更是体现的很突出。good luck
如果你真正使用多了,你就不会再怀疑JSTL这个流行的标签库了。
如果你只是些几个demo,简单的c:out,那么你大不必JSTL,如果你的应用需要更多的功能,
比如:对输出的format,sql语句等,JSTL有更好的封装,一句代码就可以完成你N句代码的功能。用多了,你才会知道他的好处。不要看到介绍,使用得不多,就开始怀疑。。
vb语法更简单,干脆用vb得了