JSTL

JSTL

JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web应用程序的常用功能而开发的标签库集合。

功能包括基本输入输出、流程控制、XML文件解析、数据库查询、国际化和文本格式化等。

JSTL主要由下面几个库组成:

核心标签库;
XML标签库;
格式化/国际化标签库;
数据库标签库;
函数标签库

标签文件(tag file)也是JSP 2.0新增的功能,它的目的是使JSP页面开发人员仅使用JSP语法就能开发标签库而无须编写Java程序。
所谓标签文件就是直接使用JSP语法编写的标签。
标签文件的扩展名一般为.tag或.tagx,如果标签文件包含其他完整的或片段的标签文件,JSP 2.0建议其扩展名为.tagf。

在JSP页面中使用标签文件,需要在taglib动作中使用tagdir属性指定标签文件所在的目录
例如:

<%@ taglib prefix=“mytag” tagdir="/WEB-INF/tags"%>

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

核心标签库

包括变量操作,流程控制以及在Jsp页面中访问基于URL资源的相关标签。
在这里插入图片描述
例:
<c:out>
用来计算一个表达式并将结果输出。
等价于
<%=表达式>

${表达式}

value:被计算的表达式
default:当计算为空时,输出指定字符串
在这里插入图片描述
<c:catch>
处理jsp页面产生的异常,并存储异常信息

<c:catch var="name1">
      容易产生异常的代码
</c:catch>

<c:set>
向指定范围内的变量赋值
也可以向一个指定的JavaBean或map的属性赋值

var:指定变量名称
scop:指定变量的作用范围,默认为page
value:待赋给变量的值
target:必须是一个javaBean或Map类型的变量
property:JavaBean的属性名或Map的key
在这里插入图片描述
<c:remove>
移除指定范围内的变量
在这里插入图片描述
<c:if>
用于实现java中的if单分支功能

例:

<c:set var="a" value="hello"/> 
<c:if test="${not empty a  }">
	<c:out value="${a }"/>
</c:if>

<c:choose> <c:when> <c:otherwise>
这三个标签用于实现Java中的switch分支功能

三个标签通常嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次

例:

<c:set var="score">85</c:set>
    <c:choose>
    	<c:when test="${score>=90}">你的成绩为优秀!</c:when>
    	<c:when test="${score>=70&&score<90}">您的成绩为良好!</c:when>
    	<c:when test="${score>60&&score<70}">您的成绩为及格</c:when>
    	<c:otherwise>对不起,您没有通过考试!</c:otherwise>
    </c:choose>

<c:forEach>
遍历固定次数的循环

begin:遍历开始的索引值
end:遍历结束的索引值
step:索引增长的步长,默认为1

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

遍历集合,数组,map,list

item:将被遍历的对象
count:int类型,当前已遍历元素的个数;
index:int类型,当前元素的下标;
first:boolean类型,是否为第一个元素;
last:boolean类型,是否为最后一个元素;
current:Object类型,表示当前项目。

<%
String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};
pageContext.setAttribute("ns", names);
%>
<c:forEach var="item " items="${ns } ">
	<c:out value="name: ${item } "/><br/>
</c:forEach>

<%
	List<String> names = new ArrayList<String>();
	names.add("zhangSan");
	names.add("liSi");
	names.add("wangWu");
	names.add("zhaoLiu");
	pageContext.setAttribute("ns", names);
%>
<c:forEach var="item" items="${ns }"> 
	<c:out value="name: ${item }"/><br/>
</c:forEach>

<%
	Map<String,String> stu = new LinkedHashMap<String,String>();
	stu.put("number", "N_1001");
	stu.put("name", "zhangSan");
	stu.put("age", "23");
	stu.put("sex", "male");
	pageContext.setAttribute("stu", stu);
%>
<c:forEach var="item " items="${stu }">
	<c:out value="${item.key }: ${item.value } "/><br/>
</c:forEach>

<c:forTakens>
将字符串按照指定的分隔符分隔后遍历

delims:分隔符

<c:forTokens items="Zara,nuha,roshy" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>

<c:url>
与<c:param>结合使用构造一个URL地址

value:指定要处理的URL地址
在这里插入图片描述
<c:import>
类似于jsp:include标签,不但可以导入本地web应用的资源,还可以导入其他web资源
<c:redirect>
将客户端请求转向其他资源,等价于jsp内置对象response的sendRedirect方法

国际化标签库

引入国际化标签库的taglib指令为:

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

< fmt:setLocale>
用于确定区域,设置本地语言环境

value:表示指定区域,比如zh_CN,en_US;

< fmt:setLocale value="    " />

< fmt:requestEncoding>
用于设定客户端亲求编码

value:用于指定编码,比如GBK;

 <fmt:requestEncoding value="   "/>

< fmt:setBundle>
设定资源文件,用于创建本地上下文环境

资源文件放在WEB-INF/classes下

Basename:表示资源文件名称,不需要properties后缀,var表示设定资源文件的属性名称

<fmt:setBundle basename="   "    var="    "/>

< fmt:message>
获得资源文件某个特定键对应的值

key:用于指定键;
var:保存value的值;
bundle:表示资源文件;

<fmt:setBundle basename=“message" var="pm"/>
   <fmt:message bundle="${pm}"/>

< fmt:formatNumber>
按地区语言或指定格式对指定数值进行格式化

value:表示需要被格式化的值;
var:保存格式化的值;
maxIntegerDigits:用于指定整数部分的位数;
maxFractionDigits:用于指定小数部分的位数;
groupingUsed:用于指定是否每3位一个","分割;true 或false

<fmt:formarNumber 
   value="  "  
   var="   "  
   maxIntegerDigits="  "  
   maxFractionDigits="  "  
   groupingUsed="  " 
/>

< fmt:parseNumber>
解析数字

<fmt:parseNumber value="    "    var="   "  />

< fmt:formatDate>
将日期对象按指定格式或本地地区语言进行格式化

type:表示格式化日期或时间或全部格式化,date、both、time;
pattern:表示格式化的格式;
var:保存结果;

<fmt:formatDate value = " " type="  "  pattern="  " var= " " />

< fmt:parseDate>
解析日期

<fmt:parseDate    
    value="    “
    pattern="      "    
    var="      
"/>

例:

		<fmt:setLocale value="zh_CN"/>  
        <fmt:requestEncoding value="GBK"/>  
        <fmt:formatDate value="${date}" type="both" pattern="yyyy-MM-dd hh:mm:ss,SSS" 	var="resultdate"/>  
        <h3>${resultdate}</h3>  
        <fmt:setBundle basename="xiazdong" var="msg"/>  
        <fmt:message key="name" var="nameref" bundle="${msg}"/>  
        <h3>${nameref}</h3>  
        <fmt:formatNumber value="1234567.1234567" maxIntegerDigits="5" maxFractionDigits="5"          	groupingUsed="true" var="num1"/>  
        <h3>${num1}</h3>  
        <fmt:parseNumber value="${num1}" var="num2"/>  
        <h3>${num2}</h3>  
        <fmt:parseDate value="2011-10-10" pattern="yyyy-MM-dd" var="date2"/>  
        <h3>${date2}</h3>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Ma.01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值