admin 管理员组

文章数量: 886992

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="" %>
  • 常用的标签

    • set标签
    <%--1.set标签(分页时会用到):用来向域对象中添加属性,默认放到page域中var属性:设置向域对象中添加属性的keyvalue属性:设置向域对象中添加的属性值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属性:设置要移除的域对象中属性的keyscope属性:设置要移除的域,可选值为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 {//假设从数据库中查询到一个ListList<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/22Time: 15:10To change this template use File | Settings | File Templates.
      --%>
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="" %>
      <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>

本文标签: 08JSTL