文档章节

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

开源中国段子手
 开源中国段子手
发布于 2016/01/31 23:39
字数 1833
阅读 116
收藏 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
引用 JAVA标签库JSTL-EL表达式介绍使用配置手册

引用 【轰隆隆】 的 JAVA标签库JSTL-EL表达式介绍使用配置手册 JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代...

junsun
2010/10/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

@SpringBootApplication 注解

@SpringBootApplication注解是一个组合注解,包含以下注解 @Target(ElementType.TYPE) 注解的作用目标 @Retention(RetentionPolicy.RUNTIME) Reteniton的作用是定义被它所注解的注解保留多久,...

java.刘
36分钟前
0
0
sentinel自定义DataSource实战

序 本文主要研究一下如何自定义sentinel的DataSource,这里以jdbc为例。 maven <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sen......

go4it
52分钟前
1
0
xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和Decisio...

tantexian
53分钟前
0
0
php-fpm的pool - 慢执行日志 - 进程管理 - open_basedir

php-fpm的pool : 为避免多站点使用同一个pool时因一个站点故障导致php资源耗尽,牵连使用同一个pool的其他站点的正常工作,可对每一个站点设置独立pool。 增加pool: 1.编辑php-fpm配置文件...

ZHENG-JY
今天
0
0
Linux之ssh服务默认端口修改

导读 SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet,具有更高的安全...

问题终结者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部