JSTL标签的简单使用
来源:互联网 发布:重庆时时彩报号软件 编辑:程序博客网 时间:2024/05/14 16:39
一、jstl标签简介
1、什么是jstl?
JSTL(JSP StandardTag Library),JSP标准标签库。JSTL是一种标签语言,但不是JSP内置的标签。分为:core、format、xml、sql四个定制的标签库,jstl通常结合EL语言一起使用,使用时候需要导入jstl的jar包。
2、jstl是用来干什么的?
jstl是程序员为了实现页面和代码分离,让前端设计与后端开发人员各自完成各自的任务,前端不需要懂后端Java传过来的参数。前端页面需要从后端获取数据使用jstl,后端返回数据给页面也需要jstl。使用jstl可以是页面美观,不需要在jsp中加入java代码,同时也提升了整个系统的速度。
二、使用jstl标签
1、jstl使用实例
(1)导入jar包
(2)引入核心库
在index.jsp头部引入核心标签库Core:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
接下来就可以使用<c:xxxxx>
标签了
(3)core常用标签
<c:out>
标签<c:out>
输出变量字符串或者域属性
<!-- :输出字符串a --><c:out value="a"/> <br><!-- 输出域属性a,其中与${a}相同 --><c:out value="${a}"/> <br><!-- 如果${a}不存在,那么输出b字符串 --><c:out value="${a}" default="b"/><br><!-- 如果${a}中包含特殊字符,那么转义它。这可以防止javascript攻击 --><c:out value="${a}" escapeXml="true"/><br>
其中${a}
是不存在的,所以输出结果为:
ab
<c:set>
标签<c:set>
标签类似于servlet的setAttribute
,可以通过${var}
获得并输出。可以这样的理解,set其实就是声明一个变量var,给个初始值value。也可以理解成SQL中的set关键字。
<!-- 在pageContext添加name为a, value为helloworld的数据--><c:set var="Jian" value="helloworld"/><c:out value="${Jian} }"/><br/><!-- 在session中添加name为money,value为1500*2的数据。 --><c:set var="money" scope="session" value="${1500*2}"/><c:out value="${money}"/><br/>
输出结果为:
helloworld3000
<c:forEach>
标签与<c:forTokens>
标签c:forEach>
标签是用来循环的,主要有两个方面:
一是指定开始与结束值,进行循环,类似于for(int i=0:i<arr.length)
二是 用来循环遍历集合(List、Map等),类似于Java中的forEach用来遍历集合、数组等。<c:forTokens>
标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
<!-- forEach循环变量 --> </c:forEach> <!-- 声明变量sum,初始值为0 --> <c:set var="sum" value="0" /> <!-- i=i+1:间隔为1 --> <c:forEach var="i" begin="1" end="10"> <c:set var="sum" value="${sum + i}" /> <c:out value="sum = ${sum}"/> </c:forEach><br/> <!-- 声明变量sum,初始值为0 --> <c:set var="sum" value="0" /> <!-- i=i+2:间隔为2 --> <c:forEach var="i" begin="1" end="10" step ="2"> <c:set var="sum" value="${sum + i}" /> <c:out value="sum = ${sum}"/> </c:forEach>
输出结果为:
sum = 1 sum = 3 sum = 6 sum = 10 sum = 15 sum = 21 sum = 28 sum = 36 sum = 45 sum = 55 sum = 1 sum = 4 sum = 9 sum = 16 sum = 25 sum = 25
forEach遍历数组:
<% String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"}; pageContext.setAttribute("name", names); %> <!-- forEach遍历数组 --> <c:forEach var="item" items="${name}"> <c:out value="name: ${item }"/><br/> </c:forEach>
输出结果为:
name:zhangSanname:liSiname:wangWuname:zhaoLiu
forEach遍历List:
<!-- forEach遍历List --> <% List<String> names = new ArrayList<String>(); names.add("zhangSan"); names.add("liSi"); names.add("wangWu"); names.add("zhaoLiu"); pageContext.setAttribute("name", names); %> <c:forEach var="item" items="${name}"> <c:out value="name: ${item }"/><br/> </c:forEach>
输出结果为:
name:zhangSanname:liSiname:wangWuname:zhaoLiu
forEach遍历Map
<% Map<String,String> student = new LinkedHashMap<String,String>(); stu.put("id", "001"); stu.put("name", "zhangSan"); stu.put("age", "22"); stu.put("sex", "boy"); pageContext.setAttribute("stu", student); %> <c:forEach var="item" items="${stu}"> <c:out value="${item.key }: ${item.value }"/><br/> </c:forEach>
输出结果为:
id: 001name: zhangSanage: 22sex: boy
此外,forEach还有个属性:varStatus,这个属性是存放循环过程中的状态。比如:我们可以利用varStatus变量判断循环中的变量是否为第一个,最后一个,遍历元素的个数等等。
- count:int类型,当前以遍历元素的个数;
- index:int类型,当前元素的下标;
- first:boolean类型,是否为第一个元素;
- last:boolean类型,是否为最后一个元素;
- current:Object类型,表示当前项目。
<c:forEach var="i" begin="1" end="10" varStatus="vs"> <c:set var="sum" value="${sum + i}" /> <c:if test="${vs.first }">第一行:</c:if> <c:if test="${vs.last }">最后一行:</c:if> <c:out value="第${vs.count }行: "/> <c:out value="[${vs.index }]: "/> <c:out value="name: ${vs.current }"/><br/> <c:out value="sum = ${sum}"/><br/> </c:forEach>
结果如下:
第一行: 第1行: [1]: name: 1 sum = 1第2行: [2]: name: 2 sum = 3第3行: [3]: name: 3 sum = 6第4行: [4]: name: 4 sum = 10第5行: [5]: name: 5 sum = 15第6行: [6]: name: 6 sum = 21第7行: [7]: name: 7 sum = 28第8行: [8]: name: 8 sum = 36第9行: [9]: name: 9 sum = 45最后一行: 第10行: [10]: name: 10 sum = 55
<!-- forTokens将以","号为间隔delims条件循环迭代 --><c:forTokens items="google,baidu,taobao" delims="," var="name"> <c:out value="${name}"/><p></c:forTokens>
输出结果为:
googlebaidutaobao
<c:if>标签
类似于Java中的if条件判断,格式为<c:if test="condition">...</c:if>
<c:set var="number" value="5"></c:set><c:if test="${number > 2}"> <c:out value="number大于2"></c:out><br/></c:if> <c:if test="${number < 2}"> <c:out value="number小于2"></c:out></c:if>
输出结果为:
number大于2
<c:choose>标签
类似于Java中的switch...case
,<c:when test>
就是case
,<c:otherwise>
就是defaut
,其实例如下:
<c:set var="score" value="81"/> <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>
输出结果为
B级
<c:remove>
标签
删除所在域(session、request、appliacation)与pageContext中name的数据
<% //在域session/request/application/pageContext中添加name为a的数据 pageContext.setAttribute("a","pageContext"); request.setAttribute("a","request"); session.setAttribute("a","session"); application.setAttribute("a","application");%> <!-- 未指定,则默认为变量第一次出现的作用域--> <%-- <c: remove var="a"/> --%> <!-- 删除pageContext中的数据 --> <c: remove var="a" scope="page" /> <c:out value="${a}" default="none"/>
<c:url>标签
<!-- 输出项目路径 :/项目名/--> <c:url value="/"/><br/> <!-- 将输出项目路径放入变量a中--> <c:url value="/" var="a" scope="request"/> <c:out value="${a}"/><br/> <!-- 输出:/项目名/xxx --> <c:url value="/xxx"/><br/> <c:url value="/xxx"> <c:param name="username" value="abc"/> <c:param name="password" value="123"/> </c:url>
结果为:
/jstl_demo//jstl_demo//jstl_demo/xxx/jstl_demo/xxx?username=abc&password=123
阅读全文
0 0
- JSTL标签的简单使用
- JSTL标签使用简单列举
- jstl标签的使用
- 标签的使用 JSTL
- [JSTL]标签的使用
- JSTL标签的使用
- JSTL标签的使用
- [JSTL]标签的使用
- jstl标签的使用
- jstl标签的使用
- JSTL标签的使用
- jstl标签的使用
- JSTL标签的使用
- jstl标签的使用
- JSTL的简单使用
- jstl fmt标签的使用
- [JSTL]<fmt>标签的使用
- JSTL自定义标签的使用
- 课程大总结
- 六个重构方法可帮你提升80%的代码质量
- 数据结构课程总结
- Insertion Sort
- 数据结构课程 -- 学期总结
- JSTL标签的简单使用
- EditText指定列数
- Swap Nodes in Pairs 解法
- android开发查看keyStore别名、MD5信息等方法
- 前端的浅谈
- 一种简单的设计方法,为产品设计增加近距离检测和环境光感应---凯利讯半导体
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- 人工智能如何更好的辅助医生?Petuum研究自动生成医疗图像报告
- select在ios中选项空白