JSTL

Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签类库的集合,用 于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库 操作等。

我们现在只讨论 JSTL 中最重要的标签,条件动作、迭代集合以及格式化数字和日期几个标签。

核心标签库:http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作,比如:循环、表达式 值、基本输入输出等。

格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,比如:对不同区域 的日期格式化等。
为了在 JSP 页面使用 JSTL 类库,必须以下列格式使用 taglib 指令:

​ <%@taglib uri=”” prefix=””%>
  例如:<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相似;所以,建议使用事 先设计好的前缀。此时需要导入两个 jar 包:

[外链图片转存失败(img-zEhQlLln-1568210417564)(C:\Users\22507\OneDrive\计算机\Java\MdJava笔记\images\jstl.png)]

jstl核心标签

导入:<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

if标签

if 标签先对某个条件进行测试,如果该条件运算结果为 true,则处理它的主体内容,测试结果保存 在一个 Boolean 对象中,并创建一个限域变量来引用 Boolean 对象。可以利用 var 属性设置限域变量 名,利用 scope 属性来指定其作用范围。

if 的语法有两种形式:没有主体内容、有主体内容

<%
		//定义一个变量
		int a = 66;
		//存入request作用域
		request.setAttribute("a",a);
	%>
	<!--if标签  -->
	<c:if test="${a>50}" var= "flag" scope="session" >
	<!--test="",一个表达式,结果为Boolean值,如果是true则执行标签中的代码,var定义一个键名,
	存储test的Boolean值,scope表示的是flag存储的作用域是哪个  -->
		<h2>a比较大</h2>
	</c:if>
	<c:if test="${empty a} }">
		<!--empty判断a是否存在  -->
		<h2>a是存在的</h2>
	</c:if>
	<!--结果:页面只显示a比较大  -->

choose、when 和 otherwise 标签

choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似。

<!--choose,when和otherwise标签 ,
	起作用类似于java中的switch表达式 -->
	<!--注意
	1,choose标签中只能有when和otherwise标签,when和otherwise标签中可有其他标签
	2,choose标签中至少有一个when标签
	3,choose标签和otherwise标签中没有属性,when标签必须有test属性
	4,otherwise标签必须放在最后一个when标签之后
	5,当所有的when标签的条件都不成立时,才执行otherwise标签中的语句
	6,when标签不存在穿透 -->
	<%
		request.setAttribute("a", 4);
	%>
	<c:choose>
		<c:when test="${a>=3&&a<=5} ">
			<h2>现在是春天</h2>
		</c:when>
		<c:when test="${a>=6&&a<=8} ">
			<h2>现在是夏天</h2>
		</c:when>
		<c:when test="${a>=9&&a<=11} ">
			<h2>现在是秋天</h2>
		</c:when>
		<c:when test="${a==4 }">
			<h2>现在是初春</h2>
		</c:when>
		<c:otherwise>
			<h2>现在是冬天</h2>
		</c:otherwise>
	</c:choose>
	<!--结果显示为初春  -->

forEach 标签

forEach 是将一个主体内容迭代多次,或者迭代一个对象集合。可以迭代的对象包括所有的 java.util.Collection 和 java.util.Map 接口的实现,以及对象或者基本类型的数组。

<!--forEach标签;
	两种作用,1,将主体内容循环多次
			2,迭代集合  -->
	<!--将主体内容循环多次  -->
	<c:forEach var="i" begin="1" end="7">
	<!--var:用来存放现在被指到的对象,begin开始的位置,end结束的位置  -->
		主体内容:${i }
	</c:forEach>
	<!--结果为:主体内容:1 主体内容:2 主体内容:3 主体内容:4 主体内容:5 主体内容:6 主体内容:7 主体内容  -->
	
	<!-- 迭代集合 -->
	<!-- list -->
	<%
		List<String> list = new ArrayList<String>();
		list.add("xiaoyan");
		list.add("lingdong");
		list.add("yefan");
		request.setAttribute("list", list);
	%>>
	<c:forEach items="${list}" var="str" varStatus="status" >
		${str }:${status.index }:${status.count }:${status.first }:${status.last }
		<!--index表示索引,count表示出现的位数,first表示是否是第一个,last表示是否是最后一个  -->
		
	</c:forEach>
	<!--map  -->
	<%
		Map<String,Object> map = new HashMap<String,Object>(); 
		map.put("user1",new User("zs","123"));
		map.put("user2", new User("ls","1234"));
		request.setAttribute("map",map);
	%>
	<c:forEach items="${map}" var="user">
	 	${user.key }:${user.value }
	 	${user.value.uname }
	 	${user.value.upwd }
	</c:forEach>

jstl格式化标签

导入:<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>

JSTL 提供了格式化和解析数字和日期的标签,我们讨论的有:formatNumber、formatDate、 parseNumber 及 parseDate。

formatNumber 标签

<!-- number格式化 -->
	<!--type:按照什么类型进行格式化数据
			number:数字
			currency:货币
			percent:百分比 
		value:指定要格式化的数值,可以写字面值,还可以从域对象中获取
		var:指定格式化红的结果存储到域对象中的键名
		scope:指定存储的域范围,page,request,session,application
		
		-->
		<!-- 没有主体内容,通过value指定要格式化的数值 -->
		<%
			request.setAttribute("num1",1000);
			request.setAttribute("num2", 88888.6666);
		%>
		<fmt:formatNumber value="0.49" type="percent" ></fmt:formatNumber>
		<fmt:formatNumber value="${num1 }" type="currency"></fmt:formatNumber>
		<fmt:formatNumber value="${num1}" type="currency" currencySymbol="$"></fmt:formatNumber>
		<fmt:formatNumber value="${num2 }" maxIntegerDigits="3" minFractionDigits="7"></fmt:formatNumber>
		
		<!-- 有主体内容,把要格式化的数据放到两个标签内部 -->
		<fmt:formatNumber type="percent">
			12
		</fmt:formatNumber>
		<fmt:formatNumber type="percent" var = "num" scope="request">
			12
		</fmt:formatNumber>
		<!--12存入request后,内容不会显示,,需再次写${num} 才会显示-->
		${num }

formatDate 标签

pattern 属性指定更精确的处理日期:
[外链图片转存失败(img-gehbEqKT-1568210417566)(C:\Users\22507\OneDrive\计算机\Java\MdJava笔记\images\pattern.png)]

dy>
	<%
		request.setAttribute("date", new Date());
	%>
	<!-- 
		value:指定要格式化的时间
		type:
			time:时::秒
			date:年--日
			both:--日 时::***pattern***:自定义格式化时间
	 -->
	 <fmt:formatDate value="${date }" type="both" /><br/>
	 <!-- 2019-9-11 21:34:02 -->
	 <fmt:formatDate value="${date }" type="time" /><br> 
	 <!-- 21:34:02 -->
	 <fmt:formatDate value="${date }" type="date" /><br>
	 <!--2019-9-11  -->
	  <!--自定义  --> 
	 <fmt:formatDate value="${date}" pattern="yyyy年M月d日--H时:m分:s秒" ></fmt:formatDate>
	 <!-- 2019911--21:34:2-->

parseNumber 标签

<!--利用 parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环境的数字。   -->
	<fmt:parseNumber value="20%" type="percent"></fmt:parseNumber> 
	<!--结果:0.2  -->
	<fmt:parseNumber value="¥1000" type="currency"></fmt:parseNumber> 
	<!--结果:1000 -->
	<!--value要转化的内容,type按什么类型转换  -->
	
	<fmt:parseNumber type="percent">
		36%
	</fmt:parseNumber>

parseDate 标签

此标签为指定区域解析日期和时间的字符串表示法。即解析一个代表着日期或时间的字符串。

<%
		request.setAttribute("date", "13:34:56");
		request.setAttribute("date2", "2019年09月06号23时56分59秒");
	%>
	<fmt:parseDate value="${date }" type="time"></fmt:parseDate>
	<!-- Thu Jan 01 13:34:56 CST 1970 ,每规定年份就从头开始-->
	<fmt:parseDate value="${date2 }" pattern="yyyy年M月d号HH时mm分ss秒"></fmt:parseDate>
	<!-- Fri Sep 06 23:56:59 CST 2019,自定义解析格式 -->
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值