在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. JavaScript操作DOM(动态表格处理)

    <html> <title>动态处理表格数据</title> <head> <script type="text/javascript& ...

  2. [Dynamic Language] Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录

    Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录 源码安装时报错 File "/home/abeenser ...

  3. CentOS 5.8 上安装 systemtap-2.6 转

    http://segmentfault.com/a/1190000002541077#articleHeader1

  4. 分布式中使用redis进行session共享

    摘要 在asp.net web中,session经常用来存储当前用户信息,或者通过session进行登录权限的验证.如果是一台服务器,session的使用没问题,如果使用nginx等实现反向代理,将站 ...

  5. MVC文件上传08-使用客户端jQuery-File-Upload插件和服务端Backload组件让每个用户有专属文件夹

    当需要为每个用户建立一个专属上传文件夹的时候,可以在提交文件的视图中添加一个隐藏域,并设置name="objectContext". 相关兄弟篇: MVC文件上传01-使用jque ...

  6. xcode4 语法高亮和自动补全失效的解决办法

    xcode4 语法高亮和自动补全失效的解决办法xcode4有一个bug,某些时候会造成类名的着色显示不出来,还有就是代码补全不能完全显示,而且没有参数. 解决方法: 首先关闭项目窗口,然后到Organ ...

  7. 点集转线python最优代码

    import arcpy import os import types def convertPoints(): arcpy.env.overwriteOutput = True inPts = ar ...

  8. Selenium2+python自动化47-判断弹出框存在(alert_is_present)

    前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(ex ...

  9. java 查询oracle数据库所有表DatabaseMetaData的用法

    DatabaseMetaData的用法(转) 一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName ...

  10. EasyUI Pagination 分页的两种做法

    EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,可根据情况具体使用. 一:使用 datagrid 默认机制 后台: p ...