1,JSTL的介绍
JSTL是Apache对EL表达式的扩展,JSTL依赖EL表达式。它是标签语言,与JSP动作标签差不多,但是不能直接使用,需要导包(JSTL1.2.jar),以及制定标签库。
2,JSTL标签库(四大库)
(1)core:核心标签库,重点!
(2)fmt:格式化标签库,学习其中的两个标签。日期和数字的格式化。
(3)sql:数据库标签和XML:xml标签库不学了,过时了。
3,使用taglib指令导入标签库
除了JSP动作标签外,使用第三方的标签库都需要以下两点:
(1)导包:例如:JSTL1.2.jar;
(2)在使用标签库的页面使用taglib指令导入标签库。
例如:<%@taglib prefix="c" uri=http://java.sun.com/jstl/core" %>
prefix="c":指定标签库的前缀,这个前缀是自定义的,一般使用core标签库时都是用c这个前缀;
uri=http://java.sun.com/jstl/core":指定标签库的uri,他不一定是真实存在的网址,但他可以让jsp找到标签库的描述文件。
4,核心标签库(core)的常用标签:c标签
(1)out和set:
也可以使用escapeXml="false"达到不转义的作用。
<%pageContext.setAttribute("a","pageContext"); %>
<%request.setAttribute("a", "request"); %>
<%session.setAttribute("a", "session"); %>
<%application.setAttribute("a", "application"); %>
${a}
(2)remove:删除域变量,var:变量名;scope:如果不给出scope,表示删除所有域中的该名称变量;如果给出了域,则只删除该作用域的相应变量
(3)url
--》value:指定一个路径,他会在路径前面自动添加项目名;
--》子标签:
--》var:指定变量名,一旦添加了这个属性,那么url标签就不会自动输出到页面,而是把生成的url保存到域中。
--》scope:它与var一起使用,用来保存url.
${pageContext.request.contextPath}
首页
(4)if:对应java中的if语句
(5)choose:对应java中的if(){}else if(){}else{},,条件语句多分支
${param.score }
分数:${param.score }
姓名:${param.name }
错误的分数:${score1 }
A
B
C
D
E
(6)forEach:用来循环遍历数组、集合。可用计数方式来循环
--》java中计数方式:
for(int i=0;i<=10;i++)
{
.........
}
--》核心标签库中:
${i}
说明:
(1)var:循环变量
(2)begin:设置循环变量从几开始
(3)end:设置循环变量到几结束
(4)step:设置步长,默认为1。
------------------------------------------------------------------------------------------------------------
循环遍历数组、集合(List、Map)
${str}
等同于:
for(String str:strs){
System.out.println(str);
}
说明:
(1)var:把数组或者集合中的每个元素赋值给var指定的变量
(2)items:指定要循环谁,可以是一个数组或集合
-------------------------------------------------------------------------------------------------------------------
forEach循环状态:
可以通过varStatus来获取forEach循环状态。
${vs.count} ${vs.index} ${vs.first} ${vs.last} ${vs.current}
<%
Map map=new LinkedHashMap();
map.put("nember", "001");
map.put("name", "张三");
map.put("sex", "男");
map.put("age", "20");
pageContext.setAttribute("stu", map);
%>
//
${vs.index }...${vs.count }...${vs.first }...${vs.last }...${vs.current }