一般用途的標簽
在JSTL中,一般用途的標簽只要是指具有輸出,設置變量,和錯誤處理等功能的標簽,他們在jsp中使用很頻繁,它們有:
l <c:out>
l <c:set>
l <c:remove>
l <c:catch>
下面,我來講述一下他們的作用:
<c:out>
它是一個輸出的標簽,負責把計算出的結果輸出到jspwriter,就跟調用out.println()基本一樣。沒有BODY的時候,使用下面的語法:
<c:out value=”value” [escapeXml]=”{true|false}” [default=”defaultValue”]/>
有BODY的時候,使用下面的語法:
<c:out value=”value” [escapeXml]=”{true|false}” >
這里是BODY,可以是任何合法的jsp或者是html代碼。
</c:out>
注意,escapeXml的作用是是否將代碼交給xml解析器解釋,true為交給xml解析器解釋,false為交給瀏覽器解釋,見紅色部分代碼
舉例:c_out.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL: c:out的使用</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
<c:set var="sessionAttr" value="sessionValue" scope="session"/>
<c:set var="pageAttr" value="pageValue" scope="page"/>
<c:set var="requestAttr" value="requestValue" scope="request"/>
<c:out value="以下輸出的是前面設置的屬性<br>" escapeXml="false"/>
<c:out value="${sessionAttr}"/>
<c:out value="${pageAttr}"/>
<c:out value="${requestAttr}"/>
<c:out value="${test_nodef}" default="沒有test_nodef這個變量"/>
</html>
<c:set>
這個標簽用于在某個范圍(page,request,session,application)里面設置特定的值(默認為page),或者設置某個已經存在的javabean的屬性。類似于<%request.setAttribute(“name”,value)%>
語法:
1、使用value屬性設置一個特定范圍里面的屬性:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”]/ >
2、使用value屬性設置一個特定范圍里面的屬性,帶有BODY:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”] >
Body content
</c:set>
3、設置某個特定對象的一個屬性:
<c:set value=”value” target=”target” property=”propertyName”/ >
4、設置某個特定對象的一個屬性, 帶有BODY:
<c:set value=”value” target=”target” property=”propertyName” >
Body content
</c:set>
舉例:c_set.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<jsp:useBean id="user" class="com.j2ee14.ch12.User"/>
<html>
<head>
<title>JSTL:的使用c:set</title>
</head>
<body bgcolor="#FFFFFF">
<hr>
設置一個屬性,然后輸出它<br>
<c:set var="maxCount" value="100"/>
<c:out value="${maxCount}"/>
<hr>設置屬性時,把它的值放在標簽的body中。
<c:set var="password">
ksdjfxsdf234234
</c:set>
<c:out value="${password}"/>
<hr>設置javaBean的屬性,然后輸出這些屬性值:
<c:set value="hellking" target="${user}" property="userName"/>
userName=<c:out value="${user.userName}"/>
<hr>設置屬性,并且指定它們的范圍,屬性的默認范圍是page。
<c:set value="20" var="maxIdelTime" scope="session"/>
<c:set value="next.jsp" var="nextPage" scope="page"/>
</body>
</html>
<c:remove>
它的作用是刪除某個變量或者屬性。類似于<%session.removeAttribute(“name”)%>,它的語法是:<c:remove var=”varName” [scope= “{page|request|session|application}”]/ >
舉例:c_remove.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:c:remove的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set value="10000" var="maxUser" scope="application"/>
<c:set value="10" var="count" scope="session"/>
maxUser=<c:out value="${maxUser}"/><br>
count=<c:out value="${count}"/>
<hr>調用c:remove...
<c:remove var="maxUser" scope="application"/>
<c:remove var="count"/>
調用了c:remove后,參數值為:
maxUser=<c:out value="${maxUser}"/>,
count=<c:out value="${count}"/>,
</body>
</html>
<c:catch>
它的作用是捕捉由嵌套在它里面的標簽所拋出來的異常。類似于<%try{}catch{}%>,它的語法是:<c:catch [var=”varName”]>nested actions</c:catch>
舉例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:catch的使用</title>
</head>
<body bgcolor="#FFFFFF">
<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}"/>
</body>
</html>