JavaWeb:JSP标准标签库

说明

什么是JSTL?

  JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制的标签库的集合,用来解决像遍历map或者集合、条件测试、XML处理,甚至数据库访问和数据操作等常见的问题。

JSTL库的安装

下载地址:
  • 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 菜鸟教程网下载地址:jakarta-taglibs-standard-1.1.2.zip
安装
  将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下并添加至环境变量。
  然后在IDEA中加入tld约束文件:

  

  
  同样的操作加入其余四个tld约束文件:

区域 URI 前缀
XML http://java.sun.com/jsp/jstl/xml x
国际化 http://java.sun.com/jsp/jstl/fmt fmt
数据库 http://java.sun.com/jsp/jstl/sql sql
函数 http://java.sun.com/jsp/jstl/functions fn

在JSP中使用JSTL

  在JSP页面中引用JSTL库,必须在在JSP页面的开头做以下声明:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
  <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml">
  <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt">
  <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql">
  <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions">

说明:

  前缀可以使任意的,但是为了更加规范,建议采用如此简写形式

一般行为

<c:out>标签

说明:
  out标签可以将一个表达式的结果打印到网页上,这个表达式可以是基于<%=?%>的传统形式,也可以是EL表达式
演示:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%--默认值有两种表示方式--%>
<c:out value="${param.username}">
默认值
</c:out> <c:out value="${param.username}" default="默认值"/>
</body>
</html>

<c:set>标签

说明:

  set标签具有以下三个作用:
  1.为String类型的命名变量设定值。
  2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。
  3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。
演示:
  1.为String类型的命名变量设定值。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set var="命名变量的名字" value="哈哈哈" scope="session"/>
<c:set var="user" value="Tom" scope="session"/>
<c:out value="${sessionScope.user}" default="unknow"/>
</body>
</html>

  2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="product" scope="session" class="domain.Product"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${product}" property="name" value="白象方便面"/>
<c:out value="${product.name}" default="unknow"/>
</body>
</html>

  3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${hashmap}" property="1" value="Monday"/>
<c:set target="${hashmap}" property="2" value="Tuesday"/>
<c:set target="${hashmap}" property="3" value="Wednesday"/>
<c:out value="${hashmap.get('1')}" default="unknow"/>
</body>
</html>

<c:remove>标签

说明:
  reomve标签用于删除特定范围内的命名变量。
演示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${hashmap}" property="1" value="Monday"/>
<c:remove var="hashmap" scope="request"/>
<c:out value="${hashmap.get('1')}" default="unknow"/>
</body>
</html>

条件行为

<c:if>标签

说明:
  用于实现Java语言中的if语句的功能。
演示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--测试结果将保存在result变量中--%>
<c:if test="${param.username=='Tom'}" var="result" scope="request">
<%--如果测试成功,则会输出true--%>
<c:out value="${result}"/>
</c:if>
</body>
</html>

<c:choose>、<c:when>、<c:otherwise>

说明:
  <c:choose>、<c:when>、<c:otherwise>三个标签一起连用,可以实现Java语言中的if-else语句的功能。
演示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:choose>
<c:when test="${empty param.username}">
Noknown user
</c:when>
<c:when test="${param.username=='Tom'}">
Tom
</c:when>
<c:otherwise>
Other
</c:otherwise>
</c:choose>
</body>
</html>

迭代标签

<c:forEach标签>

说明:
  forEach标签用于遍历集合中的对象,并且能重复执行标签主体。
演示:
  1.基本用法:

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>">
${book} &nbsp;
</c:forEach>
</body>
</html>

  2.foreach的varStatus属性
  varStatus属性用于设定一个LoopTagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。
  • count 当前元素在集合中的序号,从1开始计数。
  • index 当前元素在集合中的索引,从0开始计数。
  • first 当前元素是否时集合中的第一个元素
  • last 当前元素是否是集合中的最后一个元素

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>" varStatus="status">
${status.count} &nbsp;${status.index}&nbsp;${status.first}&nbsp;${status.last}&nbsp;${book}<br>
</c:forEach>
</body>
</html>

  3.begin、end、step
  begin、end、step分别指定循环的起始索引、结束索引和步长。

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>" varStatus="status" begin="1" end="2" step="1">
${status.count} &nbsp;${status.index}&nbsp;${status.first}&nbsp;${status.last}&nbsp;${book}<br>
</c:forEach>
</body>
</html>


  4.可以遍历的集合
  forEach可以遍历的集合包括:
  • Set、List、Map、Iterator、Enumeration接口的实现类。

<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
HashMap hashMap = new HashMap();
hashMap.put("one","Monday");
hashMap.put("two","Tuesday");
hashMap.put("three","Wednesday"); %>
<c:forEach var="week" items="<%=hashMap%>">
${week.key} &nbsp;${week.value}<br>
</c:forEach>
</body>
</html>

• Java数组
• 以逗号隔开的字符串

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String names = "Tom,Mike,Juice"; %>
<c:forEach var="name" items="<%=names%>">
${name}<br>
</c:forEach>
</body>
</html>

<c:forTokens>标签

说明:
  forTokens标签用于遍历字符串中用特定分隔符分割的子字符串,并且能重复执行标签主体。
演示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String names = "Tom|Mike|Juice"; %>
<c:forTokens var="name" items="<%=names%>" delims="|">
${name}<br>
</c:forTokens>
</body>
</html>

未完待续...

JavaWeb:JSP标准标签库的更多相关文章

  1. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  2. JSP 标准标签库(JSTL)之最常用的JSTL标签总结

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...

  3. jsp标准标签库

    抄袭自:http://www.cnblogs.com/hongten/archive/2011/05/14/2046005.html JSP标准标签库     Pass by xkk ,and aut ...

  4. JSTL的全称:JSP Standard Tag Library, jsp 标准标签库

    JSTL的全称:JSP Standard Tag Library, jsp 标准标签库 JSTL的作用     提供给Java web开发人员一个标准通过的标签函数库和EL来取代传统直接在页面上嵌入j ...

  5. JSTL(JSP Standard Tag Library ,JSP标准标签库)

    JSTL标签之核心标签   JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管 ...

  6. JSP标准标签库(JSTL)--JSTL简介与安装

    对于MVC设计模式来讲,我们一直强调,在一个JSP钟scriptlet代码越少越好,但是只靠以前的概念很难实现,因为标签的开发特别麻烦,所以为了简化标签,也为了让标签更具备一些通用性,所以一般在开发中 ...

  7. JSP 标准标签库JSTL

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  8. JSP标准标签库:JSTL

    JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能. jstl出现的目的同el一样也是要代替jsp页面中的脚本代码. ...

  9. JSTL(JSP标准标签库)

    JSP标准标签库(JavaServer Pages Tag Library, JSTL)是一个定制JSP标签库的集合,封装了JSP应用的通用核心功能.用来解决像遍历Map或集合.条件测试.XML处理, ...

随机推荐

  1. 华为终端-新浪微博联合创新,3D建模+AR 成就全新社交体验

    近日,全球首款搭载3D感知摄像头的手机华为Mate 20发布. 通过Mate 20自带的景深摄像头及麒麟980的NPU加速能力,手机能够在获取物体表面信息后,完成高速的精细化3D建模. 那么,如何让3 ...

  2. NDK 安装小结

    建议先看后面的错误,可以先执行那些命令以免出现相关问题. chmod a+x android-ndk-r10c-linux-x86_64.bin ./android-ndk-r10c-linux-x8 ...

  3. Java进阶03 IO基础(转载)

    IO示例 下面是演示的文件file.txt Hello World! Hello Nerd! 先来研究一个文件读取的例子: import java.io.*;public class Test{ pu ...

  4. dm8148 开发只boot启动参数vram=128简介

    显存 全称显示内存,即显示卡专用内存.显存对于显卡就好比内存对于整台电脑,地位非常重要,它负责存储显示芯片需要处理的各种数据.显存容量的大小.性能的高低,直接影响着电脑的显示效果.目前,工作站显卡常用 ...

  5. 用VS2010进行CMAKE的时候“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”

    由于要编译LTP,LTP在MINGW下又不能编译,所以忍痛安装了VS2010+CMAKE. 由于VS在本科时候虐我千百遍,所以一直心存阴影... 转入正题,当cmake的时候, 它提示 “LINK : ...

  6. What is /dev/null 2>&1?

    >> /dev/null redirects standard output (stdout) to /dev/null, which discards it. (The >> ...

  7. azure绑定ssl,godaddy的ssl证书

    域名是godaddy 申请的,证书也是godaddy 购买的,DV证书. godaddy购买证书后,申请ssl,需要输入,csr.网上找的csr生成工具,我使用  https://myssl.com/ ...

  8. Android桌面小组件的使用

    一:建立一个类继承AppWidgetProvider 二:建立AWP的布局文件: 布局自己定义一个,但是在使用控件上是有要求的: 以上是Widget目前支持的控件. 三:编写AWP的信息文件:需要在r ...

  9. android-support-v7使用

    前言:android-support-v7与v4相对,还是有很大不同的,首先v7中分为的3个JAR包,其次v7中提供的一些布局资源,所以在使用的时候,需要将v7的源码项目导入,作为lib项目来添加到你 ...

  10. matlab小数分数转换

    >> format short      %%%% MATLAB默认格式,小数显示 >> format rat    %%%%% 转成分数表示