在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. 不同的activity使用bundle对象传值给广播接收器

    解决了一下午的问题,广播机制传值,在一个activity中发送广播给广播接收器,使用的是同一个action 在另一个activity中如果也发送广播给同一个广播接收器,使用相同的action,会导致后 ...

  2. MAIN/autoslb.py · 林語/autoslb - 码云 - 开源中国

    MAIN/autoslb.py · 林語/autoslb - 码云 - 开源中国 CloudXNS

  3. 【《Objective-C基础教程 》笔记ch03】(四)OC中的OOP

    一.声明类接口步骤: 1.声明一个类接口,使用@interfacekeyword加上类名称. 2.用  { 实例变量 }  来定义各种数据成员. 3.方法声明,採用中缀符语法声明一个c函数,用到了冒号 ...

  4. mysql解决datetime与timestamp精确到毫秒的问题

    CREATE TABLE `tab1` ( `tab1_id` VARCHAR(11) DEFAULT NULL, `create` TIMESTAMP(3) NULL DEFAULT NULL, ` ...

  5. ConcurrentDictionary AddOrUpdate

    var sessionId = a.Session.SessionID.ToString(); userDic.AddOrUpdate( authUser.UserId, sessionId, (ke ...

  6. 《Windows核心编程》第2章——字符和字符处理

    ANSI和UNICODE 计算char和wchar_t的长度都一样,都是5,但是二者在内存中的布局实际上是不同的:

  7. oracle 日期相减 转载

      转自 http://hi.baidu.com/juanjuan_66/blog/item/cf48554c9331fbe6d62afc6a.html oracle日期相减2012-02-10 12 ...

  8. 10 Big Data Possibilities for 2017 Based on Oracle's Predictions

    2017 will see a host of informed predictions, lower costs, and even business-centric gains, courtesy ...

  9. 运行时类型识别RTTI

    1.RTTI的工作原理 例1. 用Class加载对象示例. package RTTI; public class Candy { static{ System.out.println("Lo ...

  10. 字符串转换成JSON的三种方式

    采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON ).ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中J ...