一、什么是JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能,它是apache对EL表达式的扩展(也就是说JSTL依赖EL)。
二、JSTL怎么用
如果你是使用MyEclipse开发,那么在把项目发布到Tomcat时它会在自动在lib目录下存放jstl的Jar包,如果你是使用Eclipse等其他开发工具的话,你就需要手动导入jstl.jar和 standard.jar(非必须)。
三、JSTL标签库
JSTL一共包含4大标签库,包括core(核心标签库)、fmt(格式化标签库)、sql(数据库标签库),xml(xml标签库),以下一一讲解。
1. 核心标签库core常用标签
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- prefix:指定标签库的前缀,可以根据具体需要自己指定(如core库大家使用时都会使用默认c作为前缀)
- uri:指定具体标签库的uri,用于让jsp连接到相应标签库的描述文件
(1) out、set和remove标签
//在页面中打印:foo(字符串)
//没指定scope,默认在pageContext域中添加键foo其值为fooText
//指定在session中添加键值对
//在页面中打印:fooText(变量foo的值)
//当foo不存在时,输出默认值 defaultText时
//删除所有域中键为foo的数据
//删除指定的session域中键为foo的数据
(2) url标签
//在页面打印: /当前项目名/urlText
//在页面打印:/当前项目名/urlText?username=foo
//url标签可用来重写url,当遇到中文时,自动转为url编码
(3)if标签(其中test属性的值必须是boolean类型的值)
//判断foo是否为空
//在页面打印:fooText(判断返回true,打印foo的值)
(4)choose标签(对应于if/else语句)
//后台传参param,判断非空
Nnknown user.
${param.name} is manager.
${param.name} is employee.
对应于java程序片段:
<%
String name = request.getParameter("name");
if(name == null) { //对应第一个标签的主体
out.print("Nnknown user.");
} else if (name.equals("Tom")){ //对应第二个标签的主体
out.print(name+" is manager.");
} else { //对应标签的主体
out.print(name+" is employee.");
}
%>
(5)forEach标签(循环标签)
// 1.循环变量
//可以指定step,表示递增跨度
// 在页面打印:1 2 3 ...
// 2.遍历集合/数组
<%
String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};
pageContext.setAttribute("names", names);
%>
//打印出数组names中的所有name
// 3.遍历list
<%
List names = new ArrayList();
names.add("zhangSan");
names.add("liSi");
names.add("wangWu");
names.add("zhaoLiu");
pageContext.setAttribute("names", names);
%>
// 4.遍历Map
<%
Map stu = new LinkedHashMap();
stu.put("number", "N_1001");
stu.put("name", "zhangSan");
stu.put("age", "23");
stu.put("sex", "male");
pageContext.setAttribute("stu", stu);
%>
forEach标签还可以用varStatus来指定循环状态的变量名,以获取循环状态。
- count:int类型,当前以遍历元素的个数;
- index:int类型,当前元素的下标;
- first:boolean类型,是否为第一个元素;
- last:boolean类型,是否为最后一个元素;
- current:Object类型,表示当前项目。
<%
String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};
pageContext.setAttribute("names", names);
%>
第一行:
最后一行:
2. fmt标签库常用标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
(1)格式化时间
<%
Date date = new Date();
pageContext.setAttribute("date", date);
%>
//在页面打印:2017-04-06 19:20:20
(2)格式化数字
<%
double num1 = 1.1;
double num2 = 2.2222;
pageContext.setAttribute("num1", num1);
pageContext.setAttribute("num2", num2);
%>
//在页面打印:1.10(补位和去位)
//在页面打印:2.22(四舍五入)
sql与xml标签库已经过时了,不再累述
本文借鉴 http://blog.csdn.net/qq_25827845/article/details/53311722