查看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呢?

解决方案 »

  1.   

    其实就看自己的喜好了。<% if (user.getRole() == "member")) { %>
    你这只是其中的一个特殊的例子,真正在JSP中出现这样简单的代码很少见吧,我还是比较喜欢用标签的,以前在JSP页面中老写些<% %>,与HTML标签夹杂在一起,感觉蛮烦的,所以说,对于第1点说的可读性,我不赞同录入难度:上面只是一个if语句,如果是迭代方面呢?配置方面,其实也就是在JSP多加一条语句,在整个项目中添加JSTL的jar包罢了而且,JSTL除了它原来的标签外,还可以自定义标签,应用还是比较广泛的
      

  2.   

    LZ太过片面了吧
    不觉得JSTL比Scriptlet更专业 更美观些吗  
    其外对于封装在request session 等中的对象 JSTL很方便的可以拿得到
    至于可读性吗  如果你熟悉了JSTL的标签 就不存在问题了哈  
      

  3.   

    其实楼主的例子不够好,如果考虑user对象为空的情况呢,是不是还得加一条判断语句?
    另外,即使字节数上scriplet比jstl少一点,但是你考虑维护和编写的难度了没,scriplet代码的嵌套情况更复杂一些,就大大提升了维护的难度,相反jstl就一目了然。
      

  4.   

       楼上的几位,熟练应用并且记牢jstl标签用了多少时间呢?
      

  5.   

    1。可读性: 
    可读性是针对所有人员而言,如果对于一个完全不懂编程只会做网页的美工人员来说,他是希望全是标签还是全是<%%>?总是需要团队配合的,总不能身为一个Java程序员整天做网页设计吧。2。录入难度 
    我反而认为A类更难录入,LZ举的例子是短,如果if块代码很长的话,我找到一个很靠后的地方只是为了输入一个<%}%>,我每次录入一个收括号(})便需要录入一个<%%>,一旦括号多了,眼花是必然的,我要翻上翻下找半天,而JSTL作为一个标签,标识作用比大括号强多了。3。配置 
    配置不过是一句话,一个ctrl+c和ctrl+v的事,需要几秒钟?当然,JavaEE5.0的JSTL包是默认加入的,完全不用你操心
      

  6.   

    使页面简化,不然出现许多java代码,不利于美工操作,书上说的,事实好像也是那样,因为美工并不一定懂Java代码,
      

  7.   

    使用什么要看自己的喜好了,还有分情况而定,如果jsp页面要处理复杂的数据,如多个<for><if>整篇都是<%%>,自己写过的东西还熟悉,但要维护的人来看你的代码,那他的头就会大的,深有体会,呵呵。。o(∩_∩)o...
      

  8.   

    几点愚见:
    1.代码与页面分离,便于维护与升级。在页面中应尽量少写或尽量不写代码。
    2.使用JSTL,可以提高系统速度;而将代码嵌入页面,系统编译运行时,很费时:需要将页面中的代码转换(HTML——JAVA),返回数据时还需转换(JAVA——HTML)。
      

  9.   

    想学习一下,站在中立学习的角度弱弱的问:1.JSTL标签美工可以看懂吗?
    如果美工也看不懂,那引申出来这个问题:2.JSTL怎么实现程序员和美工各不干扰,各做各的?这种实现是用脚本不能达到的吗?
    还有就是5楼的问题,我刚开始学标签,觉得很难记。
      

  10.   

    楼主你要是看一些JSTL的英文书就知道了,
    JSTL主要是针对前台人员的, 国外项目很多都是前台和后台的代码都是分开来写的。
    写前台的人说不定就是一些美工, 他们只会简单的HTML, 而不会java。
    对于他们来讲理解JSTL比理解JAVA代码容易多了
      

  11.   

    JSTL是给美工用的,他们会看得懂HTML等标签语言,但基本看不懂java语言。J2EE是分角色开发的团队活动,如果按LZ一个人全包的思想,象EJB Servlet 什么都不用学,只要会JSP就行了。
      

  12.   


    这里的美工应该是网页开发方面的美工,因为标签语言的特点就是好学,标签语言里面有的东西拿出来就能用,不像面向对象的语言,有时候要先创建一个类,再把这个类实例化,然后才能用,标签里有的就能用,没有的也基本不能创建。
    另一个标签语言的特点是,思维方面,标签语言的思维是我要做什么,而编程语言的思维是我要怎么做。比如同是显示一段字符串,标签语言是<div class="fbart">HelloWorld</div>,意思是我要在这显示一段HelloWorld,怎么实现浏览器你自己看着办,而编程语言你要先String a;再a = 'HelloWorld';最后system.out.println(a);怎么实现我要一步步自己做。
      

  13.   

    看了上面的受益良多啊,我觉得写标签还是好于直接写代码的,当然楼主喜欢也无所谓,最多让美工无视你的java代码就行了
      

  14.   

    Scriplet不安全,用JSTL在页面取值显示方便啊,你也可以不用这个,况且用JSTL与struts无关,只要你导入相应的2个JAR包就OK了,主要是JSTL给编程带来的方便性
      

  15.   

    jstl好像是给不懂java的人的美工人员学习后将 java程序员的结果显示到界面的
      

  16.   

    恩,学习了。!
    显然不能,前者是服务端的,后者是客户端的,就像asp.net的控件。
      

  17.   

    如果只是一个人关心 jsp ,当然jsf是小题大作了。如果有一堆人关心 jsp,但各自关心不同的内容,则 jsf 就提供了一种可行的解决方案。
      

  18.   

    我是大量的 标签 掺杂少量的Scriplet。
    等你做开发做久了,你就自然明白了。
      

  19.   

    现在做程序往往讲究的是前后台分工,也就是说前台基本是美工干的活,后台是程序java程序员干的活,我们要尽可能把大部分业务逻辑放到后台去处理,前台尽量只做一些显示的逻辑处理。而且做好别用jsp的<% %>形式,因为美工不懂。
      

  20.   

    支持楼主,这些东西都是拿来骗那些不会编程的人的,说是减少JSP里面的java代码,但是回过头来一看“难道HTML里就应该加入其它标签么?”
      

  21.   

    大哥,美工看不懂JAVA代码那他就能看懂JSF标签啊?
      

  22.   

    老实说 你会用jstl之后你就不会再想在页面上写Java代码了
      

  23.   

    楼上说的对。。我用了jstl以后。一想到在里面写java代码就很不自在,,,上面有位帅哥说的。老是为美工着想。不在他着想的话人家不鸟你的代码了你来美工?
    实现两者之间的分离。你干你的。我干我的。。
      

  24.   

    直接写程序代码,
    如果管理不善,
    会带来难以想象的代码爆炸。比如把应该再后台java中完成的逻辑处理,
    由于在jsp中“也能完成”,
    就把应该“分清楚的逻辑”放到了V层,也就是表现层中。这是在系统设计中最忌讳(至少对于我个人来说)的事情。简单的说,用jstl是让写程序的人
    “不能随意写代码”在freeer之类的模板技术中,这种“善意的限制”更是体现的很突出。good luck
      

  25.   

    jsp更上一层的封装,不大喜欢。没必要用。
      

  26.   

    我的观点是,你scriptLet写的好,就写<%%>,如果你标签熟悉,就用标签.用scriptLet写出的jsp页面,在各个方面并不一定比jstl差.jstl可以实现代码重用,把<%%>里的代码封装成方法,对象,还不是一样可以重用.jstl可以提高代码的可读性.把<%%>里的代码封装成方法,对象,在jsp里传入若个参数调用方法,可读性一样好.jstl容易学习,No No, 美工用jstl写jsp也是在程序员提供了一个demon,美工Ctrl + C, Ctrl+V一下. 个人认为对于美工来说,脱离项目组其他人员的支持,是不可能作出动态页面来的. 如果你把<%%>封装以下,写个demon让美工来Ctrl+V一样可以.但是!!!  jstl这个机制别人已经也设计好了,大家捡来用就可以了. 良好的ScriptLet方案却没有,你要设计一个良好的ScriptLet方案?设计一套方案成本肯定远高于学习一套方案
      

  27.   

    在页面中写<%%>,不安全在哪里?
      

  28.   

    不要被那些介绍所迷惑,什么《可读性》《录入难度》,如果你自己做出一个工具来,你是不是也需要"吹嘘"一下你的框架多么灵活,多么好用。。但是,任何吹嘘都是有一定依据的。看问题不要太片面。
    如果你真正使用多了,你就不会再怀疑JSTL这个流行的标签库了。
    如果你只是些几个demo,简单的c:out,那么你大不必JSTL,如果你的应用需要更多的功能,
    比如:对输出的format,sql语句等,JSTL有更好的封装,一句代码就可以完成你N句代码的功能。用多了,你才会知道他的好处。不要看到介绍,使用得不多,就开始怀疑。。
      

  29.   

    页面简化,不然出现许多java代码,不利于美工操作,书上说的
      

  30.   

    JSTL还是比较好用的,比起struts1,2的标签来说方便多了
      

  31.   

    其实通过scriptlet把java代码写在jsp里,维护和修改起来非常麻烦,逻辑很混乱.使用jstl能把控制层和视图层分开,对于系统分层也有好处.使用scriptlet需要频繁的使用非空判断,而jstl不需要,这减少了很多工作,代码也更好阅读.
      

  32.   

    JSTL还是不错的,特别是它的fn,有时候比struts标签写起来爽如果在视图中使用HashMap,JSTL就可能要靠边站了。。在大型项目中,在视图中使用HashMap的情况太多了
      

  33.   


    vb语法更简单,干脆用vb得了