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


JSTL 库安装

Apache Tomcat安装JSTL 库步骤以下: html

  • 从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>标签。 java


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

  • 核心标签
  • 格式化标签
  • 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标记字符,因此它们不会被当作标签来处理。 数组

属性 session

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


default
输出的默认值

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

true


范例 jsp


<%@ 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 对象的值。 函数

属性 post

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




范例 ui

<%@ 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>
相关文章
相关标签/搜索