`

JSTL常用标签之大聚集---上

阅读更多

JSTL已经被继承到了javaEE的环境中,目前的版本是1.2;javaEE Libraries里的jstl-1.2.jar就是这个标签库的jar包!

核心标签库是JSTL是最重要的部分,也是在开发中最常使用到的部分,在核心标签库中主要完成的是流程控制,迭代输出等操作,主要的标签名称如下:

No 功能分类 名称 描述
1 <c:out> 输出属性内容
2 <c:set> 设置属性内容
3 <c:remove> 删除指定属性
4 <c:catch> 异常处理
5 流程控制标签 <c:if> 条件判断
6 <c:choose> 多条件判断,可以设置<c:when>和<c:otherwise>
7 迭代标签 <c:forEach> 输出数组,集合
8 <c:forTokens> 字符串拆分及输出操作
9 包含标签 <c:import> 将一个指定的路径包含到当前页进行显示
10 生成URL标签 <c:url> 根据路径和参数生成一个新的URL
11 客户端跳转 <c:redirect> 客户端跳转

<c:out>标签:

  用于输出内容,其语法如下:

	<c:out value="hello JSTL" escapeXml="" default=""></c:out>
No 属性名称 EL支持 描述
1 value 支持 设置要显示的内容
2 escapeXml 支持 如果要显示的value内容为null,则显示default定义的内容
3 default 支持 是否转换字符串,例如将">"转换为"&gt",默认为true

测试例子:

	<%
	pageContext.setAttribute("info","<study>");
	 %>
	 
	 属性存在:<c:out value="${info}"></c:out><br />
	 属性不存在:<c:out value="${date}" default="没有此属性内容"></c:out><br />
	属性不存在:<c:out value="${time}">没有此内容!</c:out> <br />

 <c:set>标签:

   主要用于将属性保存在4种属性范围内,其语法如下:

 

<c:set var="属性名称" value="属性内容" scope="[request],[response],[session],[application]" />

 本标签的属性如下:

No
属性名称
支持EL
描述
1
value
支持
设置属性内容,如果为null则表示删除属性
2
var
不支持 设置属性名称
3
scope
不支持 设置属性的保存范围,默认保存在page范围中
4
target
支持 存储的目标属性

测试例子:

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

<body>
	<c:set var="info" value="Hello JSTL" scope="request" />
	<h3>属性内容:${info }</h3>
</body>

 定义JavaBean:Info:

package com.keith.tag;

public class Info {
	private String content;

	public String getContent() {
		System.out.println(content);
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
}

 jstltest.jsp:

<%@ page import="com.keith.tag.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
	<%
	Info info = new Info();
	request.setAttribute("info",info);
	 %>
	<c:set value="Hello JSTL" target="${info}" property="content" />
	属性内容:${info.content }

 刷新页面的时候,看下控制台;标签是通过反射从javaBean取值;所有在控制台可以看见输出!

<c:remove />标签:

  其标签在程序中主要作用是删除指定范围中的属性,功能与removeAttribute()方法类似;

<c:remove var="属性名称" scope="[request],[response],[session],[application]"/>

 本标签的属性:

No 属性名称 支持EL 描述
1 var 不支持 要删除属性的名称,必须指定此名称
2 scope 不支持 删除属性的保存范围,默认保存在page范围中

测试页面:jstltest.jsp:

	<%
	Info info = new Info();
	request.setAttribute("info",info);
	 %>
	<c:set value="Hello JSTL" target="${info}" property="content" />
	属性内容:${info.content }<br />
	
	<c:remove var="info" scope="request"/>
	属性内容:${info.content }

 <c:catch/>标签:

   用来处理程序中产生的异常,并进行相关的异常处理,语法:

	<c:catch var="保存异常信息的属性名称">
		有可能发出异常的语句
	</c:catch>

 属性:

No 名称 支持EL 描述
1 var 不支持 用来保存异常信息的属性名称

测试页面:

	<c:catch var="errmsg">
		<%
		int result=10/0;
		 %>
	</c:catch>
	<h3>${errmsg }</h3>

 <c:if />标签:

   用来判断语句,与在程序中使用的if语法一样,语法如下:

<c:if test="条件" var="存储判断结果" scope="[request],[response],[session],[application]"></c:if>

 其属性:

No 属性名称 EL 描述
1 test 支持 用于判断条件,如果条件为true,则执行标签体的内容
2 var 不支持 保存判断结果
3 scope 不支持 指定判断结果的保存范围,默认是page

测试页面:

	<c:if test="${param.name=='keith'}" var="name1" scope="page">
		<h3>欢迎:${param.name } 光临!!!</h3>
	</c:if>
	
	<c:if test="${10<30}" var="name2">
		<h3>10 小于 30</h3>
	</c:if>

 <c:choose/>,<c:when/>,<c:otherwise/>标签:

<c:if>:标签可以提供的功能只是针对一个条件的判断,如果现在要同时判断多个条件,可以使用<c:choose>,但<c:choose>标签只能作为<c:when>和<c:otherwise>的父标签出现;

语法:

	 <c:choose>
	 	标签体内容
	 </c:choose>

 本标签中没有任何的属性,而且在此标签中只能有<c:when>,<c:otherwise>标签;

属性:

 
No 名称 EL 描述
1 test 支持 用于判断条件,如果条件为true,则执行标签体内容

测试页面:

	<%
	pageContext.setAttribute("num",10);
	 %>	
	 <c:choose>
	 	<c:when test="${num == 10}">
	 	<h3>num属性的内容是10!!!</h3>
	 	</c:when>
	 	<c:when test="${num == 20}">
	 	<h3>num的属性是20</h3>
	 	</c:when>
	 	<c:otherwise>
	 	<h3>没有一个条件满足的</h3>
	 	</c:otherwise>
	 </c:choose>
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics