JSTL标签库总结

JSTL提供了核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库5种标签库;

核心标签库:

指令:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

核心标签库主要用于完成jsp页面的常用功能,其中包括JSTL的表达式标签、条件标签、循环标签、和URL操作共4种标签

格式标签库:

指令:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

格式标签库提供了一个简单的国际化(I18N)标记,用于处理国际化相关问题,另外,格式标签库种还包含用于格式化数字和日期显示格式的标签;

SQL标签库

指令:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

SQL标签库封装了数据库访问的通过逻辑,简化了对数据库的访问,如果结合核心标签库,可以方便的获取结果集,并迭代输出结果集中的数据;

XML标签库

指令:<%@ taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml"%>

XML标签库可以处理和生成XML标记,使用这些标记可以很方便的开发基于XML的web应用;

函数标签库

指令:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

函数标签库提供了一系列字符串操作函数,用于完成分解字符串、连接字符串、返回子串、确定字符串是否包含特定的字串等功能

要使用这些标签库必须在jsp首行使用<%@ taglib%>指令定义标签库的位置和访问前缀,并且要导入jstl.jar;

表达式标签

表达式标签主要包括<c:out>,<c:set>,<c:remove>,<c:catch>4个标签

<c:out>输出标签:

<c:out>标签用于将表达式的值输出到jsp页面中,该标签可以替代<%=表达式%>,类似于jsp内置对象out,<c:out>标签有如下两种写法,

没有标签体

<c:out value="expression" [escapeXml="true|false"] [defaultValue]/>

有标签体

<c:out value="expression" [escapeXml="true|false"]>

defaultValue

</c:out>

<c:out>标签属性说明:

属性类型描述使用EL
valueObject用于指定将要输出的变量或表达式可以
escapeXmlboolean用于指定是否转化特殊字符,默认为true,表示转换,如"<"转换成"&lt;"不可以
defaultObject用于指定当value属性值等于null时,将要显示的默认值不可以
例如:

<c:out value="我要离职<hr>" escapeXml="true" default="无"/>
<%--escapeXml属性为false时--%>
<c:out value="我要离职<hr>" escapeXml="false" default="无"/>
<c:set>设置标签

<c:set>标签用于在指定范围(page,request,session,application)内定义保存某个值的变量,或为指定的对象设置属性值,使用该标签可以在页面中定义变量,而不用在jsp中嵌入java代码

<c:set>有以下4中语法:

1:在scope指定的范围内将变量值存储到变量中:

<c:set value="value" var="name" scope="page|request|session|application"/>

2:在scope指定的范围内将标签主体存储到变量中:

<c:set var="name" scope="page|request|session|application">
    标签主体
</c:set>

3:将变量值存储在target属性指定的目标对象的propName属性中:

<c:set value="value" var="name" target="Object" property="propertyName"/>

4:将标签主体存储到target属性指定的目标对象的propName属性中

<c:set target="Object" property="propName">
    标签主体
</c:set>

下面是上面语法设计的属性说明:

属性类型描述引用EL
valueObject用于指定变量值可以
varString用于指定变量名不可以
targetObject用于指定存储变量值或者标签主体的目标对象,可以是javaBean或Map集合对象可以
propertyString用于指定目标对象存储数据的属性名可以
scopeString用于指定变量的作用域,默认值是page不可以
注意,target属性不能直接指定javaBean或Map,而应该是使用EL表达式或一个脚本表达式指定的真正对象的实例;

<c:remove>移除标签

<x:rewmove>标签可以从指定的jsp范围内移除指定的变量,语法格式如下:

<c:remove var="name" scope="page|request|session|application"></c:remove>

var: 用于指定要移除的变量名称;

scope:用于指定变量的存在范围,可选值有page,request,session,application,默认值为page,如果在该标签中没有指定变量的有效范围,那么将分别在page,request,session和application的范围内

查找要移除的变量并移除,例如,在一个页面中,存在不同范围的两个同名变量,当不指定范围时移除该变量,这两个范围内的变量都将被移除,因此,在移除变量时,最好指定变量的有效范围;

<c:catch>捕获异常标签

<c:catch>标签用于捕获程序中出现的异常,如果需要它还可以将异常信息保存在指定的变量中,该标签与java语言中的try{}catch(exception){}语句类似,<c:catch>标签语法如下:

<c:catch var="exception">
    //可能存在异常的代码
</c:catch>

var为可选属性,用于指定存储异常信息的变量,如果不需要保存异常信息,可以省略该属性;

<c:catch var="exception">
    <%
    int number = Integer.parseInt(request.getParameter("number"));
        out.println("金额为:" + 500*number);
    %>
</c:catch>
<c:out value="${exception}"></c:out>
流程控制标签

<c:if>条件控制标签

<c:if>虽然没有对应的else标签,但是利用JSTL提供的<c:choose>,<c:when>和<c:otherwise>标签也可以实现if else功能

<c:if>有两种语法格式:

1:可判断条件表达式,并将条件的判断结果保存在var属性指定的变量中,而这个变量存在于scope属性所指定的范围内:

<c:if test="condition" var="name" scope="page|request|session|application"></c:if>

2:不但可以将test属性的判断结果保存在指定范围的变量中,还可以根据条件的判断结果执行标签主体,标签主体可以是jsp页面能够使用的任何元素,如html标记,java代码或者嵌入的其它jsp标签:

<c:if test="condition" var="name" scope="page|request|session|application">
    标签主体
</c:if>

以上语法设计的属性说明表:

属性类型描述引用EL
testboolean必选属性,用于指定条件表达式可以
varString可选属性,用于指定变量名,这个属性会指定test属性的判断结果将存在哪个变量中,如果该变量不存在就创建它不可以
scopeString存储范围,该属性用于指定var属性所指定的变量的存在范围不可以
<c:choose>,<c:when>和<c:otherwise>标签

<c:choose>标签可以根据不同的条件完成指定的业务逻辑,如果没有符合的条件,则会执行默认条件的业务逻辑,需要注意的是<c:choose>标签只能作为<c:when>和<c:otherwise>标签的父标签,可以在其中

嵌套这两个标签完成条件的选择逻辑,这三个标签的语法如下:

<c:choose>
    <c:when test="condition">
        
    </c:when>
    <c:when test="condition">
        
    </c:when>
    <%--此标签可以有多个--%>
    <c:otherwise>
        <%--此标签只能有一个,并且必须在<c:when>后面--%>
    </c:otherwise>
    
</c:choose>
<c:forEach>循环标签

<c:forEach>标签可以根据循环条件遍历数组和集合类中所有或部分数据,例如在hibernate访问数据库,返回的基本都是数组、List、Map对象,这时候使用<c:forEach>标签循环显示这些数据可以解决jsp页面混乱的问题,

还提高了代码的可维护性

<c:forEach>有以下两种语法格式:

1:数字索引迭代

<c:forEach begin="start" end="end" var="name" varStatus="statusName" step="step">
    标签主体
</c:forEach>

在这个语法中,begin和end属性是必选属性,其它属性均为可选属性

2:集合成员迭代

<c:forEach items="data" var="name" begin="start" end="end" step="step" varStatus="statusName">
    标签主体
</c:forEach>
在该语法中,items属性是必选属性,通常使用EL表达式指定,其它属性均为可选属性;

<c:forEach>标签各属性说明:

属性类型描述引用EL
items数组、集合类、字符串和枚举类型被循环遍历的对象,多用于数组和集合类可以
varString循环体的变量,用于存储items指定的对象的成员(只在循环体类有效)不可以
beginint循环的起始位置,如果没有指定,则从集合的第一个值开始迭代可以
endint循环的终止位置,如果没有指定,则一直迭代到集合的最后一位可以
stepint循环的步长(每次循环自增的数字,缺省值为1,类似于i++)可以
varStatusString循环的状态信息,可以取index,count,first,last等值不可以

<c:forTokens>迭代标签

<c:forToken>标签可以用指定的分隔符将一个字符串分隔开,根据分割的数量确定循环的次数,其语法如下:

<c:forTokens items="String" delims="char" var="name" begin="start" end="end" step="len" varStatus="statusName">
    标签主体
</c:forTokens>
其标签属性说明如下:

属性类型描述引用EL
itemsString被循环遍历的对象,多用于数组与集合类可以
delimsString字符串的分割字符,可以同时有多个分割字符不可以
varString变量名称不可以
beginint循环的起始位置可以
endint循环的结束位置可以
stepint循环的步长可以
varStatusString循环的状态变量不可以

URL操作标签

URL操作标签是指与文件导入,重定向,URL地址生成以及参数传递相关的标签,JSTL中提供的与URL相关的标签有<c:import>,<c:url>,<c:redirect>和<c:param>4个;

<c:import>文件导入标签

<c:import>标签可以导入站内或其他网站的静态和动态文件的web页面中,例如,使用<c:import>标签导入其他网页的天气信息到自己的网页中,而<jsp:include>只能导入站内资源,相比之下,

<c:import>的灵活性更高;

<c:import>标签语法包含两种:

<c:import url="url" context="context" var="name" scope="page|request|session|application" charEncoding="GBK">
    标签主体
</c:import>
<c:import url="url" varreader="name" context="context" charEncoding="GBK"></c:import>
下面是上面语法涉及的属性说明:

属性类型描述引用EL
urlString被导入的文件资源的URL路径可以
contextString上下文路径,用于访问同一个服务器的其他web工程,其值必须以/开头,如果指定了该属性,那么url属性值也必须以/开头可以
varString变量名称,将获取的资源存储在变量中不可以
scopeString变量的存在范围不可以
varReaderString以Reader类型存储被包含文件内容不可以
charEncodingString被导入文件的编码方式可以

<c:redirect>重定向标签

<c:redirect>标签可以将客户端发出的request请求重定向到其他URL服务端,由其他程序处理可以的请求,而在此期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径,

该标签有如下两种语法格式:

1:没有标签主体,并且不添加传递到目标路径的参数信息

<c:redirect url="http://www.baidu.com" context="/context"/>

2:将客户请求重定向到目标路径,并且在标签主体中使用<c:param>标签传递其他参数信息

<c:redirect url="http://www.baidu.com">
    <c:param name="action" value="query"/>
    <%--可以有多个<c:param>--%>
</c:redirect>
url:必选属性,用于指定待定向资源的URL,可以使用EL

context:用于在使用相对路径访问外部context资源时指定资源的名称;

<c:url>生成URL地址标签

<c:url>标签用于生成一个URL路径的字符串,这个生成的字符串可以赋予HTML的<a>标签实现URL的连接,或者用这个生成的URL字符串实现网页转发与重定向等,在使用该标签生成的URL时,还可以

与<c:param>标签相结合动态添加URL的参数信息,<c:url>标签的两种语法格式如下:

<c:url value="index.jsp" var="name" scope="session" context="/context"></c:url>
<c:url value="http://www.baidu.com" var="name" scope="session">
    <c:param name="user" value="国足"></c:param>
</c:url>
<c:redirect url="${name}"></c:redirect>
<c:url>标签属性说明

属性类型描述引用EL
valueString将要处理的URL地址可以
contextString上下文路径,用于访问同一个服务器的其他web工程,其值必须以/开头,如果指定了该属性,那么url属性值也必须以/开头可以
varString变量的名称,将获取的资源存储在变量中不可以
scopeString变量的存在范围不可以

<c:param>参数传递标签

<c:param>标签只用于为其他标签提供参数信息,它与<c:import>,<c:redirect>和<c:url>标签组合可以实现动态定制参数,从而完成更复杂的程序应用

<c:param>的语法格式如下:

<c:param name="user" value="国足"></c:param>
name:用于指定参数名称,可以引用EL

value:用于指定参数值










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值