JSTL标签库

本文详细介绍了JSTL标签库在JSP页面中的应用,包括核心标签库、格式化标签库、XML标签库、函数标签库、数据库标签库等内容,以及如何在JAVAEE5.0和J2EE1.4环境下引入和使用JSTL标签库。重点阐述了常用标签库的使用方法、参数解释和实例演示,旨在帮助开发者提高页面展示的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义标签:

我们可以自己去定义一些jsp标签。自定义包含两个:java类,tld文件(标签的描述文件)

标签库JSTL(JSP Standard Tag Library):

因为在jsp中使用java代码去控制页面的显示(即:用小段的<%%>),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。

n 常用的JSTL标签库:

n 核心标签库:http://java.sun.com/jsp/jstl/core包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。

n 格式化标签库:http://java.sun.com/jsp/jstl/fmt用来格式化显示数据的工作,比如:对不同区域的日期格式化等。

n XML 标签库:http://java.sun.com/jsp/jstl/xml用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。

n 函数标签库http://java.sun.com/jsp/jstl/functions 用来读取已经定义的某个函数。

n 数据库标签库:http://java.sun.com/jsp/jstl/sql可以做访问数据库的工作。

J2EE 1.4:

使用Java标签库首先要在项目中引入jstl.jar和standard.jar两个jar包,MyEclipse中有这个功能;

Standard.jar中有tld文件(是一个xml文档),这是关于JSTL标签的说明文件,对应的java类就是加载这些说明,然后对我们写的JSTL标签进行解析处理。

JAVAEE 5.0:

javaee5.0类库已经自带了jstl相关的jar包。不需要再添加,可以直接使用jstl。

其次要在页面中加入这样一个标签头[gjw1] <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:out>标签用于显示变量数据。

<c:out value="${a}" default="空"[c2] escapeXml="true" [c3] ></c:out>

<c:set>标签的常用属性(将值存储到作用域或为 JavaBean 中的变量属性赋值 ):

n <c:set var=“name“ value=“zhangsan“ scope=“page”/> (相当于:pageContext.setAttribute(“name”,”zhangsan”))

n 将值zhangsan存储到变量name, name为作用域pageContext中的一个属性。

n <c:set var=“t” ><b>hello c:set!</b></c:set>

n 将本体内容存储到变量t中。

n <c:set target="${u}" property="pwd" value="123" ></c:set>

n 设置已有的EL变量u的属性pwd的值为123

n <c:set target="${u}" property="pwd"[c4] >123456</c:set>

n 将本体内容设为EL变量u的属性pwd的值。

[c5]

<c:remove var="sampleValue" scope="session"/> 相当于:session.removeAttribute(“sampleValue”)

c:if标签à相当于java中的if语句

名称

描述

类型

默认值

test

若返回true,则执行本体内容;否则,不执行。

Boolean

无。

var[c6]

用来存储test执行后的结果

String

Scope

var 指定变量的存储范围

String

page

<c:if test="${empty requestScope.s[gjw7]}" var=”resultTest” >

<h1>true才显示</h1>

</c:if>

执行结果:${ resultTest }

c:choose标签à相当于java中的if-else语句

<c:choose>[gjw8]

<c:when[gjw9] test="${empty requestScope.s}">

<h1>空</h1>

</c:when>

<c:otherwise[gjw10]>

<h1>不空!</h1>

</c:otherwise>

</c:choose>

使用要点:

1. <c:when>必须在<c:otherwise>之前

2. <c:choose>中除了<c:when>/<c:otherwise>不能有其他元素。

c:forEach标签à相当于java中的遍历操作.

常用参数及其含义:

varStatus属性的使用

<%

List list = new ArrayList();

for(int i=0;i<20;i++){

list.add("A:"+i);

}

pageContext.setAttribute("li",list);

%>

<c:forEach items="${li}"[gjw11] var="a"[gjw12] begin="5" end="13" step="3"[gjw13] varStatus="idx"[gjw14] >

<b>${a}</b>

<c:if test="${(idx.index+1)%5= =0}">

<br>

</c:if>

[gjw15] </c:forEach>

<c:import url="http://www.baidu.com"></c:import>类似于 include。但是比include范围广。Include只能加载本web应用的路径。Import可以加载本web应用以外的路径。下面是几种典型的使用:

1.引入本web应用中的资源:

<c:import url="/1.jsp" ></c:import> 此处/代表本web应用根目录

2. 引入外部URL:

<c:import url="http://www.baidu.com" ></c:import>

3. 将所引入文件的内容作为字符串存储在变量中,留待以后使用。

<c:import url="1.jsp" var="t5" scope="page"></c:import>

${t5}

请求重定向:<% response.sendRedirect(“fortoken.jsp”) %>

<c:redirect url="fortoken.jsp">地址栏改变

<c:param name="a" value="33"></c:param>

<c:param name="b" value="44"></c:param>

</c:redirect>

${param.a}

<%

String str = "Where you from?I am from China";

request.setAttribute("str",str);

%>

<c:forTokens items="${str}" delims="?| " var="str1">

<b>${str1}</b><br>

</c:forTokens>

Fn标签库的使用:[gjw16]

简介

在jsp页面上经常遇到得到集合长度、字符长度、字符切取等应用需,在2.0以前这种需是许多程序员对JSTL及为不满意的地方之一。为此在2.0 中添加了functions标签,其提供对以上需求的支持。

使用方法

引用

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

函数说明:

函数

描述

fn:contains(string, substring)

如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)

如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)

如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)

将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)

如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)

返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回

fn:trim(string)

去除参数string 首尾的空格,并将其返回

示例:

<c:forEach items="${li}" var="str" begin="0" end="9" step="1" varStatus="ind">

<b>${fn:substring(str,1,fn:length(str))}</b>

<c:if test="${(ind.index+1)%3==0}">

<br>

</c:if>

</c:forEach>

<c:forEach items='${fn:split("a,b,c",",")}'[gjw17] var="cc" >

${cc} <br>

</c:forEach>

扩展知识点:

JSTL的格式化标签库。(自学!!)


[gjw1]如果在浏览器中看页面的源码时,标签语句原样发了过去,就是因为没加标签头

[c2]当显示变量为null或不存在时,显示”空”

[c3]True:则将文本按照普通文件显示。

False:如果文本中存在HTML数据,则进行解析。

[c4]Target=”${u.password}”,此处这么些错误。

用target指定javabean

用property指定属性名。

[c5]基本用不着!不用看了!

[c6]可以通过他保存该<c:if>执行结果,留待日后做其他处理。

[gjw7]相当于判断表达式,返回true或false

[gjw8]注意 c:choose标签中除了when和otherwise不能加其他的语句

[gjw9]相当于if-else中的if,可以写多个

[gjw10]相当于if-else中的else

[gjw11]遍历哪个对象

[gjw12]暂存变量

[gjw13]起始位置、结束位置、步长(默认为1),都是可选的属性

[gjw14]为了取得下标的属性

[gjw15]常用的换行分页操作

[gjw16]JSTL1.1及以上中使用。

[gjw17]返回一个数组。由于里面有双引号,外面可用单引号。

JSTL中的属性可用双引号、单引号。不过,不写引号不行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值