首页 > 其他分享 >JSTL标签库

JSTL标签库

时间:2022-10-19 15:33:03浏览次数:33  
标签:EL 迭代 标签 指定 JSTL page 属性


JSTL标签


   


1    分类


    共有以下几种:


核心标签库 (c标签库) //常用,熟练运用






xml标签库(x标签库)//操作xml,但是一般在dao层做,不用了解


sql标签库(sql标签库)//操作sql数据库,但是一般在dao层做,不用了解


2    使用步骤


(标签背后隐藏的java代码,因为jstl标签语言(还有jsp标签)都会被编译成java代码,java代码需要jar包的支持)


     需要2个包:核心包+辅助包。jstl-1.2.jar ​​点击打开链接​​​    standard.jar ​​​点击打开链接​​  


    注意:使用javaee5.0以上的项目,会自动导入jstl支持的jar包


       


       使用taglib标签导入标签库: <%@ taglib uri="tld文件的uri名称" prefix="简写" %>


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


  注意:上面prefix一般都写c,也可以是其它字母。




JSTL标签库_迭代

核心标签了。若是要使用fmt标签库,fn函数库等,则需根据第2.2中,使用taglib标签指令,添加对应的uri,就能使用了。



3    核心标签库的重点标签




保存数据:<c:set></c:set>   



获取数据:<c:out value=""></c:out>



单条件判断:<c:if test=""></c:if>



多条件判断:<c:choose></c:choose>



<c:when test=""></c:when>



<c:otherwise></c:otherwise>



循环数据:<c:forEach items=”” var=””></c:forEach>



<c:forTokens items="" delims=""></c:forTokens>



重定向:<c:redirect></c:redirect>


    3.1 <c:set>标签


    


属性名

是否支持EL

属性类型

属 性 描 述

value

true

Object

用于指定属性值

var

false

String

用于指定要设置的Web域属性的名称

scope

false

String

用于指定属性所在的Web域(属性socope的值可为:page/request/session/application

target

true

Object

用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象

property

true

string

用于指定当前要为对象设置的属性名称


   3.2 <c:out>标签


   out标签:用于输出一段文本到浏览器中。也可以结合EL表达式,获取域中的值并输出。和EL表达式直接输出唯一区别是可以结合escapeXml属性和default属性作用。


属性名

是否支持EL

属性类型

属 性 描 述

value

true

Object

指定要输出的内容

escapeXml

true

Boolean

指定是否将>、<、&、'、" 等特殊字符进行HTML编码转换后再进行输出。默认值为true

default

true

Object

指定如果value属性的值为null/””时所输出的默认值


    3.3 <c:if>标签


if标签:单条件的判断 


属性名

是否支持EL

属性类型

属 性 描 述

test

true

boolean

决定是否处理标签体中的内容的条件表达式

var

false

String

用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称

scope

false

String

指定将test属性的执行结果保存到哪个Web域中



    3.4 <c:choose>标签



   <c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。


    3.5<c:forEach>标签


< c:forEach > 标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。  


         forEach中的属性:


            begin:从集合中的第begin个元素开始进行迭代,begin的索引值默认从0开始编号。


            end:到哪个索引值结束,默认到最后一个元素。


            step:指定迭代的步长,即迭代因子的迭代增量,默认是1


            items:将要迭代的集合对象


            var:当前迭代到的对象



            varStatus:当前正在遍历元素的状态对象。(其中count属性:当前遍历的位置,从1开始。)


属性名

是否支持EL

属性类型

属 性 描 述

var

false

String

指定将当前迭代到的元素保存到page这个Web域中的属性名称

items

true

任何支持的类型

将要迭代的集合对象

varStatus

false

String

指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称

begin

true

int

如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代

end

true

int

参看begin属性的描述

step

true

int

指定迭代的步长,即迭代因子的迭代增量


    3.6 <c:forTokens>标签


    forTokens标签:循环切割特殊字符串。


属性名

是否支持EL

属性类型

属 性 描 述

Items

true

任何支持的类型

将要迭代的集合对象

delims

false

String

字符串的分割符,可以同时有几个分割符(依次写在引号内即可。)

varStatus

false

String

指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称

begin

true

int

如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代

end

true

int

参看begin属性的描述

step

true

int

指定迭代的步长,即迭代因子的迭代增量

var

False

String

指定将当前迭代到的元素保存到page这个Web域中的属性名称



3.7 <c:redirect>标签



< c:redirect > 标签用于将当前的访问请求转发或重定向到其他资源,它可以根据 url 属性所指定的地址,执行类似 < jsp:forward > 这个 JSP 标准标签的功能,将访问请求转发到其他资源;或执行 response.sendRedirect () 方法的功能,将访问请求重定向到其他资源。  



属性名

是否支持EL

属性类型

属 性 描 述

url

true

String

指定要转发或重定向到的目标资源的URL地址



 



验证Demo如下:


​​<%@ page language="java" import="java.util.*, com.cn.entity.*" pageEncoding="UTF-8"%>​​​​<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>​​​​<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">​​​​<html>​​​​  <head>​​​​    <title>使用jstl核心标签库</title>​​​​    ​​​​  <meta http-equiv="pragma" content="no-cache">​​​​ <meta http-equiv="cache-control" content="no-cache">​​​​  <meta http-equiv="expires" content="0">    ​​​​ <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">​​​​ <meta http-equiv="description" content="This is my page">​​​​ <!--​​​​ <link rel="stylesheet" type="text/css" href="styles.css">​​​​ -->​​​​​​​​  </head>​​​​  ​​​​  <body>​​​​    <%-- ​​​​     使用jstl中的核心标签 库​​​​    --%>​​​​ <%-- set标签:保存数据(保存到域中),默认保存到page域中 --%>​​​​ <h2>set标签:保存数据(保存到域中),默认保存到page域中,属性socope的值可为:page/request/session/application</h2>​​​​    <c:set var="name" value="page1111"></c:set>​​​​     取出scope默认值(page域)中保存的数据:${name }<br/>​​​​    <c:set var="name" value="page1111" scope="page"></c:set>​​​​     取出page域中保存的数据:${pageScope.name }<br/>​​​​    <c:set var="name" value="request2222" scope="request"></c:set>​​​​     取出request域中保存的数据:${requestScope.name }<br/>​​​​    <c:set var="name" value="session2222" scope="session"></c:set>​​​​     取出session域中保存的数据:${sessionScope.name }<br/>​​​​    <c:set var="name" value="application2222" scope="application"></c:set>​​​​     取出application域中保存的数据:${applicationScope.name }<br/>​​​​     ​​​​    <hr/>​​​​     ​​​​    <%-- out标签:用于输出一段文本到浏览器中 --%>​​​​ <h2>out标签:用于输出一段文本到浏览器中。也可以结合EL表达式,获取域中的值并输出。和EL表达式直接输出唯一区别是可以结合escapeXml属性和default属性作用</h2>​​​​    直接输出值:<c:out value="这里写什么,就直接输出什么"></c:out><br/>​​​​    默认从page域中获取数据:<c:out value="${name }"></c:out><br/>​​​​     用out标签从page域中获取数据:<c:out value="${pageScope.name }"></c:out><br/>​​​​     用out标签从request域中获取数据:<c:out value="${requestScope.name }"></c:out><br/>​​​​     用out标签从session域中获取数据:<c:out value="${sessionScope.name }"></c:out><br/>​​​​     用out标签从application域中获取数据:<c:out value="${applicationScope.name }"></c:out><br/>​​​​     <%--​​​​       out标签与el表达式有区别吗?详见下面的例子。​​​​      ​​​​      out标签中的属性:​​​​        default:当value的值为null后者""空时,可以输出默认值。但是el表达式只能输出空。​​​​         escapeXml:是否对value值进行转义(指定是否将>、<、&、'、" 等特殊字符进行HTML编码转换后再进行输出。)​​​​          false,转义,则将其中的html、xml解析出来。​​​​           true,不转义(默认)​​​​     --%>​​​​     <%​​​​      String msg = null;​​​​      pageContext.setAttribute("msg", msg);​​​​       %>​​​​      out标签default属性的作用::<c:out value="${msg }" default="默认值:<h3>这里会原样输出吗?</h3>"></c:out><br/>​​​​      out标签escapeXml属性的作用:<c:out value="${msg }" default="默认值:<h3>这里会原样输出吗?</h3>" escapeXml="false"></c:out><br/>​​​​     out标签escapeXml属性的作用(使用EL表达式):<c:out value="${msg }" default="默认值:<h3>这里会原样输出吗?</h3>" escapeXml="${!(empty msg) }"></c:out><br/>​​​​     EL表达式获取的值:${msg }​​​​     ​​​​         <hr/>​​​​     ​​​​    <%-- if标签:单条件的判断 --%>​​​​ <h2>if标签:单条件的判断</h2>​​​​    <c:if test="true">​​​​      条件成立,这里会显示出来。<br/>​​​​    </c:if>​​​​     <c:if test="${5>3 }">​​​​      条件成立,这里会显示出来。<br/>​​​​    </c:if>​​​​     <c:if test="${empty msg }">​​​​       条件成立,这里会显示出来。<br/>​​​​    </c:if>​​​​     <c:if test="false">​​​​       条件不成立,这里不会显示出来。<br/>​​​​    </c:if>​​​​     <c:if test="${5<3 }">​​​​      条件不成立,这里不会显示出来。<br/>​​​​    </c:if>​​​​     ​​​​    ​​​​    <%-- choose标签+when标签+otherwise标签:多条件的判断 --%>​​​​  <h2>choose标签+when标签+otherwise标签</h2>​​​​  <c:set var="score" value="83" scope="page"></c:set>​​​​ 考试成绩为${score }分,成绩为:<c:choose>​​​​    <c:when test="${score>=90 && score<=100}">优秀</c:when>​​​​   <c:when test="${score>=80 && score<90}">良好</c:when>​​​​   <c:when test="${score>=60 && score<80}">一般</c:when>​​​​   <c:otherwise>不及格</c:otherwise>​​​​  </c:choose>​​​​ ​​​​  <hr/>​​​​ <%-- forEach标签:循环 --%>​​​​  <% ​​​​    //创建List集合数据​​​​    List<Student> list = new ArrayList();​​​​   list.add(new Student(1, "木丁西", '男', 24));​​​​   list.add(new Student(2, "marry", '女', 18));​​​​   list.add(new Student(3, "刘先森", '男', 59));​​​​   //将集合保存到page域中​​​​    pageContext.setAttribute("list", list);​​​​   ​​​​    //创建Map集合数据​​​​   Map<String, Student> map = new HashMap<String, Student>();​​​​    map.put("004", new Student(4, "吴莫愁", '女', 32));​​​​   map.put("005", new Student(5, "张馨予", '女', 35));​​​​   map.put("006", new Student(6, "木先生", '男', 33));​​​​   //将集合保存到page域中​​​​    pageContext.setAttribute("map", map);​​​​ %>​​​​ <%--​​​​   注意我用c:set存储集合不行​​​​  --%>​​​​  <%--  <c:set var="list2" value="${list }"></c:set> --%>​​​​ >>>>>>>>>>>>>>>>>>>${empty list }<c:out value="${list }" default="哈哈哈"></c:out>​​​​  <h2>forEach标签:循环</h2>​​​​ <%--​​​​   forEach中的属性:​​​​      begin:从集合中的第begin个元素开始进行迭代,begin的索引值默认从0开始编号。​​​​     end:到哪个索引值结束,默认到最后一个元素。​​​​     step:指定迭代的步长,即迭代因子的迭代增量,默认是1​​​​      items:将要迭代的集合对象​​​​     var:当前迭代到的对象​​​​      varStatus:当前正在遍历元素的状态对象。(其中count属性:当前遍历的位置,从1开始。)​​​​  --%>​​​​   <%-- 遍历List --%>​​​​ <c:forEach begin="0" end="2" step="1" items="${pageScope.list }" var="stu" varStatus="varSta">​​​​    第${varSta.count }个学生-->编号:${stu.id }#姓名:${stu.name }#性别:${stu.sex }#年龄:${stu.age }<br/>​​​​  </c:forEach>​​​​  <%-- 遍历Map --%>​​​​ <c:forEach items="${map }" var="entry">​​​​   ${entry.key }=${entry.value }【编号:${entry.value.id }#姓名:${entry.value.name }#性别:${entry.value.sex }#年龄:${entry.value.age }】<br/>​​​​ </c:forEach>​​​​  ​​​​  <hr/>​​​​ <%-- forTokens标签:循环切割特殊字符串​​​​     其属性如下:​​​​      items:将要迭代的集合对象​​​​     delims:字符串的分割符,可以同时有几个分割符(依次写在引号内即可。)​​​​     var:String类型,当前迭代的对象元素​​​​  --%>​​​​ <h2>forTokens标签:循环切割特殊字符串</h2>​​​​  <%​​​​   String str = "刘先生+java-php*net-python-木先生";​​​​   pageContext.setAttribute("str", str);​​​​  %>​​​​   <c:forTokens delims="-*+" items="${str }" var="s" >​​​​    ${s }<br/>​​​​   </c:forTokens>​​​​  ​​​​  <hr/>​​​​  <%-- redirect:重定向​​​​  --%>​​​​ <h2>redirect:重定向</h2>​​​​ <%-- <c:redirect url="http://www.baidu.com"></c:redirect> --%>​​​​  <%-- <c:redirect url="/index.jsp"></c:redirect> --%>​​​​  ​​​​  </body>​​​​</html>​​


效果:




JSTL标签库_java_02

 

标签:EL,迭代,标签,指定,JSTL,page,属性
From: https://blog.51cto.com/u_15769923/5773830

相关文章

  • 『现学现忘』Git基础 — 36、标签tag(一)
    目录1、标签介绍2、列出标签3、创建标签(1)标签的分类(2)附注标签(3)轻量标签4、后期打标签1、标签介绍软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一......
  • 多标签文本分类
    多标签文本分类是指一个输入文本样本对应有多种标签。本文是一个训练多标签文本分类任务的实例:训练过程main.py导入相关的库:#coding=utf-8importos#os.environ["C......
  • 用心维护自己的职场标签
    前几天有个朋友推了某乎上的一个问题,问我怎么看,题目是“有些测试人员BUG产出较少,复制其他组员N个版本以前的BUG进行提交,这种行为你怎么看? 怎么处理?”看完了我不知道该说什......
  • antdv 实现表格中多个标签 分开显示
    如下图,实现效果:  {title:'商品标签',dataIndex:'labelnames',width:260,customRender:({record})=>{constlabelnames=recor......
  • HTML link 标签和script标签
    来源:https://blog.csdn.net/weixin_45750972/article/details/122503767HTMLlink标签和script标签1.link标签<head><linkrel="stylesheet"type="text/css"href="th......
  • HTML常用标签超详细整理
    来源:https://blog.csdn.net/shengyin714959/article/details/125009120HTML概述1.1什么是HTMLHTML是做网站的、Web开发、互联网生态开发(PC端+移动端+微应用)目前我们......
  • 河北稳控科技智能振弦传感器的核心技术-电子标签模块
    河北稳控科技智能振弦传感器的核心技术-电子标签模块在前面我们讲了《振弦传感器的发展及信息化的核心技术-VM系列振弦采集模块》中提到河北稳控科技研发并批量生产的激励......
  • 动态加载style标签改变打印方向
    注意innerHTM必须换行书写exportfunctionsetStyle(direction){conststyleNode=document.createElement('style')styleNode.setAttribute('id','print-style......
  • 如何规划blog的标签(tag)和分类
    在《IT人员如何管理知识》中提到了应该构建并定期重构自己的知识地图。作为一种“写作式学习”的有效手段,blog也应该纳入个人知识管理的范畴。那么,如何将知识地图映射到b......
  • 基于git 提交记录打标签
    列出所有标签:gittag-n获取历史的commit提交记录:gitlog--pretty=oneline--abbrev-commit打标签:gittag-a"指定标签名"-m"tag注释说明"commitID将本地tag推......