重温JSP学习笔记--JSTL标签库
以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是对el表达式的扩展,是一种标签语言,使用起来比较方便,他不属于jsp内置的标签,使用之前需要导包,以及指定标签库,在Myeclipse中,内置了jstl的jar包,所以不需要导包这个操作.
JSTL有四个标签库,常用的只有一个core,其他的几乎不怎么用,使用前首先要导入标签库,代码如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
下面介绍常用标签,因为使用的多为core库的标签,所以一般称为c标签:
- <c:out> :输出
- value:可以是字符串也可以是el表达式 比如<c:out value="hello"/> 或者<c:out value="${name}"/>
- default:如果value为null,则输出default里边的值 比如<c:out value="${name}" default="zhangSan"/> 如果${name}不存在,则输出张三.
- escapeXML:表示转义,默认为true
示例:
<c:out value="aaa"/> 输出字符串aaa
<c:out value="${aaa"/> 输出域属性aaa,其中与${aaa}相同
<c:out value="${aaa}" default="xxx"/> 如果${aaa}不存在,那么输出xxx字符串
<c:out value="${aaa}" escapeXml="true"/>如果${aaa}中包含特殊字符,那么转义它。这可以防止javascript攻击
- <c:set> :设置(创建域的属性)
- var:变量名
- value:变量值
- scope:指定一个域 默认为page 可选择 requset,session,application
例如:
<c:set var="name" value="zhangSan" scope="request"/> <% request.setAttribute("name"); %>
上下这两行代码作用是相同的,都是在request域中创建一个name属性,值为"zhangSan".
- <c:remove>:删除域变量
- var:变量名
- scope:指定域,如果不指定,默认删除所有域
<c:remove var="a"/> 删除名为a的域属性
<c:remove var="a" scope="page"/> 删除page域中名为a的域属性
- <c:url> :输出一个url或保存url到某个域
- value: 指定一个路径,他会在路径前自动添加项目名
- var:指定一个变量名,一旦添加了这个属性,则不会输出,而是把输出内容保存到指定的变量名中
- scope:与var一起使用,指定保存域
<c:url value="/AServlet"/> 输出URL:/项目名/AServlet
<c:url value="/AServlet" var="url" scope="page"/> 把生成的url保存到page域中,而不会输出
<c:url value="/AServlet"> :输出URL:/项目名/AServlet?username=%xx%xx%xx%xx%xx%xx,其中张三会被URL编码
<c:param name="username" value="张三"/>
</c:url/>
- <c:if>:对应Java中的if语句
- <c:if test="${条件}">...</c:if> : 当test为true时,执行标签体的内容
- <c:choose>:对应java语句中的if/else
示例:
<c:set var="score" value="${param.score }"/>
<c:choose>
<c:when test="${score > 100 || score < 0}">错误的分数:${score }</c:when>
<c:when test="${score >= 90 }">A级</c:when>
<c:when test="${score >= 80 }">B级</c:when>
<c:when test="${score >= 70 }">C级</c:when>
<c:when test="${score >= 60 }">D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>
- <c:forEach>:用来循环遍历数组,集合或者以计数方式循环!对应java的for循环
- 按计数方式方式循环:
<c:forEach begin="1" end="10" var="i">
${i}
</c:forEach>
等同于
for(int i = 1; i <= 10; i++) {
out.println(i);
} - 遍历数组或集合:
<%
String[] str={"哎呦","不错","这个吊"};
request.setAttribute("array", str);
%>
<c:forEach items="${array }" var="i">
-->${i }<br>
</c:forEach>输出结果为:
-->哎呦
-->不错
-->这个吊
需要特别说明的是,forEach标签还有一个属性:varStatus,这个属性用来指定接收“循环状态”的变量名,例如:<forEach varStatus=”vs” …/>,这时就可以使用vs这个变量来获取循环的状态了,他有几个属性如下:
- count:int类型,当前以遍历元素的个数;
- index:int类型,当前元素的下标;
- first:boolean类型,是否为第一个元素;
- last:boolean类型,是否为最后一个元素;
在上面的例子中,我们遍历了数组的所有元素,假如我们只想取出数组的第一个元素"哎呦",应该怎么办呢?
<c:forEach items="${array }" var="i" varStatus="index">
<c:if test="${index.first }">
--->${i }
</c:if>
</c:forEach>
这样输出结果就变成了:
--->哎哟
重温JSP学习笔记--JSTL标签库的更多相关文章
- 重温JSP学习笔记--El函数库
EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/f ...
- [jsp学习笔记]jstl标签的使用
jstl常用在html嵌套 <body> <% session.setAttribute("q", "yushi"); request.set ...
- 重温JSP学习笔记--三大指令九大内置对象
最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: ...
- 学习笔记_Java_day13_JSTL标签库(1、2、3、4、5、6、7、8)
1.一种标签语言 day13 l JSTL标签库(重点) l 自定义标签(理解) l MVC设计模式(重点中的重点) l Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- 重温JSP学习笔记--与日期数字格式化有关的jstl标签库
上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...
- 重温JSP学习笔记--JSP动作标签
上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...
- 重温JSP学习笔记--El表达式
el表达式是jsp内置的表达式语言,jsp从jsp2.0开始,就不再提倡使用java脚本,而是用el表达式和动态标签来替代,而el表达式主要替代的是jsp中的<%=....%>,也就是说e ...
- 重温JSP学习笔记
<% double d1 = 3.5; double d2 = 4.4; pageContext.setAttribute("d1", d1); pageContext.se ...
随机推荐
- Flume_常见的几个问题
在HDFS的文件默认生成文件大小1K,如何设置文件大小和数量 拷贝一份flume-conf.properties.template改名为hive-mem-size.properties hive-me ...
- 最短路(代码来源于kuangbin和百度)
最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...
- OUTLOOK 发生错误0x8004010D
问题: outlook 2003 在接收邮件时报错: “正在接收”报告了错误(0x8004010D):“在包含您的数据文件的驱动器上,磁盘空间不足.请清空“已删除邮件”文件夹或删除某些文件以释放 ...
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
有的Web项目选用Excel作为报表方案,在服务器端生成Excel文件,然后传送到客户端,由客户端进行打印.在国内的环境下,相对PDF方式,Excel的安装率应该比pdf阅读器的安装率要高,同时,微软 ...
- final 140字评论
按照演讲顺序 1.约跑app 个人感觉约跑现在做的已经很不错了,要是能添加地图就更好了. 2.礼物挑选 给人感觉在一定的时间做到这个程度,很不错很好,讲的声音有点小. ...
- 初探XSS
1. 基础准备知识 (1) php: <?php ?>部分由服务器解析后并连带html代码一并返回给浏览器,类似jsp的操作,一般开发中都使用smarty模板将前端后端分开.所以在XSS跨 ...
- centos执行yum出现Could not retrieve mirrorlist错误
具体错误见截图 刚开始以为是DNS配置错误,经检查发现DNS与物理机的DNS配置是一样的,物理机可以解析DNS 搜索资料发现是/etc/nsswitch.conf这个文件的问题 这个文件hosts标签 ...
- Struts2
为什么要用Struts2? 这里列举一些Servlet的缺点: 1.每写一个servlet在web.xml中都要做相应的配置.如果有多很servlet,会导致web.xml内容过于繁多. 2.这样的结 ...
- (一)Linux相关内容的简介
1.Linux内核官网:www.kernel.org 2.Linux主要发行版本: (1)redhat 服务器中常见(部分功能收费); (2)Ubuntu 图形界面较好,但是服务器中很少用: (3 ...
- Web方式预览Office/Word/Excel/pdf文件解决方案
最近在做项目时需要在Web端预览一些Office文件,经过在万能的互联网上一番搜索确定并解决了. 虽然其中碰到的一些问题已经通过搜索和自己研究解决了,但是觉得有必要将整个过程记录下来,以方便自己以后查 ...