13.2jstl标签

1. JSTL标签库概述

JSTL全称为JavaServerPages Standard Tag Library。

由JCP(Java Community Process)指定标准。

是提供给 Java Web 开发人员一个标准通用的标签函数库。

可以和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性。 EL表达式获取值 ,jstl标签是一些结构书写

2. jstl引入

在java ee5及其以上版本,已经默认包含了jstl标签库,可以直接直接使用。

再通过指令确定引入的标签库名称:

<%@taglib uri="" prefix=""%>         uri="地址"       prefix简称

3. 拓展:命名空间或名称空间概述

在通过taglib指令引入标签的时候,需要指定一个名称空间URN。这个URN中的内容看似是一个地址,但是实际上表示的是一个名字。书写形式为地址的原因是希望做到每一个指定标签库规范的人都可以有唯一一份规范,避免两两之间相互重复。

a. 在使用jstl标签库时,需要通过taglib标签引入,其中uri包含的内容是一个地址,但是这个地址其实是一个命名空间(URN)。

b. URI中包含URL和URN两部分。其中URN是作为一个唯一的名称空间来使用,目的是确定网络中当前jstl标签库仅此一个,不会出现引入的错误。

c.URN的编写方式:http://域名/分级1/分级2/分级3…

URI相当于北京市徐帅     URL 相当于地球中国北京某某公司徐帅     因为北京市可能在火星上也有 所以URI的范围比URL的范围大,

4. taglib可以引入的标签库

core    ----   核心标签库   c库

fmt      ---- 国际标签库

sql       ----  sql标签库

xml      ----  xml标签库

a. taglib指令引入core库

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

设置完以后 c就可以替代 http://java.sun.com/jsp/jstl/core ,所以把c称之为简称 它可以是其他的比如b,e。。。名字随意取

5. JSTL标签库中常用标签

a. <c:set>

a.    设置/修改域中属性。

scope:是域的意思 就是你要向那个域设置值

var:相当于原来设置变量的name

value 相当于设置的变量的值

target:代表的是目标,也就是在整个域中寻找一个目标,然后可以修改目标的name和值 ,里面的el表达式用的是{$ a} 自动寻找域

property:属性的意思,可以设置map中键的值和对象的属性

        <c:set scope="request" var="name" value="zs"></c:set> 相当于原来的<%request.setAttribute("name","zs");%>
<h3>c:set设置域中值</h3>
      <c:set scope="page" var="a" value="abc"></c:set>
      <c:set scope="request" var="a" value="123"></c:set>
      <c:set scope="session" var="a" value="789"></c:set>
      <c:set scope="application" var="a" value="114"></c:set>
      ${pageScope.a } abc
      ${requestScope.a} 123
      ${sessionScope.a } 789
      ${applicationScope.a } 114
      ${a} 自动寻值从小到大的范围找 abc
      <h4>修改域中的值</h4>
      <c:set scope="request" var="a" value="曹洋"></c:set>
      ${requestScope.a} 曹洋

b.设置和修改map中的值

                <h3>c:set设置map中的值</h3>
                      <%
                          Map<String,String> map = new HashMap<String,String>();
                          pageContext.setAttribute("map", map);

                       %>
                      <c:set target="${map}" property="name" value="小朴朴"></c:set>
                      ${map} 结果:{name,小朴朴}
                      ${map.name } 结果:小朴朴
                      <h4>修改map中的值</h4>
                      <c:set target="${map }" property="name" value="小兰兰"></c:set>
                      ${map } 结果:{name,小兰兰}
                      ${map.name } 结果:小兰兰

c.修改javaBean中的值

                <h3>javabean中值的修改</h3>
                      <%
                          Person p = new Person("李帅",19,"女");
                          pageContext.setAttribute("p", p);
                       %>
                       ${p.name }
                       <c:set target="${p}" property = "name" value="小帅帅"></c:set>
                       ${p.name }
                       <!-- javabean中如果没有对应addr属性的set方法提供,则不能随意设置新的属性 -->
                       <%-- <c:set target="${p }" property="addr" value="河北"></c:set> --%>
                      <%-- ${p.addr } --%>

d.c:remove移除域中属性

            <h3>c:remove移除域中属性</h3>
                  <c:set scope="page" var="name" value="谢逊"></c:set>
                  <c:set scope="request" var="name" value="韦一笑"></c:set>
                  <c:set scope="session" var="name" value="殷天正"></c:set>
                  <c:set scope="application" var="name" value="黛绮丝"></c:set>
                  ${pageScope.name }
                  ${requestScope.name }
                  ${sessionScope.name }
                  ${applicationScope.name}
                  ${name }
                  <hr>
                  <!-- 删除指定域中的数据 -->
                  <c:remove var="name" scope="request" />
                  ${pageScope.name }
                  ${requestScope.name }
                  ${sessionScope.name }
                  ${applicationScope.name}
                    <hr>
                  <!-- 如果不指定删除哪一个域,则将全部域中对应的属性删除 -->
                  <c:remove var="name"/>
                  ${pageScope.name }
                  ${requestScope.name }
                  ${sessionScope.name }
                  ${applicationScope.name}

e.c:if判断结构

<h3>c:if 判断结构</h3>
      <c:set var="num" value="100" scope="request"></c:set>
      <c:if test="${num<100}" var="flag">  //test就是if()判断语句中的内容  var代表的是当前判断的结果true or false
          num小于100                            var中的变量值不能相同,即使相同那么就是指定var中变量的域,要再加一个属性scope
      </c:if>
      ${flag }

      <c:if test="${num>=100}" var="flag1">
          num大于等于100
      </c:if>
      ${flag1}

f:c:choose选择判断结构

首个满足条件的进行输出

<h3>c:choose选择判断结构</h3>
      <c:choose>
          <c:when test="${num<100 }">num小于100</c:when>   //test中间用的是el的条件判断
          <c:when test="${num<1000 }">num小于1000</c:when>
          <c:when test="${num<10000 }">num小于10000</c:when>
          <c:otherwise>num大于等于10000</c:otherwise>
      </c:choose>

g.c:forEach 循环结构

先来看看起始标签可以用到的属性

begin: 开始下标 从0开始

end:  结束下标

items:

step: 步长就是一次循环 加几,默认为1

var: 每次循环拿到的元素

varStatus:代表每一个遍历到的元素的状态,如下表

index 指下标   count指遍历到的元素的个数

原文地址:https://www.cnblogs.com/xuwangqi/p/11370328.html

时间: 2024-10-30 09:30:05

13.2jstl标签的相关文章

UIKit框架(13)标签控制器UITabBarController

标签控制器UITabBarController介绍 跟UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ.微信等应用. 底部包含一个UITabBar标签栏,点击标签栏上的按钮实现页面的切换 代码使用UITabBarController UITabBarController包含一个控制器数组: @property(nonatomic, copy) NSArray *viewControlle

iOS开发笔记13:顶部标签式导航栏及下拉分类菜单

当内容及分类较多时,往往采用顶部标签式导航栏,例如网易新闻客户端的顶部分类导航,最近刚好有这样的应用场景,参考网络上一些demo,实现了这种导航效果,记录一些要点. 效果图(由于视频转GIF掉帧,滑动和下拉动画显得比较生硬,刚发现quickTime可以直接录制手机视频,推荐一下,很方便) 1.顶部标签式导航栏 (1)实现思路 其实就是在上下两个UIScrollView上做文章,实现联动选择切换的效果. ①顶部标签导航栏topCategoryListScrollView加载显示分类数据,下方con

HTML5语义化标签

一.什么是语义化标签?1.那么什么叫做语义化呢?说的通俗点就是:就是给div起个外号,比如,网页上的文章的标题就可以叫他标题,网页上的各个文章,就可以叫他文章. 2.为啥使用语义化标签?(1). 更容易被搜索引擎收录.(2). 更容易让屏幕阅读器读出网页内容.(3). 能够更好的体现页面的主题.(4).兼容性更好,支持更多的网络设备.二.常见语义化标签 头部--header和nav标签 header头部,body下的直接子元素header一般用于放页面的介绍性的信息如网站名称.logo或者导航栏

SpringMVC表单标签简介

转自:SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令: <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

第六周作业-JSTL标签库

JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大简化JSP页面中的JAVA代码,配合JSTL核心标签库,让JSP更为灵活易用. JSTL(JSP Standard Tag Library,JSP标准标签库)是一个由Apache基金会不断完善的开源JSP标签库. JSTL标签根据其功能一般分为以下五类: 1.核心标签库(Core Tags) 2.格

自定义标签文件(二)

开发自定义标签,实现标准标签c:foreach相同的功能.以下是关键代码: 实现迭代的标签处理类ForeachTag.java 1 package com.abc; 2 3 import java.io.IOException; 4 import java.lang.reflect.Array; 5 import java.util.*; 6 7 import javax.servlet.jsp.JspException; 8 import javax.servlet.jsp.tagext.Si

Struts2中UI标签之表单标签介绍

1.在Struts2中UI标签的表单标签分为两种:form标签本身和单个表单标签. 2.Struts2表单标签包括:form.textfield.password.radio.checkbox.checkboxlist.select.doubleselect.combobox.optiontransferselect.optgroup.updownselect.textarea.hidden.file.label.submit.token.head.datepicker.reset.richte

JSP2.0自定义标签

---| SimpleTag 接口 定义了标签处理类的生命周期方法.doTag() -----| SimpleTagSupport 类 全部实现了SimpleTag接口的方法,因此后面我们只需要继承并重写该类即可. 实现自己的if-.else标签 目标: 1 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2 3 <c:choose> 4 5 <c:when

SpringMVC&lt;from:form&gt;表单标签和&lt;input&gt;表单标签简介 转http://blog.csdn.net/hp_yangpeng/article/details/51906654

SpringMVC<from:form>表单标签和<input>表单标签简介 在使用SpringMVC的时候我们可以使用spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令: Jsp代码 <%@taglib uri="http://www.springframework.org/tags/fo