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参数分割这个字符串成数组进行迭代