第1章 JSTL简介
- JSP虽然为我们提供了EL表达式用来替代JSP表达式,但是由于EL表达式仅仅具有输出功能,用于替代JSP中的表达式脚本,而不能替代页面中的JSP代码脚本。
- 为了解决这个问题,JSP为我们提供了可以自定义标签库(Tag Library)的功能,用来替代代码脚本。这样使得整个jsp页面变得更佳简洁。
- 所谓自定义标签库就是指可以在JSP页面中以类似于HTML标签的形式调用Java中的方法。使用方法和我们JSP动作标签类似。
-
而为了方便开发使用,Sun公司又定义了一套通用的标签库名为JSTL(JSP Standard Tag Library),里面定义很多我们开发中常用的方法,方便我们使用。
-
JSTL的标准由Sun公司定制,Apache的Jakarta小组负责实现,是一个不断完善的开放源代码的JSP标签库。
-
JSTL由5个不同功能的标签库组成。如下:
功能范围 | 前缀 | URI |
---|---|---|
核心标签库–重点 | c | http://java.sun.com/jsp/jstl/core |
格式化标签库 | fmt | http://java.sun.com/jsp/jstl/fmt |
函数标签库 | fn | http://java.sun.com/jsp/jstl/functions |
数据库(不使用) | sql | http://java.sun.com/jsp/jstl/sql |
XML(不使用) | x | http://java.sun.com/jsp/jstl/xml |
说明:
函数标签库,需要结合EL表达式使用,里面定义了一些对字符串的操作(对字符串的截取、替换等)。
格式化标签库,主要用来对日期、时间、数字进行国际化的操作。
在jsp标签库中使用taglib指令引入标签库
CORE 标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML 标签库
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
FMT 标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
SQL 标签库
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
FUNCTIONS 标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
第2章 使用JSTL标签库步骤
第一步:先引入JSTL标签库的jar包类库到WEB-INF/lib目录下
这两个jar包,和笔记在同一个目录下。
第二步:在使用的jsp页面中使用taglib指令导入需要的标签库
- 以core核心标签库为例,需要在jsp页面中导入标签库的引用。
- prefix用来指定前缀名,我们通过该名来使用JSTL
- uri属性为标签库的唯一uri地址。因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库。http://java.sun.com/jsp/jstl/core
第三步:使用JSTL
然后我们就可以在jsp页面中愉快的使用标签库了。
<c:out value=“hello”></c:out>
这个例子标识,调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。
JSTL的使用非常像html标签。
第3章 核心标签
-
Core标签库,包括了我们最常用的标签。
-
要使用Core标签库需要在JSP页面中加入CORE 标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.1 <c:out>标签
作用:<c:out>用于计算一个表达式并将结果输出到当前页面。功能类似于JSP表达式<%= %>和EL表达式${}
属性:
属性 | 作用 | 参数类型 |
---|---|---|
value | 要输出的值 | Object |
default | 当value为null时显示的默认值 | Object |
escaXml | 是否对特殊字符进行转义 | boolean |
示例:
<c:out value="${user.name}" default="" escapeXml="true"></c:out>
3.2 <c:set>标签
作用:<c:set>标签 用于 添加 或 修改 域中的属性。
属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要存储或修改的值 | 否 | 主体的内容 |
target | 要修改的域对象的属性名(必须是JavaBean或者Map) | 否 | 无 |
property | 指定要修改的对象的属性名 | 否 | 无 |
var | 表示域中存放的属性名 | 否 | 无 |
scope | var属性的作用域 (page , request , session ,application) ,若不指定则为page | 否 | page |
如果指定了target属性,那么property属性也需要被指定。
1)在作用域中添加新属性
<c:set scope="" var="" value=""></c:set>
-
scope是哪个作用域
-
va