08.JSTL

08.JSTL

一、简介

  • 全称:Jsp Standard Tag Library,jsp标准标签库,用来代替JSP中的脚本片段
  • 标签库的分类
    • 核心标签库
      • 我们也称为c标签
    • 函数标签库
      • 结合EL表达式使用,可以对字符串进行截取、替换等操作
    • 格式化标签库
      • 主要用来进行国际化的操作
    • sql标签库(淘汰)
    • xml标签库(淘汰)
  • 使用标签库需要导入以下jar包
    • taglibs-standard-impl-1.2.5.jar
    • taglibs-standard-spec-1.2.5.jar

二、核心标签库

  • 使用核心标签库需要在页面中通过taglib指令引入c标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 常用的标签

    • set标签
    <%--
          1.set标签(分页时会用到):用来向域对象中添加属性,默认放到page域中
              var属性:设置向域对象中添加属性的key
              value属性:设置向域对象中添加的属性值
              scope属性:设置将属性值放到那个域中,可选值为page、request、session、application
        --%>
        <c:set var="hello" value="JSTL" scope="page"></c:set>
        <c:set var="hello" value="JSTL" scope="request"></c:set>
        <c:set var="hello" value="JSTL" scope="session"></c:set>
        <c:set var="hello" value="JSTL" scope="application"></c:set>
        page域中的属性值是:${pageScope.hello}<br>
        request域中的属性值是:${requestScope.hello}<br>
        session域中的属性值是:${sessionScope.hello}<br>
        application域中的属性值是:${applicationScope.hello}<br>
        <hr>
    
    • remove标签
    <%--
          2.remove标签:用来移除域对象中的属性,默认全域移除
              var属性:设置要移除的域对象中属性的key
              scope属性:设置要移除的域,可选值为page、request、session、application
        --%>
        <c:remove var="hello" scope="session"></c:remove>
        page域中的属性值是:${pageScope.hello}<br>
        request域中的属性值是:${requestScope.hello}<br>
        session域中的属性值是:${sessionScope.hello}<br>
        application域中的属性值是:${applicationScope.hello}<br>
    
    • if标签
     <%--★1.if标签:相当于Java中的if条件判断
                test属性:接受一个布尔类型的值,通常通过EL表达式获取,当值是true时才执行标签体中的内容
        --%>
        <%
            int age = 18;
            //将age放到page域中
            pageContext.setAttribute("age",age);
        %>
        <c:if test="${pageScope.age >= 18}">
            您已成年,尽情浏览,注意身体!
        </c:if>
        <c:if test="${pageScope.age < 18}">
            未成年人禁止入内!
        </c:if>
        <hr>
    
    • choose标签
    <%--
            2.choose标签(分页时会用到):相当于Java中的if...else if...else
                注意:
                    1)when标签和otherwise标签要在choose标签中使用
                    2)一定要注意多个when标签的书写顺序,只要有一个when满足条件其他的就不再执行
        --%>
        <c:choose>
            <c:when test="${age > 40}">
                曹孟德来了
            </c:when>
            <c:when test="${age > 35}">
                大龄剩女
            </c:when>
            <c:when test="${age > 20}">
                妙龄少女
            </c:when>
            <c:when test="${age > 16}">
                花季少女
            </c:when>
            <c:when test="${age > 11}">
                豆蔻年华
            </c:when>
            <c:otherwise>
                小屁孩儿
            </c:otherwise>
        </c:choose>
    
    • forEach标签

      • Servlet代码
      package com.atguigu.jstl.servlet;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      import java.util.ArrayList;
      import java.util.List;
      
      @WebServlet(name = "GetStarsServlet",urlPatterns = "/GetStarsServlet")
      public class GetStarsServlet extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              //假设从数据库中查询到一个List
              List<String> stars = new ArrayList<>();
              //向stars中添加明星
              stars.add("李小璐");
              stars.add("马蓉");
              stars.add("文章");
              stars.add("罗志祥");
              stars.add("萧亚轩");
              stars.add("比尔盖茨");
              stars.add("吴秀波");
              stars.add("李宗盛");
              //将List放到request域中
              request.setAttribute("stars",stars);
              //转发到显示的页面
              request.getRequestDispatcher("/forEach.jsp").forward(request,response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              doPost(request,response);
          }
      }
      
      
      • jsp页面
      <%--
        Created by IntelliJ IDEA.
        User: 韩总
        Date: 2021/5/22
        Time: 15:10
        To change this template use File | Settings | File Templates.
      --%>
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <html>
      <head>
          <title>forEach标签</title>
      </head>
      <body>
          <%--★forEach标签:相当于Java中的for循环
                  begin属性:设置循环的开始值,值必须是大于等于0的数
                  end属性:设置循环结束的值
                  var属性:设置一个变量接收遍历到的值,同时会以变量值为key放到page域中
                  step属性:设置步长,默认是1
           --%>
          <c:forEach begin="1" end="10" var="index" step="2">
              <a href="#">${pageScope.index}</a>
          </c:forEach>
          <hr>
          <%--
              items属性:接收一个遍历的集合
              var属性:设置一个变量接收遍历到的值,同时会以变量值为key放到page域中
          --%>
          <c:if test="${empty requestScope.stars}">
              <h1>世界很美好!</h1>
          </c:if>
          <c:if test="${!empty requestScope.stars}">
              <c:forEach items="${requestScope.stars}" var="star">
                  <a href="#">${star}</a><br>
              </c:forEach>
          </c:if>
      
      </body>
      </html>
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值