1. 简介
    1. JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库。
    1. 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。
    1. JSTL是为了简化JSP页面,让它更加简洁尽量不包含Java代码,只进行数据显示而开发出来的一个标签库,弥补了JSP的不足。
  2. 特点
    1. 在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。
    1. 简化了JSP和WEB应用程序的开发。
      1. 自从有了JSTL我们不再需要写大量的Java代码,只需要小小的几个标签即可完成大的功能,例如查询数据库、显示数据、逻辑判断等等。
  3. 使用
    1. JSTL要与EL(expression language)表达式语言结合使用,标签库作用是流程控制,如果想实现某个功能要与表达式联合起来,比如是函数与控制语句一样。
    2. 使用JSTL需要引入jstl.jar和standard.jar两个包。并在JSP文件中声明标签,如下
      1. 标签代码()
    3. 核心库Core,主要通过举例来说明
      1. Servlet代码
        1. 	@Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          //将字符串赋值给request对象
          request.setAttribute("hello", "hello world");
          request.setAttribute("welcome", "<font color='red'>世界欢迎你!</font>"); request.setAttribute("v1", 9);
          request.setAttribute("v2", 10); //类结构
          Group group=new Group();
          group.setName("09生科一班");
          //数组对象
          List users=new ArrayList();
          for(int i=0;i<10;i++)
          {
          User user=new User();
          user.setAge(10);
          user.setName("李龙生"+i);
          user.setGroup(group); users.add(user);
          }
          //设置到request中
          request.setAttribute("users", users); //Map
          Map map=new HashMap();
          map.put("k1", "k1");
          map.put("k2", "k2");
          map.put("k3", "k3");
          map.put("k4", "k4");
          request.setAttribute("map", map); request.setAttribute("strTokens", "1,2,3,4,5");
          request.getRequestDispatcher("/Jstl_Core.jsp").forward(request, response);
          }
      1. JSP代码
        1. <body>
          <h1>测试JSTL核心库</h1>
          <br>
          <li>采用c:out标签</li><br>
          hello使用:<c:out value="123"></c:out><br>
          hello使用:<c:out value ="hello"></c:out><br>
          hello使用:<c:out value="${hello }"></c:out><br>
          hello使用:<c:out value="${hello123 }" default="没有值"></c:out><br>
          hello使用:<c:out value="${hello123 }" >没有值</c:out><br>
          hello使用:<c:out value="${welcome}" ></c:out><br>
          hello使用(escapeXml):<c:out value="${welcome}" escapeXml="true"></c:out><br>
          hello使用:${welcome} //测试大于、小于符号
          <li>condition action sample</li>
          <c:if test="${v1 lt v2 }">
          v1小于v2
          </c:if> <p>
          <li>c:when,c:choose,c:otherwise标签</li>
          <c:choose>
          <c:when test="${v1 gt v2 }">
          v1大于v2 </c:when>
          <c:otherwise>
          v1小于v2
          </c:otherwise>
          </c:choose> <p>
          <li>演示循环控制标签forEach</li>
          <table border="1">
          <tr>
          <td>用户名:</td>
          <td>年龄:</td>
          <td>班级:</td>
          </tr>
          //选择标签
          <c:choose>
          //条件标签
          <c:when test="${empty users }">
          <tr>
          <td colspan="3">没有符合条件的数据!</td>
          </tr>
          </c:when>
          //否则执行这里面内容
          <c:otherwise>
          <c:forEach items="${users}" var="user">
          <tr>
          <td>${user.name }</td>
          <td>${user.age }</td>
          <td>${user.group.name }</td>
          </tr>
          </c:forEach>
          </c:otherwise>
          </c:choose>
          </table> //循环map里面的键值对
          <li>Map循环</li>
          <c:forEach items="${map }" var="entry">
          ${entry.key },${entry.value }<br>
          </c:forEach>
          //将某个字符串,用指定的符号分割
          <h1>c:Tokens标签</h1>
          <c:forTokens items="${strTokens }" delims="," var="a">
          ${a }<br>
          </c:forTokens>
          //将某个页面导入到当前页
          <h2>c:import标签</h2>
          <c:import url="http://localhost:8080/drp4.5/login.jsp"></c:import> <h2>c:url,c:param标签</h2>
          <c:url value="http://localhost:8080/drp4.5/login.jsp" var="u">
          <c:param name="userId" value="long"></c:param>
          </c:url>
          ${u }
          </body>
    4. 格式化库Format
      1. Servlet代码
        1. @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          request.setAttribute("today", new Date());
          request.setAttribute("n", 1234567.234);
          request.setAttribute("n", 0.01234); request.getRequestDispatcher("/jstl_fmt.jsp").forward(request, response);
          }
      1. JSP代码
        1. <body>
          <h1>test format date tag</h1>
          today(default)<fmt:formatDate value="${today }"/><br>
          today(type=date)<fmt:formatDate value="${today }" type="date"/><br>
          today(type=time)<fmt:formatDate value="${today }" type="time"/><br>
          today(type=both)<fmt:formatDate value="${today }" type="both"/><br>
          today(dateStype=short)<fmt:formatDate value="${today }" dateStyle="short"/><br>
          today(dateStype=full)<fmt:formatDate value="${today }" dateStyle="full"/><br>
          today(dateStype=long)<fmt:formatDate value="${today }" dateStyle="long"/><br>
          today(pattern="yyyy/mm/dd hh:mm:ss")<fmt:formatDate value="${today }" pattern="yyyy/mm/dd hh:mm:ss" var="u"/><br>
          ${u } <h2>digital format tag</h2>
          n(default)<fmt:formatNumber value="${n}"></fmt:formatNumber><br>
          n(pattern="###,###,###.####")<fmt:formatNumber value="${n}" pattern="###,###,###.####"></fmt:formatNumber><br>
          n(pattern="###,###,###.0000")<fmt:formatNumber value="${n}" pattern="###,###,###.0000"></fmt:formatNumber><br>
          n(groupingUsed="false")<fmt:formatNumber value="${n}" groupingUsed="false"></fmt:formatNumber><br>
          n(groupingUsed="false")<fmt:formatNumber value="${n}" maxIntegerDigits="12" minIntegerDigits="10"></fmt:formatNumber><br>
          n(maxFractionDigits="8" minFractionDigits="5")<fmt:formatNumber value="${n}" maxFractionDigits="8" minFractionDigits="5"></fmt:formatNumber><br> <h3>currency tag</h3>
          n(type="currency")<fmt:formatNumber value="${n }" type="currency"></fmt:formatNumber>
          n(type="currency" currencySymbol="$")<fmt:formatNumber value="${n }" type="currency" currencySymbol="$"></fmt:formatNumber>
          n(type="percent")<fmt:formatNumber value="${n }" type="percent"></fmt:formatNumber> </body>
  1. 目前应用
    1. JSTL可以跨多种服务器运行,方便了开发和程序的移植性,现在用这种标签在Web层开发的人也越来越多,需要灵活掌握和运用。

J2EE (十) 简洁的JSTL、EL的更多相关文章

  1. js/jstl/el的区别

    JavaScript 学习的路径:http://www.w3school.com.cn/js/js_intro.asp 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服 ...

  2. java,js,jstl,EL的简单交互

    EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能. 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素. JSP标准标记库(j ...

  3. JSP JSTL EL

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Html代码 复制代 ...

  4. JSTL&EL(程序员必看之一)

    EL表达式 可以在jsp页面中减少大量的Java代码.Expression Language,它是一种借鉴了javaScript和XPath的表达式语言. EL表达式定义了一系列的隐含对象和操作符,使 ...

  5. 通过JSTL+EL实现循环迭代

    使用前需要导入包 jstl.jar 和 standard.jar <%@ page language="java" import="java.util.*,com. ...

  6. 使用jstl+el表达式遇到的几个问题

    1.使用jstl访问Map<Integer,String>中的内容时总取不到? el表达式的一个bug,在解析数字的时候,会自动将数字转换成Long类型. 我的解决办法是,Map的key改 ...

  7. JSTL&EL

    JSTL <1> 实现了JSP页面代码的复用 <2> 使得可读性更强 导入 <%@ taglib uri="http://java.sun.com/jsp/js ...

  8. JSTL+EL表达式+JSP自定义框架案例

    不会框架不要紧,我带你自定义框架 前言:这标题说的有点大了,当一回标题党,之前在学JSP的时候提到了JSTL和EL表达式,由于一直钟情于Servlet,迟迟没有更新别的,这回算是跳出来了.这回放个大招 ...

  9. JavaWeb学习记录(十九)——jstl自定义标签库之传统标签

    一.传统标签 (1)JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法. public void setPageContext(PageCo ...

随机推荐

  1. SQL Server 2008 R2 的版本和组件

    SQL Server 2008 R2 的版本和组件 SQL Server 2008 R2   其他版本 SQL Server 2008 SQL Server 2005 SQL Server 2012 ...

  2. exp导出出现:ORA-00904: "POLTYP": invalid identifier

    相关文章:    <exp导出出现:ORA-00904: : invalid identifier>:http://blog.itpub.net/23135684/viewspace-13 ...

  3. 常用语句1【weber出品】

    1.查看控制文件位置: select * from v$controlfile show parameter control; 2.查询日志文件位置  select group#,status,mem ...

  4. expected function body after function declarator

    我出现这个错误是在pch中添加了一个a.h文件 然后在其他文件的b.h文件中就出现这个错误.. 后来排查出原因是: 在pch中, 这个a.h文件在b.h文件之后, 所以在b.h中使用的时候就会报错

  5. C++拾遗(十二)C++代码重用

    “has-a”关系 通常有两种方法实现: 1.被包含,本身是另一个类的对象. 2.私有或者保护继承. 主要讨论第二种方法,在继承时使用private关键字(或者不用任何关键字,默认就是私有的). 使用 ...

  6. Oracle数据库之FORALL与BULK COLLECT语句

    Oracle数据库之FORALL与BULK COLLECT语句 我们再来看一下PL/SQL块的执行过程:当PL/SQL运行时引擎处理一块代码时,它使用PL/SQL引擎来执行过程化的代码,而将SQL语句 ...

  7. Spring4.0学习笔记(5) —— 管理bean的生命周期

    Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法 ...

  8. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5

    最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈  .之前用ThinkPHP的时候,下载完放到网 ...

  9. CentOS下安装vsftpd架设ftp服务器

    什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. 首先安装vsftpd这个软件,命令是,yum install vsftpd servi ...

  10. 【行为型】Interpreter模式

    解释器模式意图为给定的语言定义其文法表示,同时定义该文法表示的一套解释器来解释语言中的句子.该模式说的简单通俗点,其主要用途是用来解释用的.至于解释什么,则要看具体的上下文环境.我们可以为一个表达式专 ...