JSTL标签

JSTL介绍:JavaServerPage Standard Tag Library

    JSP标准标签库 由Apache实现

作用:使用JSTL标签 实现jsp页面中逻辑处理,如判断、循环等

JSTL在赋值时,会大量使用到EL表达式,可以简单理解成 EL是JSTL的一部分

使用JSTL步骤:
        1.导入jar包    standard-1.1.2.jar、jstl-1.2.jar
        2.在jsp页面中添加 taglib指令

            <%@ taglib uri="" prefix="" %>

            uri一般写http://java.sun.com/jstl/core,jstl核心包,prefix一般写c。

        3.使用JSTL标签

JSTL常用标签:
        1.表达式控制标签 set out remove catch
        2.流程控制标签 if choose when otherwise

<c:set var=”a” value=”hello”/></c:set><!--在pageContext(默认)中添加name为a,value为hello的数据。-->

<c:set var=”a” value=”hello” scope=”session”/></c:set><!--在session中添加name为a,value为hello的数据。-->

<c:out value=”${aaa}” default=”xxx”/></c:out><!--输出${aaa},若不存在,输出xxx字符串-->

<%

pageContext.setAttribute("a","pageContext");

request.setAttribute("a","session");

session.setAttribute("a","session");

application.setAttribute("a","application");

%>

<c: remove var="a"/><!--删除所有域中name为a的数据!-->

<c:remove var="a" scope=”page”/><!--删除pageContext中name为a的数据-->

<c:catch var="catchException"><!-- var 变量名 随便写 捕获异常-->
    <%  int x = 5/0; %>
</c:catch>
<c:if test="${catchException !=null }"><!--test属性 测试 返回 结果 ture/false 如果是true 就执行 if标签内的内容-->
    异常为:${catchException}<br>
    发生了异常:${catchException.message}
</c:if>
<c:choose><!--相当于switch-->
    <c:when test="${a==1}">aaaaaa</c:when><!-- 相当于case-->
    <c:when test="${a==2}">bbbbbb</c:when>
    <c:otherwise>cccc</c:otherwise><!--   相当于default-->
</c:choose>

        3.循环标签 forEach forTokens

    var : 声明变量
    begin : 开始(包含)
    end : 结束(包含)
    step : 步长(可不写)
    itemes : 要遍历的数据(Collection Map Object数组 基本数据类型数组)
    varStatus : 包含了一些forEach的属性
        index: 索引 从0开始
        count: 行号 从1开始
        frist: 判断当前项是否是集合中的第一项 返回true/false
        last: 判断当前项是否是集合中的最后一项 返回true/false

<c:forEach var="i" begin="2" end="10" step="2">
 	<c:out value="${i}"></c:out>
</c:forEach>

上面的例子和下面的相同

for(int i=2;i<=10;i+=2){
	System.out.println(i);
}
<%
 	String[] arr = {"a","b","c","d"};
 	request.setAttribute("arr", arr);
 	for(String s : arr){
 		out.print(s);
 	}
 %>
 <c:forEach var="a" items="${arr}" >
 	${a}
 </c:forEach>
 <%
 	List<String> list = new ArrayList<>();
 	list.add("a");
 	list.add("d");
 	list.add("q");
 	pageContext.setAttribute("lists", list);
 %>
 <c:forEach var="s" items="${lists}">
 	${s}<br>
 </c:forEach>
 <hr>
 <%
 	Map map = new HashMap();
 	map.put("a","1");
 	map.put("b","2");
 	map.put("c","3");
 	request.setAttribute("maps", map);
 %>
 <c:forEach var="mymap" items="${maps}">
 	<!-- .key 就是获取键 .value 就是获取值 -->
 	<c:out value="${mymap.key }"></c:out>
 	<c:out value="${mymap.value }"></c:out>
 	<br>
 </c:forEach>
 <hr>
 <%
 	List<String> list2 = new ArrayList();
	list2.add("张三");
	list2.add("李四");
	list2.add("王五");
	pageContext.setAttribute("list2", list2);
 %>
 <table border="1" align="center" width="400">
 	<tr>
 		<td>索引</td>
 		<td>姓名</td>
 		<td>统计</td>
 		<td>第一个</td>
 		<td>最后一个</td>
 	</tr>
 	<c:forEach var="vv" items="${list2}" varStatus="vs">
 		<tr>
	 		<td>${vs.index}</td>
	 		<td>${vv}</td>
	 		<td>${vs.count}</td>
	 		<td>${vs.first}</td>
	 		<td>${vs.last}</td>
 		</tr>
 	</c:forEach>
 </table>

上面例子的输出结果如图

forToken中多一个delims属性,意为字符串分隔符。该标签主要用来切割字符串,值代表被切掉的字符。

<%
 	List<String> list = new ArrayList();
 	list.add("abc");
 	list.add("b");
 	list.add("def");
 	list.add("b");
 	list.add("qq");
 	pageContext.setAttribute("lists", list);
 %>
 <c:forTokens items="${lists}" delims="b" var="ft">
 	<c:out value="${ft}"></c:out>
 </c:forTokens>
 <hr>
 <!-- 使用切割符号 来切割字符串 -->
 <c:forTokens items="A,C,E,U,I,Q" delims="," var="i">
 	${i}
 </c:forTokens>
  <hr>
 <!-- 使用多个切割符号 来切割字符串 -->
 <c:forTokens items="A,C|E,U,I|Q" delims="|," var="ii" begin="2" end="6" varStatus="iii">
 	${ii}
 	<c:out value="${iii.count}"></c:out>
 </c:forTokens>


从上例可以看出,被切去的就没有了,varStatus.count计数是以新的字符串来计算的。

        4.URL操作标签 import url redirect param

<!-- import 导入地址栏,可以获取到该地址的源代码-->
<c:import url="http://www.baidu.com" var="data"></c:import>
<c:out value="${data}"></c:out>
<!-- url 生成带有参数的url 作用 用于构造url 主要的用途是url的重写,可以转到新页面,地址栏会附带param值-->
<c:url var="myURL" value="a.jsp">
	<c:param name="name" value="lalalal"></c:param>
	<c:param name="age" value="23"></c:param>
</c:url>
<a href="<c:out value='${myURL}'/>">发送两个参数到a.jsp</a>
<!-- redirect重定向到新页面 -->
<c:redirect url="http://www.baidu.com"></c:redirect> 

JSTL的另一类标签fmt,首行导入<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ,可以格式化时间和数字。格式化时间还需要导入<%@page import="java.util.Date"%>。

<%  
    Date date = new Date();  
    pageContext.setAttribute("d", date);  
%>  
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/> 
<%  
    double d1 = 3.5;  
    double d2 = 4.4;   
    pageContext.setAttribute("d1", d1);  
    pageContext.setAttribute("d2", d2);  
%>  
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>  
<fmt:formatNumber value="${d2 }" pattern="#.##"/> 

结果为 2018-03-28 20:39:11  当前时间

3.50    4.4




      
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值