JSTL学习笔记

来源:互联网 发布:邦有道则知 邦无道则愚 编辑:程序博客网 时间:2024/06/06 01:46

JSTL技术

 

JSTL(JavaServer Pages Standard Tag Library)——JSTL标准标签库

导入指令

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

注:JSTL1.0导入rui中的地址不需要加jsp

taglib: 是JSP指令,作用于JSP页面中,将标签库描述文件(.tld)引入该页面中

prefix: 设置前缀,前缀用于使用标签库描述文件中的标签

uri: 用于指定标签库的uri

可以把导入的标签指令写在一个 JSP 文件里面,然后应用页面使用include指令导入即可

导入标签指令示例:

<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8"%>

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

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

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

导入示例:<%@include file="taglib.jsp"%>

核心标签库

运算符操作—out、set、remove、catch    流程控制—if、choose、when、otherwise

迭代操作—forEach、forTokens            URl操作—import、url、redirect、param

常用标签:

<c:out>

作用:用于显示内容,相当于脚本中的表达式 <%= %>

语法:1:没有本体内容<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />

2:有本体内容<c:out value="value" [escapeXml="{true|false}"] > default value</c:out>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

value

需要显示的值(即要输出的信息,可以是EL表达式或常量)

Object

default

如果 value 的值为 null,则显示 defalut 的值

Object

escapeXml

是否转换特殊字元,如:< 转换成 <(为true则避开特殊的xml字符集)

boolean

true

示例:

<!-- 在页面显示 Hello JSP 2.0 !!! --><c:out value="Hello JSP 2.0 !!!" />

<!-- 在页面显示 Hello JSP 2.0 !!! --><c:out> Hello JSP 2.0 !!</c:out>

<!获得存在 request 作用域中 name 的值并显示,如果 ${requestScope.name } 为 null 则显示默认值 ->

<c:out value="${requestScope.name }" default="Guest"/>

<!-- 在页面显示 <p>显示特殊字符</p> --><c:out value="<p>显示特殊字符</p>" />

<!-- 在页面显示 不显示特殊字符> -->

<c:out value="<p>不显示特殊字符</p>" escapeXml="false"/><c:set>

作用:用于将变量存储至 JSP 范围中或是 JavaBean 的属性中,就是说设置指定范围内的变量值,如果该变量不存在,则创建它。

语法:

1:将 Value的值,储存至范围为 scope 的 varName 变量中

<c:set var="varName" value="value" [scope="{page | request | session | application}"] />

2:将本体内容的资料,储存至范围为 scope 的 varName 变量中

<c:set var="varName" value="value" [scope="{page | request | session | application}"] >本体内容</c:set>

3:将 value 的值,储存至 target 物件的属性中

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

4:将本体内容的资料,储存至 target 物件的属性中

<c:set target="target" property="propertyName" > 本体内容</c:set>

注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

value

要被储存的值(即要保存的信息,可以是EL表达式或常量)

Object

var

要存入的变量名称(即需要保存信息的变量)

String

scope

var 变量的 JSP 范围(作用域)

String

page

target

为 JavaBean 或 java.util.Map 物件(如果指定了target属性, 那么property属性也必须指定)

Object

property

指定 target 物件的属性

String

示例:<!-- 获得并存储 User 对象集合 --><c:set var="users" value="${requestScope.allUsers}" />

<!-- 如果 ${param.Username} 为 null 时,则设定 User (即 JavaBean 对象) 的 name 属性值为 null,

反则不为 null ,则将 ${param.Username } 的值存入 User 的 name 属性中(setter 机制) -->

<jsp:useBean id="user" class="com.java.demo.model.User" scope="request"/>

<c:set target="User" property="name" value="${param.Usernsame}"/>

<c:remove>作用:用于删除变量

语法:<c:remove var="varName" [scope="{page | request | session | application}"] />

注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

var

要删除的变量名称

String

scope

var 变量的 JSP 范围(作用域)

String

page

示例:

<!-- 从 reques 作用域中删除 name 变量 --><c:remove var="name" scope="request" />

<c:catch>作用:用于处理产生错误的例外状况,并且将错误讯息存储起来。

语法:<c:catch [var="varName"]> 要抓取错误的部分</c:catch>

注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

var

用来储存错误信息的变量

String

示例:<!-- 因为字符串无法转换成整型,所以 <c:catch> 之间程序产生错误,<c:catch> 会自动的把错误存到 error_Message 变量中 -->

<c:catch var="error_Message"> <% int num = Integer.parseInt("Number"); %></c:catch>

<c:if>作用:用于条件判断

语法:1:没有本体内容<c:if test="testCondition" var="varName" [scope="{page | request | session | application}"] />

2:有本体内容<c:if test="testCondition" [var="varName"] [scope="{page | request | session | application}"] >本体内容</c:if>

注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

test

如果运算式的结果为 true 则执行本体内容,false 则相反

boolean

var

用来储存 test 运算后的结果,即 true 或 false

String

scope

var 变量的 JSP 范围(作用域)

String

page

示例:<!-- 从 request 作用域中获取用户名,如果用户名等于 Guest ,则将 true 存入 result 变量中 -->

<c:if var="result" test="${requestScope.userName=='Guest' }" > ${result }</c:if>

<c:choose>作用:本身只当做 <when/>和 <otherwise/> 的父标签,即<when />和 <otherwise/> 标签的即容器。

语法:<c:choose> 本体内容(<when>和<otherwise>)</c:choose>

示例:

<c:choose>

 <c:when test="${requestScope.userType=='Admin' }">   用户名为一级管理员 </c:when>

 <c:when test="${requestScope.userType=='Guest'}">   用户名为二级管理员 </c:when>

 <c:otherwise>    用户名为普通用户 </c:otherwise>

</c:choose>

<c:when>作用:如果条件成立则执行 when 里的语句

语法:<c:when test="testCodition"> 本体内容</c:when>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

test

如果运算式的结果为 true 则执行本体内容,false 则相反

boolean

<c:otherwise>作用:在用一个<c:choose>中,当所有<c:when>的条件都没有成立时,则执行<c:otherwise>的本体内容

语法:<c:otherwise> 本体内容</c:otherwise>

<c:forEach>作用:用于遍历集合(collection)中的每个成员。当集合中成员条件成立时,就会持续重复执行forEach的本体内容

语法:1:遍历所有成员<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>本体内容</c:forEach>

2:迭代指定的次数

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>

本体内容</c:forEach>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

var

用来存放被遍历集合成员的变量

String

items

被遍历的集合物件

Arrys
Collection
iterator
Enumeration
Map
String

varStatus

用来存放现在遍历到的相关成员资讯

String

begin

开始的位置

int

0

end

结束的位置

int

最后一个成员

step

每次迭代的间隔数

int

1

varStatus 属性

属性

属性类型

说明

index

number

现在遍历到成员的索引

count

number

总共遍历成员的总数

first

boolean

现在遍历到的成员,是否为第一个成员

last

boolean

现在遍历到得成员,是否为最后一个成员

示例:<!-- 从 request 作用域中获得所有用户,以 user 变量来遍历所有用户 -->

<c:forEach var="user" items="${requstScope.allUser }" varStatus="varStatus">

编 号:${varStatus.index }用户名:${user.userName }密 码:${user.userPass }</c:forEach>

<c:forTorkens>作用:用来遍历一字符串中所有的成员,每个成员是由定义符号(delimiters)分隔的。

语法:<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"][begin="begin"] [end="end"] [step="step"]> 本体内容</c:forTokens>

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

var

用来存放被遍历集合成员的变量

String

items

被遍历的字串

String

delims

定义用来分割字串的字符

String

varStatus

用来存放现在遍历到的相关成员资讯

String

begin

开始的位置

int

0

end

结束的位置

int

最后一个成员

step

每次遍历的间隔数

int

1

示例:<!-- 从 phoneNumber 变量中获得字符串,以 str 变量 "-" 为分隔符遍历 -->

<% String phoneNumber = "123-456-7890" %>

<c:forTokens var="str" items="phoneNumber" delims="-"> ${str }</c:forTokens>

<c:import>作用:可以把其他静态或动态文件包含至本身 JSP 页面。

<c:import>和<jsp:includ> 的区别在于:<jsp:includ>只能包含和自己同一个工程下的文件,而<<c:import>除了包含和自己同一个工程下的文件还可以包含不同工程下的文件或者其他网站文件。

语法:1:<c:import url="url" [context="context"] [var="varName"] [scope="{page | request | session | application}"] >本体内容</c:import>

2<c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"] >本体内容</c:import>

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

url

被包含文件(页面)的地址

String

context

相同Container(容器)下,其他 Web 站台必须以/开头

String

var

储存被包含的文件的内容(以 String 形态存入)

String

scope

var 变量的 JSP 范围(作用域)

String

page

charEncoding

被包含页面文件内容的编码格式

String

ISO-8859-1

varReader

储存被包含的文件的内容(以 Reader 形态存入)

String

示例:<!-- 将 tools.jsp 包含到当前页的当前位置 -->

<c:import url="/tools.jsp"/>

<c:param>作用:可以将参数给被包含文件(设置参数)

语法:1:参数的值使用value属性指定<c:param name="name" value="value"/>

2:参数的值在标签中指定<c:param name="name">parameter value</c:param>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

name

参数名称

String

value

参数的值

String

本体内容

<c:url>作用:用来产生一个URL,用于构造URL,主要的用途是URL重写.

语法:

1:没有本体内容、<c:url value="value" [context="context"] [var="varName"] [scope="{page | request | session | application}"] />

2:本体内容代表查询字串(Query String)参数

<c:url value="value" [context="context"] [var="varName"] [scope="{page | request | session | application}"] ><c:param>标签</c:url>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

value

执行的URL

String

context

相同 Container 下,其他 Web 站台必须以 / 开头

String

scope

var 变量的 JSP 范围(作用域)

String

page

示例:<!-- 设置百度的连接 -->

<a href="<c:url value='http://www.baidu.com'><c:param name='param' value='value'/></c:url>">百</a>

<c:redirect>作用:可以将用户端的请求,从一个 JSP 网页导向到其他文件

语法:1:没有本体内容<c:redirect url="url" [context="context"] />

2:本体内容代表查询字串(Query String)参数<c:redirect url="url" [context="context"] ><c:param /></c:redirect>注:

属性

说明

是否支持EL

属性类型

是否必须存在

默认值

url

导向的目标 URL 地址

String

context

相同 Container 下,其他 Web 站台必须以 / 开头

String

示例:<!-- 网页会自动导向 http://www.bidu.com -->

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

原创粉丝点击