Java Server Pages Standard Tag Libray(JSTL): JSP标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML处理,甚至数据库和访问数据库操作等。
JSTL中最重要的标签,迭代集合以及格式化数字和日期几个标签。
核心标签库:
http://java.sun.com/jsp/jstl/core
包含Web应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
格式化标签库:
http://java.sun.com/jsp/jstl/fmt
用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
为了在JSP页面使用JSTL类库,必须以下列格式使用taglib指令:
<%@taglib uri="" prefix="" %>
例如:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
prefix前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相似;所以,建议使用事先设计好的前缀。
下载jar包:
官网
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下载jakarta-taglibs-standard-1.2.5.zip
包并解压,将jakarta-taglibs-standard-1.2.5/lib/下的两个jar文件: standard.jar
和jstl.jar
文件拷贝到项目的指定目录下。
条件动作指令用于处理页面的输出结果依赖于某些输入值的情况,在Java 中是利用if、if...else和switch语句来进行处理的。在JSTL中也有4个标签可以执行条件式动作指令: if、 choose,when和otherwise。
if标签先对某个条件进行测试,如果该条件运算结果为true,则处理它的主体内容,测试结果保存在一个Boolean对象中,并创建一个限域变量来引用Boolean对象。可以利用var属性设置限域变量名,利用scope属性来指定其作用范围。
语法格式
if标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量(限域变量名) | 否 | 无 |
scope | var属性的作用域 可取值: page| request | session| application |
否 | page |
<%
request.setAttribute("num", 10);
%>
数值大于0
${flag }
${requestScope.flag }
choose和when标签的作用与Java中的switch和case关键字相似,用于在众多选项中做出选择。也就是说:他们为相互排斥的条件式执行提供相关内容。
switch语句中有case,而choose标签中对应有when,switch语句中有default,而choose标签中有otherwise。
语法格式:
...
...
...
...
属性:
注意:
<%
request.setAttribute("score", 90);
%>
不及格
中等
优秀
用于循环遍历数组、List、Set、Map集合。在实际应用中使用非常频繁。
语法格式:
...
items属性指定需要迭代的集合或数组
var属性制定迭代的当前元素
还可以设置开始索引,结束索引以及步长
${name }
<%
List names= new ArrayList<>();
names.add("zhangsan1");
names.add("zhangsan2");
names.add("zhangsan3");
names.add("zhangsan4");
names.add("zhangsan5");
names.add("zhangsan6");
pageContext.setAttribute("names", names);
%>
${name }
更常用是在表格里使用,通过varStatus属性可以设置当前对象的一些信息
<%@page import="com.jstl.bean.Student"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Insert title here
<%
List students = new ArrayList<>();
students.add(new Student("zhangsan1", 11));
students.add(new Student("zhangsan2", 12));
students.add(new Student("zhangsan3", 13));
pageContext.setAttribute("students", students);
%>
序号
姓名
年龄
${vs.count }
<%-- ${vs.index } 从0开始--%>
<%-- ${vs.first } true/false--%>
<%-- ${vs.last } true/false--%>
${student.name }
${student.age }