什么是JSTL?
为什么要用JSTL?
JSTL英文的全称是JSP Standard Tag Library从英文的解释中我们可以略知一二关于JSTL的概念:和JSP有关的标准标签库.而这个与JSP的关系具体可以解释为:JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上.也就是说JSTL有着自身的运行环境.
至于为什么要用JSTL?请先看下面两段代码的对比效果.
以下代码段是实现一个功能:将itemCategoryList集合中的取出并将每个项目的id和名称显示在表格中.由于为了掩饰对比效果,相关Servlet和Jsp页面都进行了忽略(因为他们几乎都是一样的).
1用传统的Scriptlet进行实现
<td>
<%
List<ItemCategory>itemCategoryList=(List)request.getAttribute("itemCategoryList");
%>
<select name="category"class="select1" id="category">
<%
for(Iterator<ItemCategory>iter=itemCategoryList.iterator();iter.hasNext();){
ItemCategoryic=iter.next();
%>
<optionvalue="<%=ic.getId()%>"><%=ic.getName() %></option>
<%
}
%>
</select>
</td>
2通过JSTL进行实现
<td>
<select name="category"class="select1" id="category">
<c:forEach items="${itemCategoryList }"var="itemCategory">
<option value="${itemCategory.id }">${itemCategory.name}</option>
</c:forEach>
</select>
</td>
通过上面同一个功能两种实现进行对比分析我们可以发现.当我们用JSP脚本来实现此任务时需要在页面中嵌入相关的Java代码,这也就意味着作为页面设计人员需要了解相关的Java编程知识,而这对于他们而言无疑是一个"灾难".而将这些JSP脚本嵌入到页面中使得页面本身的维护量就大大的增加.
再进一步分析,当嵌入JSP脚本的页面如果出现问题.这时候已经超出了前台设计人员所能解决的范围,毕竟人家的专业是在美工和设计.这时候需要把程序员叫过来,让他来进行解决.一两个小问题程序员跑过来帮助前台人员解决一下还是可以的,但是当大量问题出现的话.程序员就悲催了.这对这个团队而言又是一个"灾难".
上面的过程中违背我们编程常提到的"高内聚,低耦合"的思想.嵌入JSP脚本的页面是高耦合的体现.设计人员不仅要懂页面设计,还需要懂java相关的编程知识.将JSP页面的代码责任分担给多个人.因为分工不明确使得开发,调试,维护相关的JSP页面变成了麻烦棘手的事情.
如此下去,编程何谈优雅?
遇到问题,聪明的人们总会找到各种解决方案.方法永远比问题多.
JSTL将常用功能包装到定制的标准集合中.这样JSTL使得JSP页面的设计人员减少对相关脚本的依赖,甚至可以省去他们.如此一来,页面设计人员只需要学习一下JSTL相关的标签库内容,而标签库的学习要远比java来的简单.程序员可以专心的编写自己后台的代码,省去了被前台人员"骚扰"的麻烦.两家皆大欢喜.对于真个团队和项目而言.职责明确,分工到位.开发,调试,维护的效率大大增加.
是不是感觉编程那优雅的味道越来越浓啦.