JSTL之C标签的用法

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

最近开始整理以前的onenote,居然有200多篇,大致翻了下,很多内容都是在大学的时候学习的时候记下来的,发现以前在note上的内容比较零散,而且最糟糕的是好多内容我居然一点印象也没有了... 2 3 最近利用下班的时间把以前的笔记整理到OSC上,顺便熟悉下以前学过的内容。一举两得。 4 5 这篇文章原先是实习公司的SUMMER框架的表单标记库,最近在做前台,发现脱离了STRUTS的标签后什么也不会写了。正好今天整理一篇常用的标签。主要是JSTL标签的一些用法。 6 7 记得当年学习servlet的时候先学的EL,那么这里我们就先把EL的一些语法回顾一下。 8 9 http://wnight88.blog.51cto.com/512204/163189 10 11 http://marshal.easymorse.com/archives/420 12 13 EL的基本语法就是输出一个bean,array,list或者map中的值,语法为 14 15 javabean或者map 16 17 $(user.username) $(user['username'])$(user["username"]) 18 list或者array 19 20 $(sport[1]) 21 $(sport['1']) 22 $(sport["1"]) 23 JSP中有一些常用的EL内置对象 24 pageContext 当前页面上下文件对象 25 pageScope page对象 26 requestScope request对象 27 sessionScope session对象 28 applicationScope application对象 29 param 得到页面传来的参数 30 paramValues 得到页面传来的多个参数,返回一个数组 31 header 获取头信息 32 headerValues 获取头信息的值 33 cookie 获取cookie对象的值 34 initParam 获取设定初始的参数值 35 用法为 36 $(sessionScope.phone) 37 说道EL这里有个概念要提下,JSP有4个作用域,如果EL中不指明作用域,那么EL会自动按照作用域由小到大的顺序查找,作用域的大小为: 38 PAGE<REQUEST<SESSION<APPLICATION<NULL 39 40 接下来我们看看今天的主要内容JSTL,JSTL是javaservlet page standard tag libray的简写,其中包括4种标签C标签,xml标签,I18N格式化标签和SQL标签 41 42 可以参考下这个博客: 43 44 http://yangtonggan.blog.hexun.com/17423100_d.html 45 46 http://kdboy.iteye.com/blog/564881 47 48 如果要是用标签,需要再页面的头部加上如下引入 49 50 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 51 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 52 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 53 对于C标签来说,几个常用的用法有 54 <c:out value="expression" default="expression" escapeXml="boolean"/> 55 该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下,<c:out> 将打印其值。 escapeXml 属性也是可选的。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 &lt;&gt;&amp;)。 56 <c:set var="name" scope="scope" value="expression"/> 57 <c:set> 操作提供基于标记的机制来创建和设置限制了作用域的变量。其中 var 属性指定了限制了作用域的变量的名称,scope 属性表明了该变量驻留在哪个作用域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。 scope 属性是可选的,其缺省值是 page。 58 <c:forEach var="name" items="expression" varStatus="name" begin="expression" end="expression" step="expression"> 59 body content 60 </c:forEach> 61 begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当使用 <c:forEach> 在整数范围内进行迭代时,这两个属性是必需的,而其它所有属性都是可选的。 当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。 如果指定了 var 属性,那么将会创建一个带有指定名称的并限定了作用域的变量,并将每次迭代的当前索引值赋给该变量。 items 属性的值应该是一个集合,对该集合的成员进行迭代,通常使用 EL 表达式指定值。 和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。 62 63 <c:if test="expression" var="name" scope="scope"> 64 body content 65 </c:if> 66 测试表达式(test属性值)进行求值,接下来,仅当对表达式求出的值为 true 时,它才处理标记的主体内容 <c:if> 通过其 var 和 scope 属性(它们所起的作用和在 <c:set> 中所起的作用一样)选择将测试结果赋给限定了作用域的变量。 67 <c:choose> 68 <c:when test="expression"> 69 body content 70 </c:when> 71 ... 72 <c:otherwise> 73 body content 74 </c:otherwise> 75 </c:choose> 76 每个要测试的条件都由相应的 <c:when> 标记来表示,至少要有一个 <c:when> 标记。只会处理第一个其 test 值为 true 的 <c:when> 标记体内的内容。如果没有一个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。 77 <c:url value="expression" context="expression" var="name" scope="scope"> 78 <c:param name="expression" value="expression"/> 79 ... 80 </c:url> 81 <c:url> 标记,用于生成 URL。 value 属性用来指定基本 URL,然后在必要时标记对其进行转换。如果这个基本 URL 以一个斜杠开始,那么会在它前面加上 servlet 的上下文名称。可以使用 context 属性提供显式的上下文名称。如果省略该属性,那么就使用当前 servlet 上下文的名称。这一点特别有用,因为 servlet 上下文名称是在部署期间而不是开发期间决定的。(如果这个基本 URL 不是以斜杠开始的,那么就认为它是一个相对 URL,这时就不必添加上下文名称。) 如果通过嵌套 <c:param> 标记指定了任何请求参数,那么将会使用 HTTP GET 请求的标准表示法将它们的名称和值添加到生成的 URL 后面。此外,还进行 URL 编码:为了生成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。 82 <c:redirect url="expression" context="expression"> 83 <c:param name="expression" value="expression"/> 84 ... 85 </c:redirect> 86 <c:redirect>用于向用户的浏览器发送 HTTP 重定向响应,它是 JSTL 中与 javax.servlet.http.HttpServletResponse 的 sendRedirect() 方法功能相当的标记。 87 88 89 总结一下,本文主要总结了一下JSTL的中常用的几个C标签的用法,其实struts标签已经很好用了,但是最近的项目用的是SRPINGmvC,所以还是有必要熟悉下其他标签的用法的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值