JSP学习笔记(四十六):JSTL标签入门及使用

使用前的配置

我使用的是MyEclipse,在建立Web项目时,如果选择的是Java EE 5.0,默认是直接支持jstl的,无需额外的配置;如果选择的是J2EE 1.4,需要手工添加对jstl的支持,选择jstl 1.1。我使用的是Java EE 5.0,内置的是最新的版本jstl 1.2

开始使用

在页面中添加对jstl的taglib:

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

 

然后就可以使用了,我在页面加入了一个最简单的应用:

<c:set var="attr" value="hello world"/>
<c:out value="${attr}"/>

 

<c:set>是设置变量:key为attr,value为hello world

<c:out>是输出变量:输出key为attr的值,相当于out.print 

完整的页面内容为:

<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding
="GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<html>
<head>
<title>test</title>
</head>
<body>
<c:set var="attr" value="hello world"/>
<c:out value="${attr}"/>
</body>
</html>

 

其他标签的使用

1. <c:import>

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

c:import的功能是include页面,url是需要include页面的位置

 

2.<c:if>

<c:set var="str1" value="123"></c:set>
<c:set var="str2" value="123"></c:set>
<c:if test="${str1==str2}">
<c:out value="相等"/>
</c:if>

c:if是实现逻辑判断功能的,例子相当于代码中的 if(str1==str2) {out.print("相等");}

 

3.<c:choose><c:when><c:otherwise>

<c:set var="str1" value="1234"></c:set>
<c:choose>
<c:when test="${str1=='123'}">
<c:out value="str1等于123"></c:out>
</c:when>
<c:when test="${str1=='1234'}">
<c:out value="str2等于1234"></c:out>
</c:when>
<c:otherwise>
<c:out value="其他"></c:out>
</c:otherwise>
</c:choose>

这三个标签组合使用,达到if(){}elseif{}else{}的功能,例子相当于代码中的 if(str1=='123'){out.print("str1等于123");}elseif(str1=='1234'){out.print("str1等于1234");}else{out.print("其他")}

 

4.<c:url>

<a href="<c:url value='page.jsp'>">test</a>

相当于<a href="page.jsp">test</a>

<c:set var="str1" value="aabbcc"/>
<c:url var="url1" value="test5.jsp">
<c:param name="str1" value="${str1}"></c:param>
<c:param name="str2" value="456"></c:param>
</c:url>
<a href="<c:out value='${url1}' />">test</a>

相当于<a href="test5.jsp?str1=aabbcc&str2=456">test</a>

如果url标签不带var参数,将直接输出

带var参数的话,是把url解析的内容赋值到变量中,供后面使用

使用c:param为url添加参数,参数的值可以是动态的

 

5.<c:redirect>

<c:redirect url="page2.jsp">
<c:param name="id" value="2"></c:param>
</c:redirect>

跳转页面到page2.jsp?id=2

 

6.<c:remove>

<c:set var="str1" value="aabbcc"/>
<c:remove var="str1"/>

清除变量,通过remove标签的使用,set标签建立的变量str1被清除

 

7.<c:catch>

<c:catch var="error">
<%
Integer.parseInt(
"sdkfj");
%>
</c:catch>
<hr>
异常:
<c:out value="${error}"/>
<hr>
异常 exception.getMessage
=
<c:out value="${error.message}"/>
<hr>
异常exception.getCause
=
<c:out value="${error.cause}"/>

异常捕捉,相当于代码里的try{}catch(Exception e){}

 

8.<c:forEach>

<%
List list
=new ArrayList();
list.add(
"100");
list.add(
"101");
list.add(
"102");
list.add(
"103");
list.add(
"104");
list.add(
"105");
request.setAttribute(
"list",list);
%>
<c:forEach var="item" items="${list}">
<c:out value="${item}"/>
<br>
</c:forEach>

这是一个迭代器,用的非常普遍,这个要讲的话有很多东西,我就不深入讲解了:)

 

9.<c:forTokens>

<c:set var="citys" value="北京,上海,广州"></c:set>
<c:forTokens items="${citys }" delims="," var="item">
<c:out value="${item }<br />" escapeXml="false"></c:out>
</c:forTokens>

c:forTokens和c:forEach非常类似,都是用来迭代对象,区别在于c:forEach可以迭代对象,c:forTokens用来迭代字符串,使用delims参数分割这个字符串成数组进行迭代

posted @ 2008-09-13 17:36  魔豆  阅读(759)  评论(0编辑  收藏  举报