JSTL使用入门

JSTL ---[什么是JSTL,JSTL标签] 文章目录什么是JSTLJSTL环境搭建 什么是JSTL JSP标准标识库,使用JSTL可实现JSP页面的逻辑处理; 可用于编写各种动态JSP页面. JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可. 阅读详情

一、JSTL 简介
JSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML操作以及数据库访问。
JSTL 1.0 有四个定制标记库:core、format、xml 和 sql.
1.core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。
2.format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。
3.xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据。
4.sql 库定义了用来查询关系数据库的操作。

二、表达式语言(Expression Language)
1.隐含对象(常用)
1)requestScope:与请求作用域属性的名称和值相关联的 Map 类
2)sessionScope:与会话作用域属性的名称和值相关联的 Map 类  
3)applicationScope:与应用程序作用域属性名称和值相关联的 Map 类
4)pageScope:与页面作用域属性的名称和值相关联的 Map 类
5)param:按名称存储请求参数的主要值的 Map 类
6)paramValues:请求参数的所有值作为 String 数组存储的 Map 类
2.EL 表达式的格式:
用美元符号($)定界,内容包括在花括号({})中,eg:${value}
3.EL的存取器:使用点运算符(.)和方括号运算符([]).
1)点运算符通常用于访问对象的特性。例如,在表达式 ${user.firstName} 中,使用点运算符来访问 user 标识符所引用对象的名为 firstName 的特性。
2)方括号运算符用来检索数组和集合的元素。在数组和有序集合的情况下,把要检索的元素的下标放在方括号中。对于实现 java.util.Map 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。在方括号中指定键,并将相应的值作为表达式的值返回。
3)点运算符和方括号运算符可能实现某种程度的互换
4.EL运算符
1)算术运算符: +、-、*、/(或 div)和 %(或 mod)
2)关系运算符: ==(或 eq)、!=(或 ne)、<(或 lt)、>(或 gt)、<=(或 le)和 >=(或 ge)
3)逻辑运算符: &&(或 and)、||(或 or)和 !(或 not)
4)验证运算符: empty
三、常用的JSTL core tag
1.set定义变量标记:定义限制了作用域的变量
Syntax:
1):<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/>
2):<c:set var=”varName” [scope=”{page|request|session|application}”]> body content  </c:set>
2.out打印标记:显示表达式的值,取代jsp scriptlet中的<%=variableName%>
Syntax:
1):<c:out value=”${variableNam}” [escapeXml=”{true|false}”]> default value </c:out>
2):<c:out value=”value” escapeXml=”{true|false}”] [default=”defaultValue”] />
3.forEach循环标记(for/while):提供指定的循环次数(适用syntax 2)或在某个数据结构(Collection/Array)(适用syntax 1)上进行循环的能力
Syntax:
1):<c:forEach [var=”varName”]  items=”collection”  [varStatus=”varStatusName”]   [begin=”begin”]  [end=”end”]  [step=”step”] > body content </c:forEach>
2):<c:forEach  [var=”varName”]  [varStatus=”varStatusName”] begin=”begin”  end=”end”  [step=”step”]> body content</c:forEach>
4.forTokens循环标记:允许对一个String值进行循环,使用所选择的字符作为记号(token)之间的定界符
Syntax:
<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> body content </c:forTokens >
5.if条件求值标记(if):只在指定的测试条件为真时求具体的值,没有”else”条件—要么执行要么忽略执行体
Syntax:
1):<c:if test=”testCondition” var=”varName” [scope=”{page|request|session|application}”]/>
2):<c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”]>body content</c:if>
6.choose条件求值标记(switch-case/if-else):使用嵌套when标记(类似case)和otherwise标记(可选,类似default)
Syntax:
1):<c:choose> body content (<when> and <otherwise> subtags)</c:choose>
2):<c:when test=”testCondition”>body content</c:when>
3):<c:otherwise> conditional block</c:otherwise>
7.remove 删除变量标记:用来删除限制了作用域的变量的
Syntax:
<c:remove var=”varName” [scope=”{page|request|session|application}”]/>
四、开始使用JSTL
1.必需的文件:
1)jar档:jstl.jar,standard.jar.一般是放置在lib目录下
2)tld文件:c.tld,一般会是在WEB-INF目录下,依tld文件的位置修改web.xml文档
3)一个web.xml的例子:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
  </taglib>   
</web-app>
2.在JSP页面中声明标记库:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
五、参考资料
JSTL规范:http://java.sun.com/products/jsp/jstl/index.jsp
JSTL 1.0相关下载:http://www.apache.org/dist/jakarta/taglibs/standard-1.0/
JSTL1.0规范书:http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html
表达式语言:http://www-900.ibm.com/developerWorks/cn/java/j-jstl0211/
六、综合使用Core Tag的例子:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head>
<title>
UseJSTLCoreTag
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JSTL Core Tag
</h1>
taglib declare<br />
&lt;%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %&gt;
<table border="1">
  <tr>
    <td>Tag
    </td>
    <td>
      Example
    </td>
    <td>
      Result
    </td>
  </tr>
  <tr>
    <td>
      set
    </td>
    <td>
      &lt;c:set value="sessionVariableValue" scope="session" var="sessionVariable"/&gt;
    </td>
    <td>
      <c:set value="sessionVariableValue" scope="session" var="sessionVariable"/>&nbsp;
    </td>
  </tr>
  <tr>
    <td>out
    </td>
    <td>
      &lt;c:out value="${sessionScope.sessionVariable}" default="none" escapeXml="false"/&gt;   <br/>
      <br/>
      &lt;c:out value="${sessionScope['sessionVariable']}" default="none" escapeXml="false"/&gt;
    </td>
    <td>
      <c:out value="${sessionScope.sessionVariable}" default="none" escapeXml="false"/>  <br />
      <br />
      <c:out value="${sessionScope['sessionVariable']}" default="none" escapeXml="false"/>
    </td>
  </tr>
  <tr>
    <td>
      remove
    </td>
    <td>
      &lt;c:remove var="sessionVariableValue" scope="session"/&gt;
    </td>
    <td>
      <c:remove var="sessionVariable" scope="session"/>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      after remove,&lt;c:out value="${sessionScope.sessionVariable}" default="none" escapeXml="false"/&gt;
    </td>
     <td>
      <c:out value="${sessionScope.sessionVariable}" default="none" escapeXml="false"/>
    </td>
  </tr>
  <tr>
    <td>
      forEach
    </td>
    <td>
      &lt;table&gt;
        &lt;tr&gt;
      &lt;c:forEach begin="1" end="10" step="1" var="loop"&gt;
        &lt;td&gt;
        &lt;c:out value="${loop}"/&gt;
        &lt;/td&gt;
      &lt;/c:forEach&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    </td>
    <td>
      <table>
        <tr>
      <c:forEach begin="1" end="10" step="1" var="loop">
        <td>
        <c:out value="${loop}"/>
        </td>
      </c:forEach>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td>
      forTokens
    </td>
    <td>
      &lt;c:forTokens var="token" delims="#,;4" items="0#1,2,34,5,6,7;8,9,A,B,C#,;4D" begin="3" end="10" step="2"&gt;
        &lt;c:out value="${token}"&gt;
        &lt;/c:out&gt;
      &lt;/c:forTokens&gt;
    </td>
    <td>
      <c:forTokens var="token" delims="#,;4" items="0#1,2,34,5,6#,7;8,9,A,B,C#,;4D" begin="3" end="10" step="2">
        <c:out value="${token}">
        </c:out>
      </c:forTokens>
    </td>
  </tr>
  <tr>
    <td>
      if
    </td>
    <td>
      &lt;c:if test="${sessionScope.sessionVariable=='none'}"&gt;
        There is not sessionVariable
      &lt;/c:if&gt;
      <br />
      &lt;c:if test="${sessionScope.sessionVariable!='none'}"&gt;
        The value of sessionVariable is not none
      &lt;/c:if&gt;
    </td>
    <td>
      <c:if test="${sessionScope.sessionVariable=='none'}">
        There is not sessionVariable
      </c:if>
      <c:if test="${sessionScope.sessionVariable!='none'}">
        The value of sessionVariable is not none
      </c:if>
    </td>
  </tr>
  <tr>
    <td>
      choose
    </td>
    <td>
      &lt;c:choose&gt;<br/>
        &lt;c:when test="${empty sessionScope.sessionVariable}"&gt;<br/>
          There is not sessionVariable
        &lt;/c:when&gt;<br/>
        &lt;c:otherwise&gt;<br/>
          The value of sessionVariable is not none
        &lt;/c:otherwise&gt;<br/>
      &lt;/c:choose&gt;<br/>
    </td>
    <td>
      <c:choose>
        <c:when test="${empty sessionScope.sessionVariable}">
          There is not sessionVariable
        </c:when>
        <c:otherwise>
          The value of sessionVariable is not none
        </c:otherwise>
      </c:choose>
    </td>
  </tr>
</table>
<form  method="post">
  <table>
    <c:forEach var="loop" begin="1" end="10" step="1">
      <tr>
        <td>
          <input type="checkbox" name="checkBox" value="<c:out value='${loop}' />"/><c:out value='${loop}' />
        </td>
      </tr>
    </c:forEach>
  </table>
  <input type="hidden" name="hiddenVar" value="hiddenValue"/>
  <input type="submit" value="submit"/>
</form>
&lt;c:out value="param.hiddenVar" default="none"/&gt;
<c:out value="${param.hiddenVar}" default="none"/>
<c:if test="${not empty param.hiddenVar}">
<p>
  after click submit button,display following:
</p>
you select:
<c:forEach var="checkboxValues" items="${paramValues.checkBox}" varStatus="status">
  <c:out value="${checkboxValues}"/>
  <c:if test="${!status.last}">,
  </c:if>
</c:forEach>
</c:if>
<P>请通过参看该页源文件的下列部分以体验out标记的escapeXml属性的作用。<br/>
<c:set var="tempVar" scope="page">
  <pre><&></pre> 
</c:set>
set escapeXml=false,output:
<c:out value="${tempVar}" escapeXml="false"/>
set escapeXml=true,output:
<c:out value="${tempVar}" escapeXml="true"/>
</p>
</body>
</html>

【Java WEB-001】使用JSTL步骤+常用的核心标签 JSTL是一个不断完善的开放源代码的JSP标签库,他是由APAche的jakrta小组来维护的。他提供4个主要的标签库,包括核心标签库、国际化与格式化标签库、SQL标签库和XML标签库。 要使用它,则需要配置:以下配置是基于环境JDK1.8+eclipse+tomcat9.0下进行的演示步骤: 第一步: 两个包jstl.jar和standard.jar拷贝在lib下面: 第二步: 配置web.xml <jsp-config> <taglib> < 阅读详情

相关推荐

JavaWeb核心技术系列教程(28)——JSTL入门

之前,我们介绍了JSP常用便签以及JSP自定义标签。其实,早在从JSP 1.1规范开始JSP就支持使用自定义标签了,使用自定义标签极大地降低了JSP页面的复杂度,同时增强了代码的重用性;所以,自定义标签在WEB应用中被广泛使用。故,许多WEB应用厂商都开发出了自己的一套标签库,这导致出现了许多功能相同的标签,令开发人员无从选择,无所适从,手忙脚乱。为了解决该问题,Sun公司研发了一套JSP标准标签库(Java Server Pages Standard Tag Library),简称JSTL。

谷哥的小弟 716

JSTL详解

一JSTL概述        (1)什么是JSTL        JSTL是Java中的一个定制标记库集。JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功 能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它 还提供了一个框架来使用集成JSTL的自定义标签。        (2

错觉 3万+

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1206

JSTL概述

一、JSTL概述 JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用起来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库而已! 如果你使用MyEclipse开发JavaWeb,那么在把项目发布到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的Jar包!如果你没有使用MyEclipse开发那么需要自己来导入这个JSTL的Jar包:jstl-1.2.jar。 JSTL一共包含四大标签

Q2854542067的博客 3648

基于CH32X035的USB双K型热电偶温度计:硬件设计、冷端补偿与信号放大详解

本文详细介绍了基于CH32X035单片机设计USB双K型热电偶温度计的完整方案。重点解析了硬件设计中的核心挑战:如何利用精密运放GS8552-SR进行信号放大,以及采用NTC热敏电阻和查表法实现精确的冷端补偿。项目通过USB供电通信,实现了双路高精度温度测量与显示,为电子爱好者和工程师提供了实用的参考设计。

weixin_42153793的博客 160

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3050

JSTL——jstl标签简介

JSTL——jstl标签简介

chenxingxingxing的博客 8976

vscode远程连接deepin出错:过程试图写入的管道不存在的解决方法

背景:昨天我用vscode使用ssh远程开发还处于正常状态,今天刚打开电脑,并启动deepin,再次使用vscode重新连接就出现异常。意思就是22号默认端口连接被拒绝,所以要先确定ssh是否连接。3.重新进入vscode里面,重新连接,如图成功连接。,查看port后面的端口号是不是22号。1.检查sshd是否启动。

qq_43573047的博客 2946

带你快速入门EL表达式和JSTL的使用

EL表达式

hearting的博客 736

YOLOv8_obb训练流程-原理解析[旋转目标检测理论篇]

本文主要介绍了YOLOv8旋转目标检测的流程,介绍了标签的解码、预测结果的解码,以及如何理解旋转角度等内容,还介绍旋转目标检测框的正样本选取及Loss计算。

ice 4731

匹配博弈双边选择算法

刚学图论匹配方面的一些知识,记录下来。

ymengm的博客 2434

Java Web入门之JSTL标签的解析及使用(超详细必看)

Java Web入门之JSTL标签的解析及使用(超详细必看) 包括几个核心标签库的具体用法和语法

showswoller的博客 1859

目标检测YOLO实战应用案例100讲-基于YOLOv7的番茄采摘机械手场景感知及试验(下)

根据软件系统的设计需求,制定系统的可行性方案分析,编写系统的相关程序和 调试运行环境,对系统进行测试,以实现对番茄数据的采集及监测。登陆界面登陆后,进入选择界面,菜单包括了对番茄种植棚室的固定相机数据的监测、 对番茄采摘机械手的双目相机采集的番茄的静态、动态数据的获取、对番茄静态、动态数 据处理的功能菜单等选项。与利用人工去进行对于番茄果实的识别和数目的统计相比,番茄视觉系统自动记录番 茄数量以及红色已经成熟的番茄、青色未成熟番茄的数量,减轻人工记录的工作量,减少 人工记录的误差,从经济方面是可行的。

qq_36130719的博客 811

JSP标准标记库(JSP Standard Tag Library,JSTL)使用入门

 JSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML操作以及数据库访问。JSTL 1.0 有四个定制标记库:core、format、xml 和 sql.1.core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。

大雄的专栏 792

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JSTL 入门: 探讨 core使用定制标记进行流控制和 URL 管理

转自[url]http://www.ibm.com/developerworks/cn/java/j-jstl0318/[/url] JSTL 入门: 探讨 core使用定制标记进行流控制和 URL 管理 通过阅读本系列的 第一篇文章,您对 JSTL 有了初步的了解。我们描述了使用其 表达式语言(EL)来访问数据和操作数据。正如您所了解的那样,EL 用来为 JSTL 定制标记的...

转些好文章,促进分享。 145

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JSTL标签库的使用

1 JSTL 1.1 JSTL概述 1)简介 JSTL的全称是:JSP Standard Tag Libary。它是JSP中标准的标签库。它是由Apache实现的。 它由以下5个部分组成: 组成 作用 说明 Core 核心标签库。 通用逻辑处理 Fmt 国际化有关。 需要不同地域显示不同语言时使用 Functions EL函数 EL表达式可以使用的方法 SQL 操作数据库。 不用 XML 操作XML。 不用 2)使用要求 要想使用JSTL标签库,在javaweb工程中需要

weixin_45417754的博客 1333

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JSTL 入门(2):探讨 core——使用定制标记进行流控制和 URL 管理

顾名思义,JSP 标准标记库(JSP Standard Tag Library,JSTL)core 库为一些基本功能(如,管理限定了作用域的变量和与 URL 交互等)和基本操作(如,迭代和条件化)提供了定制标记。这些标记不仅可以由页面设计人员直接利用,而且还为与其它 JSTL 库相结合从而提供更复杂的表示逻辑奠定了基础。Mark Kolb 在本文中继续对 JSTL 和 core 库进行探讨,研究用

xxxatt的专栏 671

jstl.jar和standar.jar包下载

jstl.jar下载地址: http://repo2.maven.org/maven2/javax/servlet/jstl/ standard.jar下载地址: http://repo2.maven.org/maven2/taglibs/standard/ JSTL 1.0 的声明是: <%@ taglib prefix="c" uri="http://java.sun.c...

CUIZIBO的博客 3544

JavaWeb零基础入门之JSTL标签库

学完之后学习JavaWeb零基础入门之 视频链接:https://www.bilibili.com/video/BV1Y7411K7zz?p=1 参考手册:https://www.w3school.com.cn/html5/index.asp 一、JSTL标签库简介 JSTL标签库全称是JSP Standard Tag Library,是一个不断完善的开放源代码的JSP标签库 EL表达式主要是为了替换JSP中的表达式脚本,JSTL标签库是为了替换代码脚本 JSTL由五个不同功能的标签库组成:

aaenen 的博客 279

servlet各个版本支持jstl

最近在做一个java web的项目,发现不同的servlet版本下要支持jstl依赖的jar包是不同的,现在记录下,以免忘记。 Java  EE版本介绍 此章节内容来自于http://www.javasprint.com/java_training_tutorial_blog/java_jee_versions_jsp_servlet_story_jsf_jstl_el_history.htm

StormrageWang的专栏 1万+

JSTL简化JSP编码

随着J2EE瘦客户机技术JavaServer Pages(JSP)在过去几年中的流行,独立开发人员已经创建了许多自定义的JSP标记库。虽然很多标记库是编写用来实现不同目标的,但它们往往也对迭代、条件及其他通用操作都提供了类似的解决方案。 为了减少对解决类似通用问题的独立标记库的需求,在Java Community Process(JSR 52)的赞助下创建了JSTL(JavaServer Page

熊熊乐园-JAVA篇 1791

使用JSTL中的一个莫名其妙的问题以及解决

昨天是我初次使用JSTL,因为我是用Eclipse开发的,就按照网上的一篇入门文章做下去:1。下载并解压了Jakarta jstl 1.1.1.2. 将解压后的lib目录下的两个jar文件拷贝到tomcat 下的自己的应用下的WEB-INF/lib目录下3。将解压后的tld目录下的tld文件拷贝到到tomcat 下的自己的应用下的WEB-INF/目录下4.修改web.xml为以下内容:    PU

skyfree的专栏 1482
上一篇: Linux 常用命令汇编(一)
下一篇: Java 5.0文章收集
hitgnu
博客等级 码龄23年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值