JSTL什么

JSTL(JSP Standard TagLibrary,JSP标准标签库)是一个不断完好的开放源码的JSP标签库。

为什么要用JSTL

我们JSP用于开发信息展现页很方便;也能够嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。

看以下程序。但这样做会带来例如以下问题:

jsp维护难度添加;出错提示不明白。不easy调试; 分工不明白;(即jsp开发人员是美工,也是程序猿);

终于添加程序的开发成本;

  1. <% if (session.getAttribute(“user”).equals(“member”)) { %>
  2. <p>Welcome, member!</p>
  3. <% } else { %>
  4. <p>Welcome, guest!</p>
  5.  
  6. <% } %>

由来:

JSTL的初衷是为了将前台美工同开发分开。非常好的实现分层开发的目标。我们知道大多数的美工是对标签比較熟悉

JSTL的最大优势

1:让页面代码看起来更加整洁。显示逻辑一目了然,风格统一,易于维护

2:大量使用JSTL提供的逻辑操作(比如迭代、推断),能够大大降低JSP中脚本代码(Scriptlets)的数量

3:非常好的实现了分层的思想!

4:对于美工人员来说更加easy学习和掌握,由于美工的一部分工作就是和各种标签打交道

5:并且相同能够对其进行自己定义扩展!

弊端:

1,为前台美工人员,维护人员添加了学习成本

使用简单介绍:

假设要使用JSTL,则必须引用jstl.jar和standard.jar两个包。

并在jsp文件的顶部增加下面内容:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

主要标签分类:

<c:> 核心标签库

包含与表达式相关的标签,输出JSP页面内容时的流程制标签,迭代操作标签,生成和操作URL的标签.

JSTL核心标签库(C标签)标签共同拥有13个,功能上分为4类:

1.表达式控制标签:out、set、remove、catch

2.流程控制标签:if、choose、when、otherwise

3.循环标签:forEach、forTokens

4.URL操作标签:import、url、redirect

<fmt:>   格式化标签库

定义了用来格式化数据(尤其是数字和日期)的操作还支持使用本地化资源束进行JSP页面的国际化

<fn:> Function标签库

提供了一组经常使用的 EL函数,主要用于处理字符串,在 JSP 中能够直接使用这些函数

JSTL一般配合EL一起使用,因此先看看EL.

EL(Expression Language)目的:为了使JSP写起来更加简单

语法结构:${expression}

举例:< %=request.getParameter(“username”)% > 等价于 ${ param. username }

以下我们来应用JSTL来改动一下jsp的页面:

使用JSTL之前:

  1. <td>
  2. <select name="category" class="select1" id="category">
  3. <%
  4. for (int i=0; i<itemCategoryList.size(); i++) {
  5. ItemCategory ic = (ItemCategory)itemCategoryList.get(i);
  6. String selectedString = "";
  7. if (item.getItemCategory().getId().equals(ic.getId())) {
  8. selectedString = "selected";
  9. }
  10. %>
  11. <option value="<%=ic.getId() %>" <%=selectedString %>><%=ic.getName() %></option>
  12. <%
  13. }
  14. %>
  15. </select>
  16. </td>

使用JSTL之后:

  1. <td>
  2. <select name="category" class="select1" id="category">
  3. <!-- 遍历list数组。将值存放到itemCategory中 -->
  4. <c:forEach items="${itemCategoryList}" var="itemCategory">
  5. <c:set var="selectedString"/>
  6. <!-- 假设item.itemCategory.id等于itemCategory.id -->
  7. <c:if test="${item.itemCategory.id eq itemCategory.id}">
  8. <!-- 将selected的值存放到selectedString变量中 -->
  9. <c:set value="selected" var="selectedString"/>
  10. </c:if>
  11. <option value="${itemCategory.id }" ${selectedString }>${itemCategory.name }</option>
  12.  
  13. </c:forEach>
  14.  
  15. </select>
  16.  
  17. </td>

总结:

对于JSTL来说。它对jsp页面进行了进一步的拆分。将jsp页面中的JAVA代码,隔离出来,不必要美工去关心java代码的实现。仅仅考虑界面的美化就可以,这样职责单一,分工明白。

在做DRP项目总结时。深刻体会到,事实上我们如今学的好多技术实际都是抽象的不断扩展和延伸。是为了程序的复用性和易用性添加!我们都是在不断抽象。不断总结。不断简单化地进行学习!让我们的程序更加面向变化。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

JAVA学习篇--JSTL基金会的更多相关文章

  1. JAVA学习篇--静态代理VS动态代理

    本篇博客的由来,之前我们学习大话设计,就了解了代理模式,但为什么还要说呢? 原因: 1,通过DRP这个项目,了解到了动态代理,认识到我们之前一直使用的都是静态代理,那么动态代理又有什么好处呢?它们二者 ...

  2. JAVA学习篇--JAVA两种编程模式控制

    在Drp项目中,解说了两种编程模式Model 1和Model2.以下是对这两种模式的简单理解.以及因为Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对照学习一下. ...

  3. Java学习篇之---json-lib(Maven)

    json-lib(Maven) java中用于解释json的主流工具有org.json.json-lib与gson.本篇文章介绍json-lib. 项目中要用到json-lib.在pom.xml文件里 ...

  4. JAVA学习篇--javaweb之Filter具体解释

    在DRP项目中,多次提到了Filter,它攻克了字符集的统一设置以及统一控制简单WebCache,从中我们能够体会到.它给我们带来的优点不不过降低代码量这么简单,它的出现避免了我们每一个页面反复的编写 ...

  5. JAVA学习篇--Java类加载

    由来: 与普通程序不同的是,Java程序(class文件)并非本地的可执行程序(解释性语言). 当执行Java程序时.首先执行JVM(Java虚拟机),然后再把Javaclass载入到JVM里头执行, ...

  6. Java学习——JSTL标签与EL表达式之间的微妙关系

    原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相 ...

  7. JavaWeb学习篇之----自定义标签&&JSTL标签库详解

    今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...

  8. java学习之EL和JSTL

    0x00前言 EL和JSTL都是JSP的内容的拓展,都是开发的一些东西,稍微学习记录一下,避免以后忘记 0x01EL 0x1基本用法 概念:Expression language 表达式语言 作用:替 ...

  9. Java多线程(学习篇)

    Java多线程:(学习篇) 1.什么是线程 2.线程状态 3.线程中断 4.线程交互 5.同步机制 6.锁机制 7.堵塞队列与堵塞栈 8.条件变量.原子量.线程池等 9.线性安全类和Callable与 ...

随机推荐

  1. HTML中&lt;input&gt;參数,以及文本输入框,文本域的解说

    <form> <input type="text/password" name="名称" value="文本" /> ...

  2. SharePoint发展 - 使用Session(代码更改webconfig)

    博客地址 http://blog.csdn.net/foxdave SharePoint启用Session能够使用Powershell,戳这里:能够改动webconfig. 本篇叙述的重点是通过fea ...

  3. USACO sprime

    /* ID:kevin_s1 PROG:sprime LANG:C++ */ //N = 1仅仅可能为2,3,5,7.N > 1仅仅可能为1,3,7.9. N = i,到N = i + 1递推假 ...

  4. Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)

    Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)     本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...

  5. php &#160;性能优化

    基础优化 1 不要随便复制变量. 有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包含我)会把提前定义好的变量拷贝到一个名字更简短的变量中,事实上这样做的结果是添加了一倍的内存消耗,仅仅会使程 ...

  6. eclipse 于 Tomcat于 热部署 project

    eclipse在 Tomcat中热部署project 1.在eclipse中国安装一个tomcat插件:SysdeoEclipse Tomcat Launcher plugin(http://www. ...

  7. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

  8. [思考] hdu 4811 Ball

    意甲冠军: 有三种颜色的小珠,每种颜色的量R,Y,B 转球进入桌面成序,有多少种不同的颜色分别砍下的球在球门前+有多少身后球不同的颜色 问:最大的总比分值 思考: 球和后面的球先放好.剩下的就放中间了 ...

  9. .net机试题总结

    1.下面是一个由*号组成的4行倒三角形图案.要求:1.输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”:2.在屏幕上打印这个指定了行数的倒三角形. ******* ...

  10. linux 下安装jdk及配置jdk环境图解

    linux 下安装jdk及配置jdk环境图解 一:先检測是否已安装了JDK 运行命令: # rpm -qa|grep jdk  或   # rpm -q jdk  或  #find / -name j ...