JSTL是jsp的一个标准标签库,封装了jsp应用的通用核心功能。它支持迭代、条件判断、XML文档操作、国际化标签、SQL标签等,另外还提供了一个框架集成JSTL的自定义标签。
JSTL的安装
依赖JSTL
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>taglibsgroupId>
<artifactId>standardartifactId>
<version>1.1.2version>
dependency>
核心标签库
导入核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1、
标签 与<%= %>的作用类似
属性:value 要输出的内容,必须存在,无默认值
default 输出的默认值
escapeXml 是否忽略XML特殊字符,默认值 true
2、 标签
用于设置变量值和对象属性,并保存。和标签作用类似
属性:value="" 要存储的值
target="" 对象的名字
property 对象内的属性名(如果指定了target属性,那么property属性也需要被指定。)
var 存储信息的变量
scope var属性的作用域,默认为page(当前页)
3、
标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。不是特别有用
4、...
标签处理产生错误的异常状况,将错误信息储存起来。
5、...
标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
6、
循环内容
标签用于迭代循环,forEach循环
7、
...
...
...
...
标签与Java switch语句的功能一样,用于在众多选项中做出选择。
8、
标签将URL格式化为一个字符串,然后存储在一个变量中。var属性用于存储格式化后的URL。
9、
签用于在标签中指定参数
9、
标签通过自动重写URL来将浏览器重定向至一个新的URL
10、
根据指定的分隔符来分隔内容并迭代输出
11、
加载一个页面。提供了所有行为标签所具有的功能
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Title
set设置属性值
用户名:
set设置变量,remove移除变量,并用if判断是否移除
变量:
c:out value="${test}"/>
测试forEach
<%
int[] ints ={1,2,3,4,5};
request.setAttribute("ints",ints);
%>
(索引: ,
迭代的次数 ,
是否为第一个位置: )
测试catch
测试choose系列标签
测试分割

格式化标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1、 标签用于格式化数字,百分比,货币。
2、用于使用不同的方式格式化日期。
3、 指定时区
JSTL函数
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
1、确定一个字符串是否包含指定的子串
不忽略大小写:fn:contains()
...
忽略大小写:fn:containsIgnoreCase()
2、fn:endsWith() 函数用于确定一个字符串是否以指定后缀结尾。
...
3、fn:indexOf() 函数返回一个字符串中指定子串的位置。
${fn:indexOf(<原始字符串>,<子字符串>)}
4、fn:join() 函数将一个数组中的所有元素使用指定的分隔符来连接成一个字符串。
${fn:join([数组], <分隔符>)}
5、fn:length() 函数返回字符串长度或集合中元素的数量。
${fn:length(""}
6、fn:replace() 函数将字符串中所有指定的子串用另外的字符串替换。
${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
7、fn:split() 函数将一个字符串用指定的分隔符分裂为一个子串数组。
${fn:split(<待分隔的字符串>, <分隔符>)}
8、fn:startsWith() 函数用于确定一个字符串是否以指定的前缀开始。
...
9、fn:substring() 函数返回字符串中指定开始和结束索引的子串。
${fn:substring(, , )}
10、fn:trim()函数将字符串两端的空白符移除。
${fn:trim()}
11、转换大小写
大写→小写:${fn.toLowerCase()}
小写→大写:${fn:toUpperCase()}
EL表达式主要配合JSTL一起使用:主要用于获取数据、执行计算、获取web开发中的常用对象。
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%--isELIgnored="false|true" true EL表达式就会被忽略当成字符串,false将会计算EL表达式。--%>
一个简单的表达式语法如下:
${表达式}
| 操作符 | 描述 |
|---|---|
| . | 访问一个属性或者一个映射条目 |
| [] | 访问一个数组或者链表的元素 |
| ( ) | 组织一个子表达式以改变优先级 |
| + | 加 |
| - | 减或负 |
| * | 乘 |
| / or div | 除 |
| % or mod | 取模 |
| == or eq | 测试是否相等 |
| != or ne | 测试是否不等 |
| < or lt | 测试是否小于 |
| > or gt | 测试是否大于 |
| <= or le | 测试是否小于等于 |
| >= or ge | 测试是否大于等于 |
| && or and | 测试逻辑与 |
| || or or | 测试逻辑或 |
| ! or not | 测试取反 |
| empty | 测试是否空值 |
JSP EL允许在表达式中使用JSTL函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下:
${fn:length("Get my length")} 返回字符串长度
JSP EL支持下表列出的隐含对象:
| 隐含对象 | 描述 |
|---|---|
| pageScope | page 作用域 |
| requestScope | request 作用域 |
| sessionScope | session 作用域 |
| applicationScope | application 作用域 |
| param | Request 对象的参数,字符串 |
| paramValues | Request对象的参数,字符串集合 |
| header | HTTP 信息头,字符串 |
| headerValues | HTTP 信息头,字符串集合 |
| initParam | 上下文初始化参数 |
| cookie | Cookie值 |
| pageContext | 当前页面的pageContext |