JSTL标签工具类

一、介绍:

​ 1.Jsp Standrad Tag Lib: JSP中标准的标签工具类

​ 2.由 sun公司 提供

​ 3.组成:(1)核心标签:Java在jsp上基本功能进行封装 if while

​ (2)SQL标签:JDBC在JSP上使用功能

​ (3)xml标签:DOM4J在JSP上使用功能

​ (4)Format标签:JSP文件格式转换

二、配置:

1.导入依赖 jar: jstl.jar standard.jar

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

2.在JSP文件引入JSTL中core包依赖约束

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

三、标签使用:

1.<c:set>:

​ 作用:在JSP文件上设置域对象*享数据

​ 使用:<c:set scope="session" var="key" value="10"/>

​ 代替:<% session.setAttribute("key","10"); %>

​ 属性:scope:指定操作对象别名

​ scope="application/session/request/page"

​ var:声明域对象中关键字

​ value:存入的共享数据

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="application" var="sid" value="10"/>
<c:set scope="session" var="sname" value="mike"/>
<c:set scope="request" var="age" value="24"/>
<c:set scope="page" var="home" value="上海"/>

学员编号:${applicationScope.sid}<br>
学员姓名:${sessionScope.sname}<br>
学员年龄:${requestScope.age}<br>
学员籍贯:${pageScope.home}<br>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%--设置用户今年的年龄--%>
<c:set scope="request" var="age" value="20"/>
<%--设置用户两年之后的年龄--%>
<c:set scope="request" var="age" value="${requestScope.age+2}"/>

用户两年之后的年龄:${requestScope.age}

2.<c:if>

​ 作用:在JSP文件上控制哪些内容可以写入到响应体中

​ 使用:
<c:if test="通过EL表达式进行判断">

内容

</c:if>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="session" var="age" value="20"/>

  <c:if test="${sessionScope.age ge 18}">
      <font color="red">欢迎光临</font>
  </c:if>

  <c:if test="${sessionScope.age lt 18}">
      <font color="red">过两年再来</font>
  </c:if>

3.<c:choose>

​ 作用:在JSP文件上实现多分支选择判断,决定哪一个内容写入到响应体

​ 使用:
<c:choose>

​ <c:when test="EL表达式进行判断">内容1</c:when>

​ <c:when test="EL表达式进行判断">内容2</c:when>

​ <c:otherwisse>内容3</c:otherwisse>

​ </c:choose>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="page" var="sal" value="15000"/>

<c:choose>
    <c:when test="${sal ge 50000}">高工资</c:when>
    <c:when test="${sal ge 20000}">正常工资</c:when>
    <c:when test="${sal ge 10000}">低工资</c:when>
    <c:otherwise>不正常工资</c:otherwise>
</c:choose>

4.<c:forEach>

​ 作用:循环遍历

   第一种使用方式:
	<c:forEach var="声明循环变量名称" begin="初始化循环变量" end="循环变量的最大值" step="递增或递减值">
        内容
    	</c:forEach>
***step属性可以不写,默认每次递增加一
***循环变量被保存在 pageContext 中
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Java实现:
<select>
    <%
        for (int i = 1; i < 5; i++) {
    %>
    <option>第<%=i%>页</option>
    <%
        }
    %>
</select>
<br>
JSTL实现:
<select>
    <c:forEach var="i" begin="1" end="5" step="1">
        <option>第${pageScope.i}页</option>
    </c:forEach>
</select>
第二种写法
<c:forEach items="通过EL表达式获得域对象集合" var="声明循环变量">
    ${循环变量.对象属性名}
</c:forEach>

<%--例子--%>
        <table border="2">
            <tr>
                <td>学员编号</td>
                <td>学员姓名</td>
            </tr>
            <c:forEach items="${key}" var="stu">
                <tr>
                    <td>${stu.sid}</td>
                    <td>${stu.sname}</td>
                </tr>
            </c:forEach>
        </table>
<h1>遍历map</h1>
        <table border="2">
            <tr>
                <td>班级名称</td>
                <td>学员编号</td>
                <td>学员名称</td>
            </tr>

<%--
    遍历map时,每次从map集合得到一个【键值对】
    【键值对】交给循环变量
    循环变量.key 获得【键值对】中关键字名字 班级名称
    循环变量.value 获得【键值对】中内容  stu对象
--%>
            <c:forEach items="${mapKey}" var="key_value">
                <tr>
                    <td>${key_value.key}</td>
                    <td>${key_value.value.sid}</td>
                    <td>${key_value.value.sname}</td>
                </tr>
            </c:forEach>
        </table>
上一篇:18 JSTL标签库


下一篇:http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed