文档章节

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

开源中国段子手
 开源中国段子手
发布于 2016/01/31 23:39
字数 1833
阅读 126
收藏 8


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>




© 著作权归作者所有

共有 人打赏支持
开源中国段子手
粉丝 43
博文 178
码字总数 95519
作品 0
南京
程序员
私信 提问
加载中

评论(1)

乐山ing
乐山ing
内容很不错
不过里面的很多链接没有,比如:
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
Java程序员从笨鸟到菜鸟之(二十)jsp自定义标签

一、基本概念 1、标签(Tag) 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大...

长平狐
2012/11/12
96
0
jsp中include乱码的三种解决方案

问题描述:<%@ include file="/footer.html" %> 的中文乱码问题 第一种情况可以修改被include的文件: 1.当jsp include动态文件时(jsp文件)可以在被include的jsp文件头部加上代码: <%@ pa...

扁-哥
2013/04/12
0
0
浅谈jsp、freemarker、velocity区别

以前做web开发页面层用的基本就是就是,最近公司java项目页面层用的技术是velocity。听说jsp要淘汰,也不知道是真是假,但本人还是比较喜欢jsp的,下面是网上查找的javaweb项目页面3种技术的...

cccyb
2017/10/21
0
0
JSP总结五:JSP元素

JSP注释 <%--*****--%> 是不输出到客户端的注释符。 <%!--*****--%> 是输出到客户端的注释符。 指令元素 指令元素用于指定关于Web页面本身的信息。比如: <%@ page contentType=”text/html...

长平狐
2012/08/28
102
0
mvc:view-controller

This tag is a shorcut for defining a ParameterizableViewController that immediately forwards to a view when invoked. 这个标签是为了简化ParameterizableViewController映射到视图的配......

随智阔
2014/03/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《激荡三十年》读书笔记的相关感悟3300字

《激荡三十年》读书笔记的相关感悟3300字: 《激荡三十年》是吴晓波以编年体的方式记录的中国1978年改革开放后至2008年的30年的企业史。这套被称为“新货殖列传”的“企业史记”记录了三十年...

原创小博客
15分钟前
0
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
53分钟前
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
1
0
HashTable和Vector为什么逐渐被废弃

HashTable,不允许键值为null,还一个就是put方法使用sychronized方法进行线程同步,单线程无需同步,多线程可用concurren包的类型。 如编程思想里面说的作为工具类,封闭性做的不好没有一个...

noob_chr
昨天
1
0
Win10 下安装Win7双系统

很多人买了预装64位Win8/8.1的电脑后想重装(或者再安装一个)Win7系统,但是折腾半天发现以前的方法根本不奏效。这是因为预装Win8/8.1的电脑统一采用了UEFI+GPT引导模式,传统的BIOS(Legacy...

yaly
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部