JSP 标准标签库(JSTL)
概念:JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL即JavaServer Pages Tag Library。(是由Apache组织提供的开源的免费的jsp标签)
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
核心标签
格式化标签
SQL 标签
XML 标签
JSTL 函数
作用:用于简化和替换jsp页面上的java代码
JSTL 库安装
Apache Tomcat安装JSTL 库步骤如下:
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
将 tld 下的需要引入的 tld 文件复制到 WEB-INF 目录下。
接下来我们在 web.xml 文件中添加以下配置:
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
使用任何库,你必须在每个 JSP 文件中的头部包含
核心标签
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
其中 "c" 为前缀,核心标签库的uri为 "http://java.sun.com/jsp/jstl/core"
标签
描述
用于在JSP中显示数据,就像<%= ... >
用于保存数据
用于删除数据
用来处理产生错误的异常状况,并且将错误信息储存起来
与我们在一般程序中用的if一样
本身只当做
检索一个绝对或相对 URL,然后将其内容暴露给页面
基础迭代标签,接受多种集合类型
根据指定的分隔符来分隔内容并迭代输出
用来给包含或重定向的页面传递参数
重定向至一个新的URL.
使用可选的查询参数来创造一个URL
格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签
描述
使用指定的格式或精度格式化数字
解析一个代表着数字,货币或百分比的字符串
使用指定的风格或模式格式化日期和时间
解析一个代表着日期或时间的字符串
绑定资源
指定地区
绑定资源
指定时区
指定时区
显示资源配置文件信息
设置request的字符编码
SQL标签
JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
标签
描述
指定数据源
运行SQL查询语句
运行SQL更新语句
将SQL语句中的参数设为指定值
将SQL语句中的日期参数设为指定的java.util.Date 对象值
在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行
XML 标签
JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的
XercesImpl.jar、xalan.jar
函数
描述
fn:contains()
测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()
测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()
测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()
跳过可以作为XML标记的字符
fn:indexOf()
返回指定字符串在输入字符串中出现的位置
fn:join()
将数组中的元素合成一个字符串然后输出
fn:length()
返回字符串长度
fn:replace()
将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()
将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()
测试输入字符串是否以指定的前缀开始
fn:substring()
返回字符串的子集
fn:substringAfter()
返回字符串在指定子串之后的子集
fn:substringBefore()
返回字符串在指定子串之前的子集
fn:toLowerCase()
将字符串中的字符转为小写
fn:toUpperCase()
将字符串中的字符转为大写
fn:trim()
移除首尾的空白符
常用标签的学习
if 标签
if标签,相当于java代码的if语句。属性 test 必须属性,接受boolean表达式。如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容。 一般情况下,test属性值会结合Expression Language表达式一起使用。
实例引入
我是会被显示的!!!
我是不会被显示的!!!
输出集合的每个元素(集合不为空的情况下)
<%
List
list.add("赵三");
list.add("李四");
list.add("王五");
request.setAttribute("list", list);
%>
<%-- 在list不为空的情况下,输出list中的每个元素 --%>
${requestScope.list[0]}
${requestScope.list[1]}
${requestScope.list[2]}
浏览器页面输出:
赵三
李四
王五
判断一个书是否为偶数
<%
int number = 179;
request.setAttribute("number", number);
%>
<%= number %> 不是偶数!!!
<%= number %> 是偶数!!!
浏览器页面输出:
179 不是偶数!!!
choose 标签
choose标签,相当于java代码的switch语句。用于在众多选项中做出选择。switch语句中有case,而
要求:
数字编号对应星期几案例:
域中存储一个数
使用choose标签取出该数
使用when标签做数据判断
实现:
<% request.setAttribute("number", 1); %>
浏览器输出:
星期一
forEach 标签&forTokens 标签
这些标签封装了Java中的for,while,do-while循环。相比而言,
forEach 语法格式
items=" begin=" end=" step=" var=" varStatus=" ... forTokens 语法格式 items=" delims=" begin=" end=" step=" var=" varStatus=" ... 属性 属性 描述 是否必要 默认值 items 要被循环的信息 否 无 begin 开始的元素(0=第一个元素,1=第二个元素) 否 0 end 最后一个元素(0=第一个元素,1=第二个元素) 否 Last element step 每一次迭代的步长 否 1 var 代表当前条目的变量名称 否 无 varStatus 代表循环状态的变量名称 否 无 属性 描述 是否必要 默认值 delims 分隔符 是 无 Item
浏览器中显示:
Item 1
Item 2
Item 3
Item 4
Item 5
items="java,python,linux,mysql,mongodb,redis,hadoop,spark,scala" delims="," var="name">
浏览器中显示:
java
python
linux
mysql
mongodb
redis
hadoop
spark
scala
综合练习
需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中
实现
创建Users.java
public class Users {
private String name;
private int age;
private Date birthday;
public Users() { }
public Users(String name, int age, Date birthday) {
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getSimpleBirthday() {
return (birthday != null) ?
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(birthday)
: "";
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public Date getBirthday() { return birthday; }
public void setBirthday(Date birthday) { this.birthday = birthday; }
}
实现jsp
<%
List
list.add(new Users("张三", 20, new Date()));
list.add(new Users("李四", 22, new Date()));
list.add(new Users("王五", 21, new Date()));
request.setAttribute("list", list);
%>
| 姓名 | 年龄 | 出生 | 编号 |
| ${i.count} | ${user.name} | ${user.age} | ${user.simpleBirthday} |
| ${i.count} | ${user.name} | ${user.age} | ${user.simpleBirthday} |
浏览器中显示:
参考文献
JSP 标准标签库(JSTL) | 菜鸟教程
