JSTL入门
JSTL
JavaServer Pages Standard Tag Library
jsp标准标签库
是一个不断完善的开放源代码的JSP标签库,
是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,
如tomcat 4.x。在JSP 2.0中也是作为标准支持的
JSTL是apache对EL表达式的扩展
也就是说JSTL依赖EL
JSTL一共包含四大标签库
1.core 核心
2.fmt
3.sql
4.xml
如何导入JSTL的core标准库
我们这样
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
prefix="c"是指定标签库的前缀
这个签注可以随便给值
但是大家一般使用core标签库的时候,都会写c
uri="http://java.sun.com/jstl/core"
这个是指定标签库的url,不一定是真实存在的网址
但是这样可以让jsp找到标签库的描述文件
常用的标签有:
1.out和set
2.remove
3.url
4.if
5.choose
6.forEach
<c:out value="aaa" /> 输出字符串
举个例子
我们加入taglib
打开jstl官方网站
下载jar包
一共有
taglibs-standard-compat-1.2.5.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
四个
全部下载吧就
然后写jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:out value="aaa" />
</body>
</html>
然后我们打开网页,
看到了aaa字符串
成功
<remove>标签
var:变量名
scope:如果不给出scope,表示删除
所有域中的该名称的变量,
如果指定了域,那么只删除该域的变量
<url>标签
value:指定一个路径,会在路径前面自动添加项目名
比如
<c:url value="/index.jsp" />
这样就会输出 /aaa/bbb/index.jsp
还可以添加参数,用一个子标签
<c:url value="/index.jsp">
<c:param name="username" value="Alice" />
</c:url>
我们之前的传统写法是
${pageContext.request.contextPath}/MainServlet
现在
<c:url value="/MainServlet" />
然后if标签
if标签的test属性必须是一个boolean类型的值
如果test的值为true,那么执行if标签的内容
否则就不执行
<c:set var="a" value="hello" />
<c:if test="${not empty abc}" >
<c:out value="${abc}">
</c:if>
choose标签
choose标签对应java中的if/else if/else结构
when标签的test为true的时候
会执行这个when的内容
当所有when标签的test都为false的时候
才会执行otherwise标签的内容
<c:set var="score" value="${param.score}" />
<c:choose>
<c:when test="${score>90}>A</c:when>
<c:when test="${score>80}>B</c:when>
<c:when test="${score>70}>C</c:when>
<c:otherwise>E</c:otherwise>
</c:choose>
forEach标签
forEach就是循环标签,有多种使用方式
1.使用循环变量,指定开始和结束值
2.循环遍历集合,类似for(Object obj:list)
例子
<c:forEach var="i" begin="1" end="10">
${i}
</c:forEach>
看一下就差不多明白了
定义i,从1开始,到10结束
取出i的值
<%
Strng[] strs={"1","2","3"};
%>
<c:forEach items="${strs}" var="str">
${str}
</c:forEach>
forEach的循环状态
可以使用status来创建循环状态变量
1.count int类型 已遍历的个数
2.index int类型 当前元素的下标
3.first boolean 是否为第一个元素
4.last boolean 是否为最后一个元素
5.current Object 表示当前项目
<c:forEach items="${list}" var="ele" varStatus="vs" >
${vs.index}
${vs.count}
${vs.first}
${vs.last}
${vs.current}
</c:forEach>