<c:forEach>标签:
主要功能为循环控制,可以将集合中的 成员进行迭代输出,功能与Iterator接口类似;
测试页面:
<%
String info[] = {"JAVA","LINUX","C++"};
pageContext.setAttribute("info",info);
%>
输出全部内容:
<c:forEach items="${info}" var="mem">
${mem }<br/>
</c:forEach><br/>
输出全部内容(间隔为2):
<c:forEach items="${info}" var="mem" step="2">
${mem }<br/>
</c:forEach><br/>
输出前2个:
<c:forEach items="${info}" var="mem" begin="0" end="1">
${mem }<br/>
</c:forEach>
其属性:
No | 名称 | EL | 描述 |
1 | var | 不支持 | 用来存放集合中的每一个对象 |
2 | items | 支持 | 保存所有的集合,主要是数组,Collection(List,Set),及Map |
3 | varStatus | 不支持 | 用于存放当前对象的成员信息 |
4 | begin | 支持 | 集合的开始位置,默认从0开始 |
5 | end | 支持 | 集合的结束为止,默认为集合的最后一个元素 |
6 | step | 支持 | 每次迭代的间隔数,默认为1 |
List的输出:
<%
List all = new ArrayList();
all.add("keith");
all.add("Jam");
all.add("Scora");
all.add("given");
pageContext.setAttribute("all",all);
%>
输出全部:
<c:forEach items="${all}" var="names">
${names }
</c:forEach>
还可以输出set,只要是Collection接口的子接口或类都可以输出;输出Map时有点麻烦,所有保存在Map集合中的对象都是通过Map.Enty的形式保存的,所以要想分离出Key和Value,则需要通过Map.Enty提供的getKey()和getValue()方法;
测试页面:
<body>
<%
Map map = new HashMap();
map.put("name","keith");
map.put("age","21");
pageContext.setAttribute("info",map);
%>
<c:forEach items="${info}" var="mem">
${mem.key }--->${mem.value }<br />
</c:forEach>
</body>
<c:forTokens>标签:
用于输出操作的,类似String类中的split()方法和循环输出的一种集合;
测试页面:
<%
String info = "www.google.com";
pageContext.setAttribute("ref",info);
%>
拆分的结果是:
<c:forTokens items="${ref}" delims="." var="connect">
${connect },
</c:forTokens>
其属性是:
NO | 名称 | EL | 描述 |
1 | var | 不支持 | 用来存放集合中的每一个对象 |
2 | items | 支持 | 要输出的字符串 |
3 | delims | 不支持 | 定义分隔字符串的内容 |
4 | varStatus | 不支持 | 存放当前对象的相关信息 |
5 | begin | 支持 | 开始的输出位置,默认从0开始 |
6 | end | 支持 | 结束的输出位置,默认是最后一个 |
7 | step | 支持 | 迭代输出的问题 |
<c:import />标签:
可以将其他页面的内容包含进来一起显示,于<jsp:inlcude>很像,但是<c:import />可以包含互联网的上的页面:
测试页面:
<body>
导入google:
<c:import url="http://www.google.com/"></c:import>
</body>
将google的页面导入进来,其属性如下:
No | 属性名称 | EL | 描述 |
1 | url | 支持 | 指定要包含的文件路径 |
2 | context | 支持 | 如果要访问在同一个web容器下的其他资源时,必须以"/"开头 |
3 | var | 不支持 | 存储导入的文件内容 |
4 | scope | 不支持 | 定义var的保存范围,默认为page范围 |
5 | charEncoding | 支持 | 定义字符编码 |
6 | varReader | 不支持 | 存储导入的文件内容,以Reader类型存入 |
<c:url />标签:
可以直接再产生一个URL地址,语法如下:
<c:url value="http://www.google.com.hk/" var="urlInfo">
<c:param name="author" value="keith" />
<c:param name="google" value="love" />
</c:url>
<a href="${urlInfo }">GOOGLE</a>
当然这个测试是不成功的!会跳到google的默认Error网页上(输出时仔细观察地址栏的地址);
此标签的属性是:
No | 属性名称 | EL | 描述 |
1 | value | 支持 | 要执行的URL |
2 | context | 支持 | 如果要访问在同一个web容器下的其他资源时设置,必须以"/"开头 |
3 | var | 不支持 | 存储导入的文件内容 |
4 | scope | 不支持 | 定义var的保存范围,默认为page页面 |
<c:redirect />标签:
在JSTL中提供一个与response.sendRedirect()操作相似的标签(进行客户端跳转):
<c:redirect url="main.jsp">
<c:param name="name" value="keith" />
<c:param name="url" value="http://google.com" />
</c:redirect>
此标签是完成客户端跳转,并且传递了两个参数!运行后观察地址栏URL!