Web阶段:第十四章:JSTL标签库

简介: Web阶段:第十四章:JSTL标签库

作者:java_wxid

JSTL 标签库

JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。

EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

JSTL由五个不同功能的标签库组成。

功能范围 URI 前缀

核心标签库--重点 http://java.sun.com/jsp/jstl/core c
格式化 http://java.sun.com/jsp/jstl/fmt    fmt
函数  http://java.sun.com/jsp/jstl/functions    fn
数据库(不使用)  http://java.sun.com/jsp/jstl/sql  sql
XML(不使用)  http://java.sun.com/jsp/jstl/xml  x

在jsp标签库中使用taglib指令引入标签库

CORE 标签库

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

XML 标签库

<%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>

FMT 标签库

<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

SQL 标签库

<%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %>

FUNCTIONS 标签库

<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>

JSTL标签库的使用步骤

1、导入jstl标签库的jar包

taglibs-standard-impl-1.2.1.jar

taglibs-standard-spec-1.2.1.jar

2、使用taglib指令引入你需要的标签库

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

core核心库使用

<c:set />

1、可以往域中保存数据

2、可以修改域中bean对象的属性或Map集合的某个key的值

<body>
<%-- i.<c:set /> --%> 
    <%--
      域对象.setAttriubte(key,value);
        scope 属性设置使用哪个域对象     page,request,session,application
        var 就是保存的key
        value 属性设置你要保存的值
    --%>
    <!-- 1、可以往域中保存数据 -->
    保存之前:${ requestScope.key1 }<br/>
    <c:set scope="request" var="key1" value="value1"></c:set>
    保存之后:${ requestScope.key1 }<br/>
    <hr/>
    <%
      Map<String,Object> map = new HashMap<String,Object>();
      map.put("aa", "修改之前");
      map.put("bb", "bbValue");
      request.setAttribute("map", map);
    %>
  <%-- 2、可以修改域中bean对象的属性或Map集合的某个key的值
        bean对象.setXxxx(新值);   Xxx是你要修改的属性
        map对象.put(key,新值);    
      target属性表示你要修改哪个bean对象,或是哪个map集合
      property属性设置你要修改的是哪个属性,或是map集合的哪个key
      value 属性设置你的新值
   --%>
    修改之前:${ requestScope.map }<br/>
    <c:set target="${ requestScope.map }" property="aa" value="修改之后"></c:set>
    修改之后:${ requestScope.map }<br/>   
  </body>

<c:if />

if标签可以用来做判断使用。

  <%-- if标签做if判断,
      test 属性是if判断的表达式(使用EL表达式输出真假值)
   --%>
  <c:if test="${ 12 == 12 }">
    <h1>12等于12啦啦啦……</h1>
  </c:if>

<c:choose> <c:when> <c:otherwise>标签

跟switch 、case、default,基本一样。

<%
      request.setAttribute("height", 136);
    %>
    <%--
      choose。when。otherwise需要注意两个点:
        1、在这里标签内不能使用html注释 
        2、when标签的父标签一定要是choose标签
     --%>
    <c:choose><%-- switch --%>
      <%-- when 表示一种条件情况,相当于case --%>
      <c:when test="${ requestScope.height >= 190 }">
        <h1>老高老高啦啦啦……</h1>
      </c:when>
      <c:when test="${ requestScope.height >= 180 }">
        <h1>很高很高啦啦啦……</h1>
      </c:when>
      <c:when test="${ requestScope.height >= 170 }">
        <h1>好矮好矮啦啦啦……</h1>
      </c:when>
      <c:when test="${ requestScope.height >= 160 }">
        <h1>二等那啥啦啦啦……</h1>
      </c:when>
      <c:otherwise><%-- default --%>
        <c:choose>
          <c:when test="${ requestScope.height >= 150 }">
            <h1>150</h1>
          </c:when>
          <c:when test="${ requestScope.height >= 140 }">
            <h1>140</h1>
          </c:when>
          <c:when test="${ requestScope.height >= 130 }">
            <h1>130</h1>
          </c:when>
        </c:choose>
      </c:otherwise>
    </c:choose>

<c:url />

1、它可以生成一个url地址,直接输出

2、可以把生成的url地址保存到某个域中

<!--    1、它可以生成一个url地址,直接输出
        value 是你的访问的资源路径
        context 是你所在的工程路径,默认是当前工程
 -->
    <c:url value="/f.jsp" context="/abc">
      <c:param name="username" value="wzg168"></c:param>
      <c:param name="password" value="123456"></c:param>
    </c:url>
    <br/>
<!--    2、可以把生成的url地址保存到某个域中 
        域对象.setAttribute(key,地址);
        session.setAttribute(url,地址);
-->
    <c:url value="/f.jsp" context="/abc" scope="session" var="url">
      <c:param name="username" value="wzg168"></c:param>
      <c:param name="password" value="123456"></c:param>
    </c:url>
Session域中保存的地址是:${ sessionScope.url }

<c:forEach />

forEach标签做遍历操作

1.遍历1到10,输出

2.遍历Object数组

3.遍历List集合—list中存放 Person类,有属性:编号,用户名,密码,年龄,电话信息

4.遍历Map集合

测试代码:

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.atguigu.pojo.Student"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
<style type="text/css">
  table{
    width: 500px;
    border: 1px solid red;
    border-collapse: collapse;
  }
  th , td{
    border: 1px solid red;
  }
</style>
  </head>
  <body>
<!--    1.遍历1到10,输出
        begin 遍历开始的索引
        end   遍历结束的索引
        var 是当前正在遍历到的数据
 -->
    <c:forEach begin="1" end="10" var="i">
      ${ i }
    </c:forEach>
    <hr/>
<!-- 2.遍历Object数组 -->
    <%
      request.setAttribute("arr", new String[]{"aaaa","bbbb","cccc"});
    %>
    <!-- 
        items 设置你要遍历的集合(数据源)
        var 是当前正在遍历到的数据
     -->
    <c:forEach items="${ requestScope.arr }" var="item">
      ${ item }<br/>
    </c:forEach>
    <hr/>
<!-- 3.遍历List集合---list中存放 Student类,有属性:编号,用户名,密码,年龄,电话信息 -->
    <%
      List<Student> list = new ArrayList<Student>();
      for (int i = 0; i < 10; i++) {
        list.add(new Student(i,"name"+i,"pass"+i,18+i,"phone"+i));
      }
      request.setAttribute("list", list);
    %>
    <table>
      <tr>
        <th>编号</th>
        <th>用户名</th>
        <th>密码</th>
        <th>年龄</th>
        <th>电话</th>
        <th>操作</th>
      </tr>
      <!-- 
        step  是设置步长,每次遍历完,索引怎么移动,默认是1
        varStatus 是当前遍历到的数据的状态对象
       -->
      <c:forEach begin="1" end="7" items="${ requestScope.list }" step="1" var="stu" varStatus="status">
        <c:if test="${ status.count == 3 }">
          <tr style="background-color: green;">
        </c:if>
        <c:if test="${ status.count != 3 }">
          <tr>
        </c:if>
          <td>${ stu.id }</td>
          <td>${ stu.username }</td>
          <td>${ stu.password }</td>
          <td>${ stu.age }</td>
          <td>${ stu.phone }</td>
          <td>${ status.step }</td>
        </tr>
      </c:forEach>
    </table>
    <hr/>
<!-- 4.遍历Map集合 -->
    <%
      Map<String,Object> map = new HashMap<String,Object>();
      map.put("key1", "value1");
      map.put("key2", "value2");
      map.put("key3", "value3");
      request.setAttribute("map", map);
    %>
    <c:forEach items="${ requestScope.map }" var="entry">
      ${ entry.value }<br/>
    </c:forEach>
  </body>
</html>

相关文章
|
2月前
|
前端开发 JavaScript 区块链
连接区块链节点的 JavaScript 库 web3.js
连接区块链节点的 JavaScript 库 web3.js
|
13天前
|
开发框架 .NET PHP
Web服务搭建&站库分离&路由访问
Web服务搭建&站库分离&路由访问
|
26天前
|
Web App开发 移动开发 前端开发
Web网页制作-知识点(3)——HTML5新增标签、CSS简介、CSS的引入方式、选择器、字体属性、背景属性、表格属性、关系选择器 二
Web网页制作-知识点(3)——HTML5新增标签、CSS简介、CSS的引入方式、选择器、字体属性、背景属性、表格属性、关系选择器 二
23 1
|
26天前
|
移动开发 前端开发 HTML5
Web网页制作-知识点(3)——HTML5新增标签、CSS简介、CSS的引入方式、选择器、字体属性、背景属性、表格属性、关系选择器一
Web网页制作-知识点(3)——HTML5新增标签、CSS简介、CSS的引入方式、选择器、字体属性、背景属性、表格属性、关系选择器 一
36 1
|
26天前
|
移动开发 前端开发 数据安全/隐私保护
Web网页制作-知识点(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)
Web网页制作-知识点(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)
7 0
|
26天前
|
存储 移动开发 前端开发
Web网页制作-知识点(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接
Web网页制作-知识点(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接
20 0
|
2月前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
84 1
|
2月前
|
JavaScript 前端开发 API
在Node.js上使用dojo库进行面向对象web应用开发
请注意,虽然这个例子在Node.js环境中使用了Dojo,但Dojo的许多功能(例如DOM操作和AJAX请求)在Node.js环境中可能无法正常工作。因此,如果你打算在Node.js环境中使用Dojo,你可能需要查找一些适用于服务器端JavaScript的替代方案。
32 0
|
3天前
|
安全 编译器 API
探索PHP 8的新特性及其对现代Web开发的影响
随着PHP 8的正式发布,这一版本带来了多项重大改进和新特性,旨在提升性能、增加语言的灵活性并简化开发流程。本文将详细探讨PHP 8中的关键更新,包括JIT编译器、联合类型、命名参数、匹配表达式等,并分析这些新特性如何影响现代Web开发的实践。通过引用最新的性能数据和开发者反馈,我们将深入理解PHP 8带来的变革,以及它对现有项目和未来趋势的潜在影响。
|
3天前
|
安全 大数据 PHP
深入理解PHP 7中的新特性及其对现代Web开发的影响
【6月更文挑战第28天】本文将深入探讨PHP 7带来的革新,从性能提升到语法改进,揭示这些变化如何重塑Web开发领域。我们将一窥未来PHP的发展趋势,并分析开发者如何利用这些新特性来构建更快、更安全、更易于维护的应用程序。
9 1