文档章节

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

开源中国段子手
 开源中国段子手
发布于 2016/01/31 23:39
字数 1833
阅读 121
收藏 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/
浅谈jsp、freemarker、velocity区别

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

cccyb
2017/10/21
0
0
javaweb开发之EL和JSTL

一、EL 1.概述 EL 全名为Expression Language。 EL表达式可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码。 EL主要作用如下: (1)获取数据: EL表达式主要用于替换JSP页面中的...

小米米儿小
2013/12/05
0
0
<%@ taglib prefix="c" uri="http://java.sun.com/jst

有些时候,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>会报错,错误提示为: Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 主......

dailei1021
2013/12/14
0
1
IntelliJ IDEA 使用JSTL标签库(IDEA 加载 tld文件)

这两天在 IntelliJ IDEA 中 使用 C标签(JSTL)的时候发现引入进来有问题,不但没提示而且还有红色警告,所以经过一番谷歌的查找之后解决了这个问题,发现是没有导入tld文件的问题。 在一开始...

JacCoffee
2013/12/01
0
3
AOP-style programming for Web applications

AOP-style programming for Web applications Dmitry Namiot dnamiot@servletsuite.com In this article we are demonstrating the usage of Java Servlets filters. Servlet filters are a ......

yaraja
2011/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

spring只

一、IOC(Inversion of Control)或者依赖注入(Dependency Injection) 1、底层实现原理:反射 2、三大核心接口: BeanFactory:简单容器系列,只是实现了容器最基本的功能。 ApplicationC...

狠一点
7分钟前
0
0
缓存架构SpringBoot集成Curator实现zookeeper分布式锁

一、分布式锁简介 1、什么是锁 在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。 而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程...

架构师springboot
9分钟前
0
0
11《Java核心技术》之Java提供了哪些IO方式? NIO如何实现多路复用?

一、提出问题 IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经...

飞鱼说编程
16分钟前
0
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

linuxprobe16
16分钟前
0
0
55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

1、Mysql用户管理; 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限; 语法: grant all on *.* to 'user'@'127.0.0.1' identified by 'password'; g...

芬野de博客
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部