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>>
posted @ 2021-02-27 10:21  兵长砍猴  阅读(102)  评论(0)    收藏  举报