Jsp第十课 Jsp标准标签库(JSTL)的学习和使用
Posted 笔触狂放
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jsp第十课 Jsp标准标签库(JSTL)的学习和使用相关的知识,希望对你有一定的参考价值。
JSTL概念
JSTL(JavaServer Pages Standard Tag Library)-JSP标准标签库,由SUN公司推出的,由Apache Jakarta 组织负责维护的用于编写和开发JSP页面的一组标准标签
JSTL 的发布包有两个版本:Standard-1.0 Taglib 、Standard-1.1 Taglib
JSTL所提供的标签函数库主要分为五大类:
- 核心标签库
- I18N 格式标签库
- SQL 标签库
- XML 标签库
- 函数标签库
标签(Tag) 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的
标签库(Tag library) 由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库
标签库描述文件(Tag Library Descriptor) 标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的,一般以.tld作为文件的扩展名
标签处理类(Tag Handle Class) 标签处理类是一个Java类,这个类继承了TagSupport或者扩展了SimpleTag接口,通过这个类可以实现自定义JSP标签的具体功能
JSTL项目配置步骤
创建一个动态网站项目,将jstl.jar和standard.jar插件拷贝至lib文件夹中,将c.tld配置文件拷贝至WEB-INF文件夹中:
接着打开web.xml文件,配置以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Day15Jsp</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 设置Jsp的配置文件 -->
<jsp-config>
<!-- 添加标签库 -->
<taglib>
<!-- 标签库的导入的网址 -->
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<!-- 标签库的本地配置文件 -->
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
然后在使用JSTL的jsp文件中加入taglib指令即可使用标签库的内容:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 哪一个Jsp页面需要使用核心标签库,就需要加入taglib指令
uri:填核心标签库的网址
prefix:填本地配置文件的前缀
-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
核心标签库
1.通用标签
通用标签库用于操作(创建、删除、显示) JSP 页面内的作用域变量
通用标签库中的标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 哪一个Jsp页面需要使用核心标签库,就需要加入taglib指令
uri:填核心标签库的网址
prefix:填本地配置文件的前缀
-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 通用标签 -->
<% request.setAttribute("a", "苹果"); %>
<c:set var="a1" value="苹果1" scope="request"></c:set>
获得Java代码存储在request对象中的数据为:$a<br>
获得set标签存储在request对象中的数据为:$a1<br>
<!-- 使用set标签的时候,scope可以省略,一旦省略,
默认将数据存储在pageContext对象中 -->
<c:set var="b" value="香蕉" ></c:set>
$pageScope.b<br>
<!-- 将存储在request对象中的数据,存储至pageContext -->
<c:set var="apple" value="$a" scope="page"></c:set>
$pageScope.apple<br>
<!-- 将西瓜这个数据存储至application对象 -->
<c:set var="c" scope="application">西瓜</c:set>
$applicationScope.c<br>
</body>
</html>
结合Jsp动作技术完成对象的存储
创建一个Car类,将其进行封装:
package com.abc;
public class Car
private String name;//车的品牌
private double price;//车的价格
private String type;//车的类型
public String getName()
return name;
public void setName(String name)
this.name = name;
public double getPrice()
return price;
public void setPrice(double price)
this.price = price;
public String getType()
return type;
public void setType(String type)
this.type = type;
public Car()
super();
// TODO Auto-generated constructor stub
public Car(String name, double price, String type)
super();
this.name = name;
this.price = price;
this.type = type;
@Override
public String toString()
return "Car [name=" + name + ", price=" + price + ", type=" + type + "]";
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 哪一个Jsp页面需要使用核心标签库,就需要加入taglib指令
uri:填核心标签库的网址
prefix:填本地配置文件的前缀
-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 通用标签 -->
<!-- 可以结合Jsp动作一起完成将对象的数据存储至某一个四大作用域中 -->
<jsp:useBean id="car" class="com.abc.Car" scope="session"></jsp:useBean>
<!-- 要给哪个对象中的什么变量存储什么数据 -->
<!-- target:填四大作用域中对应的对象
property:填变量名称 -->
<c:set target="$car" property="name" value="红旗" ></c:set>
<c:set target="$car" property="price" value="360000" ></c:set>
<c:set target="$car" property="type" value="商务车" ></c:set>
获得存储在session对象中的汽车信息为:<br>
品牌:$car.name<br>
价格:$car.price<br>
类型:$car.type<br>
<!-- 删除存储在四大作用域中的数据 -->
<c:remove var="a1"/>
$empty(a1)<br>
<c:remove var="car"/>
$empty(car)<br>
$car.name <br>
<!-- 将四大作用域中的数据进行输出显示 -->
<c:out value="$c"></c:out><br>
$c
</body>
</html>
2.条件标签
JSTL 提供条件标签以支持 JSP 页面中的各种条件
条件标签包括:
two.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 判断一个数是奇数还是偶数 -->
<c:set var="num" value="365" scope="request"></c:set>
<c:if test="$num mod 2 eq 0 ">
<p style="color: red;">该数为偶数</p>
</c:if>
<c:if test="$num mod 2 ne 0 ">
<p style="color: green;">该数为奇数</p>
</c:if>
<!-- 写法二
test:作为条件表达式,用于判断结果为true还是false
var:存储的数据取的对应的名称
scope:将数据存储在哪一个作用域中
-->
<c:if test="$num mod 2 eq 0 " var="jieguo" scope="page"></c:if>
<c:if test="$jieguo">
<p style="color: red;">该数为偶数</p>
</c:if>
<c:if test="$!jieguo">
<p style="color: green;">该数为奇数</p>
</c:if>
<!-- 多分支条件标签 -->
<!-- 判断现在的月份是属于哪一个季节 -->
<c:set var="month" value="11" scope="session"></c:set>
<c:choose>
<c:when test="$month>=1 && month<=3 ">
<p style="color: green;">春季</p>
</c:when>
<c:when test="$month>=4 && month<=6 ">
<p style="color: red;">夏季</p>
</c:when>
<c:when test="$month>=7 && month<=9 ">
<p style="color: yellow;">秋季</p>
</c:when>
<c:when test="$month>=10 && month<=12 ">
<p style="color: blue;">冬季</p>
</c:when>
<c:otherwise>
<p style="color: pink;">当前的月份是一个错误的月份</p>
</c:otherwise>
</c:choose>
</body>
</html>
3.迭代标签
迭代标签用于多次计算标签体
迭代标签库中的标签有 :
three.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String[] names="张三","李四","王五","小明";
request.setAttribute("names", names);
%>
$names[0],$names[1],$names[2],$names[3]<br>
<!-- 迭代标签
items:填存储在四大作用域中的数组
var:表示定义一个变量,用于临时存储每一次循环从数组中获取出来的元素
begin:表示设置从哪个下标开始循环
end:表示设置到哪个下标结束循环
varStatus:表示获得每一次循环的个数
-->
<c:forEach items="$names" varStatus="v" var="name">
<c:if test="$v.count % 2 ==0 ">
获得数组中的数据为:$name<br>
</c:if>
</c:forEach>
<!-- 对字符串的分割 -->
<c:forTokens items="蓝色,|王五|123,456,abc|def,hahaha" var="s" delims="|">
$s <br>
</c:forTokens>
</body>
</html>
本章内容到这里结束!!!
以上是关于Jsp第十课 Jsp标准标签库(JSTL)的学习和使用的主要内容,如果未能解决你的问题,请参考以下文章