在DRP项目中接触到了JSTL标签库,对我这样的比較懒的人来说,第一感觉就是“惊艳”。

JSTL标签库的使用。能够消除大量复杂、繁复的工作。工作量降低的不是一点半点。是降低了一大半。不论什么工具的引入,都会使我们的工作变的简单。可是问题是我们工作能够变的简单,可是我们不能让自己的大脑变的简单。所以,我们不是简单的会用就能够。我们还须要了解这个工具是怎样工作的。怎样为我们提供便利的。ok。以下进入正题,我们从问题開始……

JSP脚本带来的问题

不知道看到这几个子,各位有什么想法?反正我认为JSP就像孙猴子法力无边可是不服管教。是令人头疼的东西。为什么呢?JSP脚本极大的提高了程序的复杂性,同一时候JSP脚本也添加了代码阅读的困难。最后,也是最令人头疼的问题就是调试麻烦(感受深刻)。

这就是源头了。你要是认为体会不够深刻的话能够自己动手试试写JSP脚本

    从JSP1.1開始,JSP就支持在JSP中使用自己定义标签,来解决JSP脚本所带来的问题。可是,自己定义标签的广泛使用引发了新的问题,即反复定义、复用性差。因此。SUN公司推出了标签的标准,即JSTL(JSP Standard Tag  Libaray),而Apach实现了JSTL规范。

以下价绍JSTL……

JSTL 简单介绍

JSTL包含五类标准标记库:核心库、格式库、XML库、SQL库、函数库。例如以下图所看到的:

  

JSTL实际上是以还有一种良好的界面或者说接口来取代了JSP脚本的工作,大家知道JSP页面是会被解析成Servlet的所以WebServlet容器在引入JSTL后肯定是要有相应的解析器。然后。就和原来使用JSP脚本没什么差别了。也就是说JSTL所做的工作是一种优化。

    另外呢,JSTL和EL表达式都是一块使用的。可是EL表达式不算是JSTL的一部分。

由于,没有JSTL的情况下,EL表达式也是能够使用的。尽管有的资料直接说JSTL包含JSTL和EL表达式两个部分,应该是不太妥当的。

所以。EL表达式会在下篇博客单独介绍。

  实例体验

这是在使用JSP脚本和JSTL所做的循环输出。

  JSP版本号:

         

            <%	List itemList = pageModel.getList();
for (Iterator iter = itemList.iterator(); iter.hasNext();) {
Item item = (Item) iter.next();
%>
<tr> <td class="rd8">
<input type="checkbox" name="selectFlag" class="checkbox1"
value="<%=item.getItemNo()%>">
</td>
<td class="rd8">
<a href=""
onClick="window.open('item_detail.html', '具体信息', 'width=400, height=400, scrollbars=no');"><%=item.getItemNo()%></a>
</td>
<td class="rd8">
<%=item.getItemName()%>
</td>
<td class="rd8">
<%=item.getSpec()%>
</td>
<td class="rd8">
<%=item.getPattern()%>
</td>
<td class="rd8">
<%=item.getItemCategory().getName()%>
</td>
<td class="rd8">
<%=item.getItemUnit().getName()%>
</td>
</tr>
<%
}
%>

JSTL版本号:

            <c:forEach items="${pageModel.list}" var="item" >
<tr>
<td class="rd8">
<input type="checkbox" name="selectFlag" class="checkbox1"
value="${item.itemNo }">
</td>
<td class="rd8">
<a href="#"
onClick="window.open('item_detail.html', '物料具体信息', 'width=400, height=400, scrollbars=no');">${item.itemNo }</a>
</td>
<td class="rd8">
${item.itemName }
</td>
<td class="rd8">
${item.spec }
</td>
<td class="rd8">
${item.pattern }
</td>
<td class="rd8">
${item.itemCategory.name }
</td>
<td class="rd8">
${item.itemUnit.name }
</td>
</tr>
</c:forEach>

总结:总的来说。JSTL最大的特点就是简单。它相当于对JSP脚本做了一次封装,或者说是外观模式的应用吧。将复杂的逻辑处理隐藏起来,对外提供统一的接口。也就是说JSP页面的开发能够不依赖于Java代码了,即在如今分工越发明细,职责越发单一的开发趋势下为web开发的现实和逻辑划清了界限。也就是说在开发者的配置上实现了解耦和。

Java Web开发基础(3)-JSTL的更多相关文章

  1. java Web开发基础(一)工程项目文档结构

    2013年毕业后,在深圳工作开始是用.NET ASP.NET MVC做的项目,后来公司用java来做.于是就从.NET转java了.从.NET转java不是那么的难.今天刚好是清明节放假三天,整理了j ...

  2. Java Web开发基础(1)-Servlet

    概述 Servlet技术是对webserver的扩展,要理解这个,可能先了解一下什么是Webserver以及它的功能,特别是它的不足是非常有帮助的,可參考:点击打开链接.另外.Servlet也是一个用 ...

  3. Java Web开发基础(2)-JSP

    上一篇博我粗略的介绍了一下Servlet.粗略是由于博主也刚刚学习这部分的内容,还不是非常懂所以无法讲的非常精细.可是本着二八原则,我还是先继续学习.所以,这篇博客接着JSP的内容.由于.这两个内容关 ...

  4. Java Web开发基础零星知识

    1. Web的三个核心标准 万维网的核心标准有三个,分别是URL.HTTP和HTML. URL(统一资源定位符,Universal Resource Locator),为描述Internet上的网页以 ...

  5. java web开发基础实例(javabean+jsp+servlet+jdbc)

    JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于配置环境 一.[建立数据 ...

  6. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  7. Spring MVC + Spring + Mybitis开发Java Web程序基础

    Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...

  8. 个人的java web开发书单

    首发至个人博客http://www.zidafone.com/blog/36 以下是对一些读过的书和一些买后随便翻了翻的书的个人感觉.都是java web开发的程序员可能接触的书,其他的如设计/手机开 ...

  9. 《Tomcat与Java Web开发技术详解》思维导图

    越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...

随机推荐

  1. python学习笔记5.1-核心类型-集合set类型[转]

    转自:http://blog.csdn.net/business122/article/details/7541486 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系 ...

  2. windows下git命令的使用

    一.写在前面 关于git,出于自己的爱好,前段时间玩了一下,也自己上网查了一下资料,现简单记录一下,以备查看. 当然,本文并不是介绍配置git服务器的文章,而是以github服务器作为git的远程仓库 ...

  3. Node.js学习笔记(3) - 简单的curd

    这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简 ...

  4. 埃及分解:将2/n分解成为1/x+1/y的格式

    算法 古埃及以前创造出灿烂的人类文明,他们的分数表示却非常令人不解.古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式. 这里,a 和 b 必须是不同的两个整数,分子必须为 1 比方,2/1 ...

  5. javascript 实现页面加载完的操作

    document.onreadystatechange = function () { if (document.readyState == "complete") {//页面加载 ...

  6. iOS开发里的Bundle是个啥玩意?!

    初学iOS开发的同学,不管是自己写的,还是粘贴的代码,或多或少都写过下面的代码 [[NSBundle mainBundle] pathForResource:@"someFileName&q ...

  7. mac 下 outlook 邮箱 服务器端口设置

  8. Android 面试题(答案最全)

    1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟 ...

  9. struts2 select 默认选中

    jsp: <s:select list="#{'1':'男','2':'女'}" name="sex"/> action: private Stri ...

  10. 微软企业库Unity学习笔记

    本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...