JSTL标签工具类(简单了解)
因为EL表达式不能遍历集合,无法从作用域中读取集合内容输出,但是JSTL解决了这个问题。
1.简单介绍
1.概念:JSTL(JSP Standrad Tag Lib)JSP中标准的标签工具类库
2.由Sun公司体用
3.组成:
1.核心标签:java在JSP上的基本功能进行封装(熟悉)
2.SQL标签:JDBC在JSP上使用的功能
3.XML标签:DOM4J在JSP上使用的功能
4.Format标签:JSP文件格式转换功能
2.配置
1.导入依赖jar包:jstl.jar standrad.jar
2.将jar包导入到WEB-INF下的lib目录中,并添加到Library中
3.在JSP文件引入JSTL中core包依赖约束:<%@ taglib uri="http://java.sun.com.jsp/jst1/core" prefix="c"%>
3.标签使用
1.<c:set>
1.作用:在JSP文件上设置域对象中共享的数据
2.格式:<c:set scope="session" var="key" value="10"/>
3.属性:
scope:指定操作域对象的别名
var:声明域对象中的关键字
value:存入的共享数据
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 <%-- set标签使用 --%> 4 <c:set scope="application" var="sid" value="001"/> 5 <c:set scope="session" var="sname" value="jason"/> 6 <c:set scope="request" var="sage" value="23"/> 7 <c:set scope="page" var="saddress" value="北京"/> 8 学员编号是:${applicationScope.sid}<br/> 9 学员姓名是:${sessionScope.sname}<br/> 10 学员年龄是:${requestScope.sage}<br/> 11 学员地址是:${pageScope.saddress} 12 13 <%-- set标签和EL表达式联合使用 --%> 14 <%-- 在执行过程中,先执行EL表达式,将结果给value,然后再写入到响应体中--%> 15 <c:set scope="request" var="sage" value="${requestScope.sage+2}"/> 16 用户两年后的年龄是${sage}
2.<c:if>
1.作用:在JSP文件上控制哪些内容可以写入到响应体中
2.格式: <c:if test="通过EL表达式进行判断"/>
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 4 <c:set scope="request" var="sage" value="15"/> 5 6 <c:if test="${requestScope.sage >= 18}"> 7 <font color="green" style="font-size: 20px">欢迎光临</font> 8 </c:if> 9 10 <c:if test="${requestScope.sage < 18}"> 11 <font color="red" style="font-size: 20px">谢绝入内</font> 12 </c:if>
3.<c:choose>
1.作用:在JSP文件上实现多分支选择判断,决定哪一个内容写入到响应体中
2.使用:
<c:choose>
<c:when test="EL表达式进行判断">内容1</c:when>
<c:when test="EL表达式进行判断">内容2</c:when>
</c:choose>
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 4 <c:set scope="page" var="salary" value="15000"/> 5 <c:choose> 6 <c:when test="${salary >= 50000}">高工资</c:when> 7 <c:when test="${salary >= 20000}">正常工资</c:when> 8 <c:when test="${salary >= 10000}">低工资</c:when> 9 <c:otherwise>不正常工资</c:otherwise> 10 </c:choose>
4.<c:forEach>
1作用:循环遍历
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 4 <%-- 5 step属性可以不写,默认递增1 6 循环变量被保存在pageContext中 7 --%> 8 <select> 9 <c:forEach var="i" begin="1" end="5" step="1"> 10 <option>第${pageScope.i}页</option> 11 </c:forEach> 12 </select>
第二种使用方式
<c:forEach items="通过EL表达式获得域对象集合" var="声明循环变量">
${循环变量.对象属性名}
</c:forEach>
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 4 <c:forEach items="${key}" var = "stu"> 5 ${stu.sid} 6 ${stu.sname} 7 </c:forEach>
第三种方式:遍历map集合
1 <!-- 2 遍历map集合时,每次从map集合得到一个键值对,将键值对交给循环变量 3 获得键值对中关键字名字(班级名称):循环变量.key 4 获得键值对中的内容(stu对象):循环变量.value 5 --> 6 7 <c:forEach items="${mapkey}" var="key_value"> 8 ${key_value.key} 9 ${key_value.value.sid} 10 ${key_value.value.sname} 11 </c:forEach>>

浙公网安备 33010602011771号