一,核心标签库
指令格式:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:out>输出标签
用于将表达式的值输出到JSP页面中,有两种语法格式:
1.没有标签体:
<c:out value="expression" [escapeXml="true|false"] [default="defaultValue] \>
2. 有标签体:
<c:out value="expression" [escapeXml="true|false"]
defaultValue]
</c:out>
- value:指定将要输出的变量和表达式。该属性的值类似于Object,可以使用EL
- escapeXML:可选属性,用于指定是否转换特殊字符串。属性值为true或false。默认值是true,表示转换。
被转换的字符
字符 | 字符实体代码 | 字符 | 字符实体代码 |
< | < | > | > |
' | ' | " | " |
& | & |
- default:可选属性,用于指定当前value为null时,将要显示的默认值,如果没有指定该属性时,并且value属性为null时,该标签将会输出空的字符串
<c:set>变量设置标签
用于在指定范围(page,request,session或application)中定义保存某个值的变量,或为指定的对象设置属性值。
四种语法格式:
1.在scope指定的范围内将变量值存储到变量中
<c:set var="name" value="value" [scope="范围"] \>
2.在scope指定的范围内将标签体存储到变量中。
<c:set var="name" [scope="page|request|session|application"]
标签体
<\c:set>
3.将变量值存储在target属性指定的目标对象的popName属性中
<c:set value="vlaue" target="object" property="propName" />
4.将标签体存储到target属性指定的目标对象的popName属性中
<c:set target="object" property="propName"
标签体
</c:set>
- var:用于指定变量名,通过这个变量名,可以通过EL指定为<c:out>的value属性的值
- value:用于指定变量值
- scope:用于指定变量的作用域,默认page。
- target:用于指定存储变量值或标签体的目标对象。可以JavaBean或Map集合对象(使用EL表达式或一个脚本表达式指定真正对象)
- property:用于指定目标对象存储数据的属性名
<c:remove>变量移除标签
用于移除指定的JSP范围内的变量。语法格式如下:
<c:remove var="name" [scope="范围"]/>
- var:用于指定要移除的变量名
- scope:用于指定变量的有效范围,可选值有:page,request,session,application。默认page。如果在标签中没有指定变量的有效范围,会在四个范围内进行寻找并移除。如果没有指定范围,在不同范围中有两个变量名相同的变量,都会被移除。
- 当移除的变量没有存在时,并不会抛出异常。
<c:catch>捕获异常标签
用于捕获程序中出现的异常。可以将异常信息保存到指定的变量中
<c:catch [var="expression"]
.... //可能存在异常的代码
</c:catch>
- var:可选属性,用于指定存储异常信息的变量。如果不需要保存异常信息,可以省略该属性。(var属性值只有在<c:catch>标签的后面才有效,在标签体中无法使用有关异常的任何信息)
- 注意:<c:catch>标签可以获取页面中由其他的JSP脚本标示和动作标示所产生的的运行时异常信息
URL相关标签
<c:import>导入标签
可以导入站内或其他网站的静态和动态文件到Web页面中,与<jsp:inclue>指令类似。不同是<jsp:inclue>只能导入站内资源。两种语法格式:
1.
<c:import url="url" [context="context"] [var="name'] [scope="范围"] [charEncoding="encoding"]>
[标签体]
</c:import]
2.
<c:import url="url" varReader="name" [context="context"] [charEncoding="encoding"]>
[标签体]
</c:import]
- url:用于指定被导入的文件资源的URL地址
- context:上下文路径,用于访问同一个服务器的其他Web应用,其值必须以"/"开头,如果指定该属性,url属性也必须以“/”开头
- var:用于指定变量的名称。用以String类型存储获取的资源
- scope:用于指定变量的存储范围,默认page
- varReader:用于指定一个变量名,用于以Reader类型存储被包含文件内容(导出的Reader对象只能在<c:import>标记的开始和结束标签之间使用)
- charEncoding:用于指定的被导入文件的编码格式
- 标签体:可选,如果需要为导入的文件传递参数,可以在标签体的位置使用<c:param>标签设置参数
<c:url>动态生成URL标签
用于生成一个URL路径的字符串,有两种语法格式:
1.
<c:url value="url" [var="name"] [scope="范围"] [context="context”] />
将输出产生的URL字符串的信息,如果指定了var和scope属性,相应的URL信息就不再输出,而是存储到变量后使用
2.
<c:url value="url" var="name [scope="范围"] [context="context”]>
<c:param/>
</c:url>
- value:用于指定将要处理的URL地址,可以使用EL
- context:上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头,如果指定了该属性,那么url属性值也必须以“/”开头
- var:用于指定变量的名称,该变量用于保存新生成的URL字符串
- scope:用于指定变量的存在范围
- 注意:在应用<c:url>标签生成新的URL地址时,空格符将被转换成加号
<c:redirect>重定向标签
可以将客户端发出的request请求重定向到其他的URL服务器,由其他程序处理客户的请求。在这期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径,语法有两种:
1.<c:redriect url="url" [context="/context] />
不添加传递到目标路径的参数信息
2.
<c:redirect url="url" [context="/context] >
<c:param/> //可以有多个
</c:redirect>
- url:必选属性,用于指定待定向资源的URL,可以使用EL
- context:用于在使用相对路径访问外部context资源,指定资源的名字
<c:param>传递参数标签
只用于为其他标签提供参数信息。
<c:param name=“paramName” value="paramValue">
- name:用于指定参数名,可以引用EL.,如果参数名为null或是空,该标签将不起任何作用
- value:用于指定参数值,可以引用EL,如果参数值为null,该标签作为空值处理、
流程控制标签:
<c:if>条件判断标签
语法两种:
1.
<c:if test="condition var="name" scope="page|request|session|application>
将条件的判断结果存储到var属性指定的变量中,这个变量存在于scope指定的范围内
2.
<c:if test=”condition” var="name" [scope=“范围”>
标签体
</c:if>
将条件的判断结果存储到var属性指定的变量中,这个变量存在于scope指定的范围内.根据条件的判断去执行标签体
- test:必选属性,用于指定条件表达式,可以使用EL
- var:可选属性,用于指定变量名,用于保存test属性判断结果。如果变量不存在,就创建他
- scope:用于指定变量的有效范围,默认值page
<c:choose>条件选择标签
可以根据不同的条件完成指定的业务逻辑,没有符合的条件就执行默认条件的业务逻辑。只能作为<c:when>和<c:otherwise>标签的父标签。语法格式:
<c:choose>
标签体
</c:choose>
- 注意:可以包含多个<c:when>标签来处理不同条件的业务逻辑。只能有一个<c:otherwise>处理默认条件的业务逻辑
<c:when>条件测试标签
根据不同的条件执行相应的业务逻辑
<c:when test="condition>
标签体
</c:when>
- test:条件表达式,必须定义的属性。可以引用EL表达式
- 注意:在<c:choose>中必须有一个<c:when>标签(这个标签 必须在<c:otherwise>之前)<c:otherwise>是可选的
<c:otherwise>其他条件标签
定义<c:choose> 标签中的默认条件处理逻辑
<c:otherwise test="condition>
标签体
</c:otherwise>
循环标签:
<c:forEach>循环标签
根据循环条件,遍历数组和集合类中的所有或部分数据。两种语法格式:
1.集合成员迭代 items为必选属性,用EL
<c:forEach items="data" [var="name"] [begin="start"] [end="finish"] [step="step"] [varstatus="statusName']>
标签体
</c:forEach>
2.数字索引迭代
<c:forEach [var="name"] begin="start" end="finish" [step="step"] [varstatus="statusName']>
标签体
</c:forEach>
- items:用于指定被循环遍历的对象,多为数组个集合类。属性值可以是数组,字符串,枚举类型,集合类。EL
- var:用于指定循环体的变量名。用于存储items指定的对象的成员
- begin:指定循环的开始位置。没有指定,从第一个开始。EL
- end:指定循环的终止位置。没有指定,最后一个结束。EL
- step:指定循环的步长
- varStatus:指定循环的状态变量(有四个状态属性:index,count,first,last)
<c:forTokens>迭代标签
可以用指定的分隔符将一个字符串分隔开。根据分割的数量确定循环的次数
<c:forTokens items="String" delims="char" [var="name"] [begin="start"] [end="finish"] [step="step"] [varstatus="statusName']>
标签体
</c:forTokens>
- items:指定迭代的String对象。
- delims:指定分割字符串的字符。可以有多个
- var:指定变量名,保存了分割后的字符串
- begin:迭代开始的地方。索引值从0开始
- end:迭代结束的地方
- step:迭代的步长。默认1
- varStatus:指定迭代的状态变量(同<c:forEach>标签一样)