JSTL(JSP Standard Tag Library,JSP标准标签库)
JSTL(JSP Standard Tag Library,JSP标准标签库)
开源中国段子手 发表于2年前
JSTL(JSP Standard Tag Library,JSP标准标签库)
  • 发表于 2年前
  • 阅读 97
  • 收藏 8
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。


JSTL 库安装

Apache Tomcat安装JSTL 库步骤如下:

  • 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 下载jakarta-taglibs-standard-1.1.1.zip 包并解压,将jakarta-taglibs-standard-1.1.1/lib/下的两个jar文件:standard.jar和jstl.jar 文件拷贝到/WEB-INF/lib/下。

使用任何库,你必须在每个JSP文件中的头部包含<taglib>标签。


根据JSTL标签所提供的功能,可以将其分为5个类别。

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数http://my.oschina.net/passer007/admin/new-blog

核心标签

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:


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



<c:out>标签

<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。举例来说,如果想要访问 customer.address.street,只需要这样写:<c:out value="customer.address.street">。<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。

属性

属性
描述
是否必要
默认值
value
要输出的内容


default
输出的默认值

主体中的内容
escapeXml
是否忽略XML特殊字符

true


范例


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	escapeXml为false时:<c:out value = "<hr>" escapeXml = "false"/>
	escapeXml为true时:<c:out value = "<hr>" escapeXml = "true"/>
	两种语法格式有default<c:out value = "${user}" default = "user的值为空"/>
	两种语法格式没有default<c:out value = "${user}"/>
</body>
</html>

<c:set> 标签

<c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

属性

属性
类型
描述
var    
String
用于指定变量名
target
Object
用于指定存储变量值或者标签主体的目标对象,可以是JavaBean和Map对象
property
String
用于指定目标对象存储数据的属性名
scope
String
用于指定变量的作用域,默认值是page
value
Object
用于指定变量值




范例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="user" class = "com.zhong.model.User"></jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	1.语法一:<c:set var = "user" value = "jstl" scope = "session"/>
	输出的变量值为:${sessionScope.user}<br>
	2.语法二:<c:set var = "number" scope = "request">
				${3.14159}</c:set>
	输出的变量值为:${requestScope.number}<br>
	3.语法三:
	<c:set value = "1" target = "${user}" property = "id"/>
	<c:set value = "admin" target = "${user}" property = "username"/>
	<c:out value = "${user.id}"/>
	<c:out value = "${user.username}"/><br>	
</body>
</html>//需要自己写一下user噢!

<c:remove> 标签

<c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。这个标签不是特别有用,不过可以用来确保JSP完成清理工作。

属性(这里的属性同c:out)

范例

添加新变量add赋值yoyo输出:<c:set var = "add" value = "yoyo" scope = "page"/>
	<c:out value = "${add}"/><br>
	删除变量add,并且输出add:<c:remove var = "add" scope = "page"/>
	<c:out value = "${add}" default = "add的值为空"/>

<c:catch> 标签

<c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

<c:catch>标签的语法格式如下:

<c:catch [var = "exception"]>
    ...//可能存在异常的代码
</c:catch>
var属性可以指定存储异常信息的变量,这是一个可选项,如果不需要保存异常信息,则可以省略该属性

范例

异常处理:<c:catch var = "exception">
		<%
			int a = 5/0;
			out.println(a+"");
		%>
	</c:catch>
	<c:out value = "${exception}"/>

<c:if> 标签

<c:if>标签判断表达式的值,如果表达式的值为真则执行其主体内容。

属性

属性
类型
描述
test
boolean
必选属性,用于指定条件表达式
var
String
可选属性,用于指定变量名。这个属性会指定test属性的判断结果将存放在哪个变量中,如果变量不存在就创建它
scope
String
存储范围,改属性用于指定var属性所指定的变量的存在范围

范例

<c:if test = "${empty param.command}">
		<form name = "formm" method = "post">
			评论:
			<textarea name = "command" cols = "30" rows = "4"></textarea>
			<br>
			<input type = "submit" value = "提交">
		</form>
	</c:if>
如果页面当中的command元素为空的,则执行展现表单,否则不展示。

<c:choose>, <c:when>, <c:otherwise> 标签

<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。switch语句中有case,而<c:choose>标签中对应 有<c:when>,switch语句中有default,而<c:choose>标签中 有<c:otherwise>。

语法格式如下:

<c:choose>
      <c:when test = "condition">
            //业务逻辑
      </c:when>
      //多个c:when标签
      <c:otherwise>
            //业务逻辑
      </c:otherwise>
</c:choose>
范例:

<c:choose>
		<c:when test = "${empty sessionScope.user}">
			请注册
		</c:when>
		<c:otherwise>
			欢迎:${sessionScope.user}
			<form action = "post" name = "formtest">
				<input type = "submit" name = "退出"/>
			</form>
		</c:otherwise>
	</c:choose>
<c:choose>
		<c:when test = "${now.hours>=6 && now.hours<=8}">
			<c:out value = "早上好!"/>
		</c:when>
		<c:when test = "${now.hours>=21 && now.hours<=24}">
			<c:out value = "现在是编程时间!"/>
		</c:when>
		<c:otherwise>
			<c:out value = "该时段没有任何建议!"/>
		</c:otherwise>
	</c:choose>

<c:forEach>, <c:forTokens> 标签

这些标签封装了Java中的for,while,do-while循环。相比而言,<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。<c:forTokens>标签将字符串分隔为一个子串数组然后迭代它们。

属性
类型
描述
items
数组、集合类、字符串和枚举类型
被循环遍历的对象,多用于数组与集合类
var
String
循环体的变量,用于存储items指定的对象的成员
begin
int
循环的起始位置,如果没有指定,则从集合的第一个值开始迭代
end
int
循环的终止位置,如果没有指定,则一直迭代到集合的最后一位
step
int
循环的步长
varStatus
String
循环的信息状态,信息状态列表在下表

属性
类型
描述
index
int
当前循环的索引值,从0开始
count
int
当前循环的循环计数,从1开始
first
boolean
是否为第一次循环
last
boolean
是否为最后一次循环

范例

<%
		ArrayList list = new ArrayList();
		list.add("Python");
		list.add("Java");
		list.add("HTML5");
		request.setAttribute("list", list);
	%>
	<c:forEach items = "${requestScope.list}" var = "temp" begin = "0" varStatus = "id">
		${id.index}:${temp}<br>
	</c:forEach>
c:forTokens标签与c:forEach标签相似,属性与其上相同但是增加一个属性delims表示分割字符串的分隔符,可以同时使用多个分隔符

<c:set var = "string" value = "Python,Java,HTML5,PHP"/>
	<c:forTokens items = "${string}" delims = "," var = "temp">
		${temp}<br>
	</c:forTokens>




标签: jstl
共有 人打赏支持
粉丝 43
博文 177
码字总数 95519
×
开源中国段子手
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: