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月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
2月前
|
移动开发 JavaScript 数据可视化
|
2月前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
50 13
|
3月前
|
开发者 UED
Axure“Web高端交互元件库”:产品与设计的得力助手
这套“Web高端交互元件库”精心构建了四大板块内容,分别是登陆首页集合、Web框架集合、表单元件集合以及主流后台组件。每一板块都包含了大量实用且美观的交互元件,设计师与开发者可以根据具体项目需求,快速找到并应用这些元件,从而大大提升工作效率。
|
3月前
|
开发者 搜索推荐 Java
超越传统:JSF自定义标签库如何成为现代Web开发的个性化引擎
【8月更文挑战第31天】JavaServer Faces(JSF)框架支持通过自定义标签库扩展其内置组件,以满足特定业务需求。这涉及创建`.taglib`文件定义标签库及组件,并实现对应的Java类与渲染器。本文介绍如何构建和应用JSF自定义标签库,包括定义标签库、实现标签类与渲染器逻辑,以及在JSF页面中使用这些自定义标签,从而提升代码复用性和可维护性,助力开发更复杂且个性化的Web应用。
70 0
|
4月前
|
机器人 Shell 开发者
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
`roslibpy`是一个Python库,它允许非ROS(Robot Operating System)环境(如Web浏览器、移动应用等)与ROS环境进行交互。通过使用`roslibpy`,开发者可以编写Python代码来远程控制ROS节点,发布和订阅话题,以及调用服务。
|
3月前
|
数据可视化 数据挖掘 持续交付
Axure Web端元件库:从Quick UI到500+组件的飞跃
在快速变化的数字世界中,产品设计不仅仅是功能的堆砌,更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节,其重要性不言而喻。Axure,作为业界领先的原型设计工具,凭借其强大的交互设计和丰富的功能,赢得了全球设计师和开发者的信赖。而Axure Web端元件库,则是这一平台上的一颗璀璨明珠,它以超过500个精心设计的组件为基础,为设计师们打开了一扇通往高效、高质量原型设计的大门。
147 0
|
4月前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
|
Java 开发者 索引
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
126 0
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
95 3

热门文章

最新文章