转自:https://my.oschina.net/zimingforever/blog/78980

 最近开始整理以前的onenote,居然有200多篇,大致翻了下,很多内容都是在大学的时候学习的时候记下来的,发现以前在note上的内容比较零散,而且最糟糕的是好多内容我居然一点印象也没有了...

 最近利用下班的时间把以前的笔记整理到OSC上,顺便熟悉下以前学过的内容。一举两得。

 这篇文章原先是实习公司的SUMMER框架的表单标记库,最近在做前台,发现脱离了STRUTS的标签后什么也不会写了。正好今天整理一篇常用的标签。主要是JSTL标签的一些用法。

 记得当年学习servlet的时候先学的EL,那么这里我们就先把EL的一些语法回顾一下。

 http://wnight88.blog.51cto.com/512204/163189

 http://marshal.easymorse.com/archives/420

 EL的基本语法就是输出一个bean,array,list或者map中的值,语法为

 javabean或者map

 $(user.username) $(user['username'])$(user["username"])
list或者array $(sport[1])
$(sport['1'])
$(sport["1"])
JSP中有一些常用的EL内置对象
pageContext 当前页面上下文件对象
pageScope page对象
requestScope request对象
sessionScope session对象
applicationScope application对象
param 得到页面传来的参数
paramValues 得到页面传来的多个参数,返回一个数组
header 获取头信息
headerValues 获取头信息的值
cookie 获取cookie对象的值
initParam 获取设定初始的参数值
用法为
$(sessionScope.phone)
说道EL这里有个概念要提下,JSP有4个作用域,如果EL中不指明作用域,那么EL会自动按照作用域由小到大的顺序查找,作用域的大小为:
PAGE<REQUEST<SESSION<APPLICATION<NULL 接下来我们看看今天的主要内容JSTL,JSTL是javaservlet page standard tag libray的简写,其中包括4种标签C标签,xml标签,I18N格式化标签和SQL标签 可以参考下这个博客: http://yangtonggan.blog.hexun.com/17423100_d.html http://kdboy.iteye.com/blog/564881 如果要是用标签,需要再页面的头部加上如下引入 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
对于C标签来说,几个常用的用法有
<c:out value="expression" default="expression" escapeXml="boolean"/>
该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下,<c:out> 将打印其值。 escapeXml 属性也是可选的。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 &lt;、&gt; 和 &amp;)。
<c:set var="name" scope="scope" value="expression"/>
<c:set> 操作提供基于标记的机制来创建和设置限制了作用域的变量。其中 var 属性指定了限制了作用域的变量的名称,scope 属性表明了该变量驻留在哪个作用域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。 scope 属性是可选的,其缺省值是 page。
<c:forEach var="name" items="expression" varStatus="name" begin="expression" end="expression" step="expression">
body content
</c:forEach>
begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当使用 <c:forEach> 在整数范围内进行迭代时,这两个属性是必需的,而其它所有属性都是可选的。 当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。 如果指定了 var 属性,那么将会创建一个带有指定名称的并限定了作用域的变量,并将每次迭代的当前索引值赋给该变量。 items 属性的值应该是一个集合,对该集合的成员进行迭代,通常使用 EL 表达式指定值。 和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。 <c:if test="expression" var="name" scope="scope">
body content
</c:if>
测试表达式(test属性值)进行求值,接下来,仅当对表达式求出的值为 true 时,它才处理标记的主体内容 <c:if> 通过其 var 和 scope 属性(它们所起的作用和在 <c:set> 中所起的作用一样)选择将测试结果赋给限定了作用域的变量。
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>
每个要测试的条件都由相应的 <c:when> 标记来表示,至少要有一个 <c:when> 标记。只会处理第一个其 test 值为 true 的 <c:when> 标记体内的内容。如果没有一个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。
<c:url value="expression" context="expression" var="name" scope="scope">
<c:param name="expression" value="expression"/>
...
</c:url>
<c:url> 标记,用于生成 URL。 value 属性用来指定基本 URL,然后在必要时标记对其进行转换。如果这个基本 URL 以一个斜杠开始,那么会在它前面加上 servlet 的上下文名称。可以使用 context 属性提供显式的上下文名称。如果省略该属性,那么就使用当前 servlet 上下文的名称。这一点特别有用,因为 servlet 上下文名称是在部署期间而不是开发期间决定的。(如果这个基本 URL 不是以斜杠开始的,那么就认为它是一个相对 URL,这时就不必添加上下文名称。) 如果通过嵌套 <c:param> 标记指定了任何请求参数,那么将会使用 HTTP GET 请求的标准表示法将它们的名称和值添加到生成的 URL 后面。此外,还进行 URL 编码:为了生成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。
<c:redirect url="expression" context="expression">
<c:param name="expression" value="expression"/>
...
</c:redirect>
<c:redirect>用于向用户的浏览器发送 HTTP 重定向响应,它是 JSTL 中与 javax.servlet.http.HttpServletResponse 的 sendRedirect() 方法功能相当的标记。 总结一下,本文主要总结了一下JSTL的中常用的几个C标签的用法,其实struts标签已经很好用了,但是最近的项目用的是SRPINGmvC,所以还是有必要熟悉下其他标签的用法的。

JSTL之C标签的用法的更多相关文章

  1. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法   动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...

  2. JSP中 JSTL和EL标签的使用

    使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL简介 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应 ...

  3. 第五节:表单标签的用法——value绑定和修饰符

    1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如:  v-model ...

  4. HTML ---滚动条样式代码及<marquee>标签的用法;

    html中滚动条属性设置 scrollbar属性.样式详解 1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条)    overflow-x水平方向内容溢出时的设置    overfl ...

  5. html部分---a标签的用法、放置图片与表格;

    a标签的用法: 1.加链接  herf <a href="http://www.baidu.com">百度一下</a> 2.加载本地文件 <a hre ...

  6. 详解JSTL的forEach标签

    详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍.      <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...

  7. JSTL之迭代标签库

    JSTL之迭代标签库 JSTL的全称是 Java Server Pages Standard Tag Library,翻译过来就是JSP标准标签库,它包含了在开发JSP页面时经常用到的一组标准标签.这 ...

  8. jstl的formatNumber标签的四舍五入问题

    jstl的formatNumber标签的四舍五入问题 近日使用JSTL的formatNumber 标签进行四舍五入时,发现它竟然使用的是"4舍6入5奇偶"的算法. 要实现" ...

  9. label 和 legend标签的用法

    label 和 legend标签的用法 label标准用法: 一般浏览器都支持 一般而言,label标签位于表单元素的前面或者后面,为控件提供说明文字 <label for="user ...

随机推荐

  1. 浅析Java虚拟机结构与机制

    转载自:http://blog.hesey.net/2011/04/introduction-to-java-virtual-machine.html http://coolshell.cn/arti ...

  2. Codeforces 1012C Hills【DP】*

    Codeforces 1012C Hills Welcome to Innopolis city. Throughout the whole year, Innopolis citizens suff ...

  3. 在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘

    以 UEFI 启动的 Windows 磁盘必须是 GPT 格式.本文将介绍如何在安装 Windows 期间将磁盘从 MBR 转换成 GPT. 特别注意:操作不慎可能丢失所有数据,如果你懂得安装系统的一 ...

  4. 异步任务中的重新进入(Reentrancy)

    一个按钮,点击执行一个任务.我们可能直接在它的 Click 事件中写下了执行任务的代码. 一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效:一旦进入了异步世界,这便是无尽 ...

  5. 当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

    这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了:也不会说 MVVM 的好处,因为这样的文章也是一搜一大把.我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的 ...

  6. WPF 和 UWP 中,不用设置 From 或 To,Storyboard 即拥有更灵活的动画控制

    无论是 WPF 还是 UWP 开发,如果用 Storyboard 和 Animation 做动画,我们多数时候都会设置 From 和 To 属性,用于从起始值动画到目标值.然而动画并不总是可以静态地指 ...

  7. Java8新特性——StreamAPI(二)

    1. 收集器简介 收集器用来将经过筛选.映射的流进行最后的整理,可以使得最后的结果以不同的形式展现. collect方法即为收集器,它接收Collector接口的实现作为具体收集器的收集方法. Col ...

  8. LOJ #3049. 「十二省联考 2019」字符串问题

    LOJ #3049. 「十二省联考 2019」字符串问题 https://loj.ac/problem/3049 题意:给你\(na\)个\(A\)类串,\(nb\)个\(B\)类串,\(m\)组支配 ...

  9. timequest 中set input delay set output delay 的使用

    set_input_delay/ set_output_delay TimeQuest出现以后,随之 set input delay 与 set output delay 也跟着出现,该约束命令用“外 ...

  10. PAT 1006 换个格式输出 C语言

    让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”. ...