JSTL虽然被称为标准标签库,而实际上这个标签库是由5个不同功能的标签库共同组成的。在JSTL1.1规范中,为这5个标签库分别指定了不同的URI以及建议使用的前缀
标签库 | 标签库的URI | 前缀 |
---|---|---|
Core | http://java.sun.com/jsp/jstl/core | c |
I18N | http://java.sun.com/jsp/jstl/fmt | fmt |
SQL | http://java.sun.com/jsp/jstl/sql | sql |
XML | http://java.sun.com/jsp/jstl/xml | x |
Functions | http://java.sun.com/jsp/jstl/functions | fn |
要想在JSP页面中使用JSTL,首先需要安装JSTL
1.下载JSTL包
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
2.安装JSTL
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
3.测试JSTL
使用任何库,你必须在每个 JSP 文件中的头部包含
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
通过
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
1.
作用:用于保存数据
语法:
属性:
scope="{page|request|session|application}"/>
实例演示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Insert title here
${salary}
我们相当于在pageContext中存储了一个变量名为salary,值为2000的变量(scope默认为page)
此时如果通过jsp脚本,在request/session/application域中是获取不到salary的值的
2.
作用:与我们在一般程序中用的if一样
语法:
...
属性:
其中test中是判断表达式的值,如果表达式的值为 true 则执行其主体内容。
实例演示:
<%--输出request域中存储的flag变量的值 --%>
${flag}
我们在pageContext中存储了一个值为4000的变量salary
在if标签中,通过EL表达式判断salary的值是否大于2000,并将值以变量名flag存入request域中
注意:这里不能写成 test="${salary} > 2000"
3.
作用:基础迭代标签,接受多种集合类型
语法:
...
属性:
var属性用于指将当前迭代到的元素保存到page域中的名称(后一个覆盖前一个)
实例演示:
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Insert title here
<%
String[] fruits = { "apple", "orange", "grape", "banana" };
request.setAttribute("fruits",fruits);
%>
<%--数组 --%>
${name}
<%
Map userMap = new HashMap();
userMap.put("Tom", "123");
userMap.put("Make", "123");
userMap.put("Lina", "123");
pageContext.setAttribute("userMap", userMap);
%>
<%--map集合 --%>
${entry.key} ${entry.value}
<%
List colorsList=new ArrayList();
colorsList.add("red");
colorsList.add("yellow");
colorsList.add("blue");
colorsList.add("green");
colorsList.add("black");
pageContext.setAttribute("colorsList", colorsList);
%>
<%--list集合,同时测试begin,end和step --%>
${color}
浏览器窗口中显示了colorsList集合中的yellow和green两个元素,只显示这两个元素的原因是,在使用
c:forEach varStatus 属性
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Insert title here
<%
List userList = new ArrayList();
userList.add("Tom");
userList.add("Make");
userList.add("Lina");
userList.add("jack");
userList.add("black");
%>
序号
是否为第一个元素
是否为最后一个元素
元素的迭代索引
元素的值
${status.count}
${status.first}
${status.last}
${status.index}
${name}