JSTL表达式
概述
JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。 是一个不断完善的开放源代码的 JSP 标签库。
EL 表达式主要是为了替换 jsp 中的表达式脚本, 而标签库则是为了替换代码脚本。 这样使得整个 jsp 页面变得更佳简洁。
JSTL组成
功能范围 | URI | 前缀 |
---|---|---|
核心标签库–重点 | http://java.sun.com/jsp/jstl/core | c |
格式化 | http://java.sun.com/jsp/jstl/fmt | fmt |
函数 | http://java.sun.com/jsp/jstl/functions | fn |
数据库(不使用) | http://java.sun.com/jsp/jstl/sql | sql |
XML(不使用) | http://java.sun.com/jsp/jstl/xml | x |
在 jsp 标签库中使用 taglib 指令引入标签库
- CORE 标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- FMT 标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- FUNCTIONS 标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- SQL 标签库
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
- XML 标签库
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
JSTL使用
先导入 jstl 标签库的 jar 包。
- taglibs-standard-impl-1.2.1.jar
- taglibs-standard-spec-1.2.1.jar
使用 taglib 指令引入相应的标签库。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
core 核心库使用
<c:set />(使用很少)
- 作用: set 标签可以往域中保存数据
<%--
作用: set 标签可以往域中保存数据
域对象.setAttribute(key,value);
scope 属性设置保存到哪个域
page 表示 PageContext 域(默认值)
request 表示 Request 域
session 表示 Session 域
application 表示 ServletContext 域
var 属性设置 key 是多少
value 属性设置值
--%>
保存之前: ${ sessionScope.abc }
保存之后: ${ sessionScope.abc }
<c:if />
- if 标签用来做 if 判断
<%--
ii.
if 标签用来做 if 判断。
test 属性表示判断的条件(使用 EL 表达式输出)
--%>
12 等于 12
12 不等于 12
<c:choose> <c:when> <c:otherwise>标签
- 作用: 多路判断。 跟 switch … case …. default 非常接近
<%--
标签
作用: 多路判断。 跟 switch ... case .... default 非常接近
choose 标签开始选择判断
when 标签表示每一种判断情况
test 属性表示当前这种判断情况的值
otherwise 标签表示剩下的情况
标签使用时需要注意的点:
1、 标签里不能使用 html 注释, 要使用 jsp 注释
2、 when 标签的父标签一定要是 choose 标签
--%>
<%
request.setAttribute("height", 180);
%>
<%-- 这是 html 注释 --%>
小巨人
很高
还可以
<% 如果里面还需要做判断则需要基于标签内在做判断 %>
大于 160
大于 150
大于 140
其他小于 140
<c:forEach />
- 作用: 遍历输出使用。
例1:遍历 1 到 10, 输出
<%-- 遍历 1 到 10, 输出
begin 属性设置开始的索引
end 属性设置结束的索引
var 属性表示循环的变量(也是当前正在遍历到的数据)
for (int i = 1; i < 10; i++)
--%>
第${i}行
例2:遍历 Object 数组
<%-- 遍历 Object 数组
for (Object item: arr)
items 表示遍历的数据源(遍历的集合)
var 表示当前遍历到的数据
--%>
<%
request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"});
%>
${ item }
例3:遍历 Map 集合
<% // 遍历 Map 集合
Map map = new HashMap();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
// for ( Map.Entry entry : map.entrySet()) {}
request.setAttribute("map", map);
%>
${entry.key} = ${entry.value}
例4:遍历List集合-list 中存放Student类
- Student实体类
public class Student {
//编号, 用户名, 密码, 年龄, 电话信息
private Integer id;
private String username;
private String password;
private Integer age;
private String phone;
}
- JSP
<%
List studentList = new ArrayList();
for (int i = 1; i <= 10; i++) {
studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i));
} r
equest.setAttribute("stus", studentList);
%>
编号
用户名
密码
年龄
电话
操作
<%--
items 表示遍历的集合
var 表示遍历到的数据
begin 表示遍历的开始索引值
end 表示结束的索引值
step 属性表示遍历的步长值
varStatus 属性表示当前遍历到的数据的状态
for(int i = 1; i < 10; i+=2)
--%>
${stu.id}
${stu.username}
${stu.password}
${stu.age}
${stu.phone}
${status.step}