JSTL的使用
JSTL标签库使用说明
使用JSTL之前需要导入两个jar包,分别为jstl.jar、stardard.jar。并在jsp页面导包
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 表达式控制符标签:out、set、remove、catch
- 流程控制标签:if、choose、when、otherwise
- 循环标签:foEach、forTokens
- URL操作标签:import、url、redirect、param。
一、表达式控制标签
c:out
-
语法:
语法一:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]/> 语法二:<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值</c:out>
-
属性:
-
使用范例:
<ul> <%--直接输出一字符串--%> <li>(1)<c:out value="直接输出一字符串"/></li> <li>(2)<c:out value="<a herf='http://www.baidu.com'>点击进入百度</a>"/></li> <%--escapeXml="false"表示value值中的html标签不进行转义,而是直接输出 --%> <li>(3)<c:out value="<a href='http://www.baidu.com'>点击链接到百度</a>" escapeXml="false"/></li> </ul>
c:set
-
语法:
语法1:存值,把一个值放在指定的域范围内。 <c:set value="值1" var="name" [scope=”page|request|session|application”]/> 含义:把一个变量名为name1值为"值1"的变量存储在指定的scope范围内。 语法2: <c:set var="name" [scope="page|request|session|application"] value="变量值"> </c:set> 含义:把一个变量名为name2,值为值2的变量存储在指定的scope范围内。 语法3: <c:set value="值3" target="JavaBean对象" property="属性名"/> 含义:把一个值为"值3"赋值给指定的JavaBean的属性名。相当与setter()方法。 语法4: <c:set target="JavaBean对象" property="属性名" value="属性值"> </c:set> 含义:把一个值4赋值给指定的JavaBean的属性名。
-
属性:
-
使用范例:
<ul> <h4>将变量放入指定scope范围内,并拿出参数值</h4> <li>(1)<c:set var="name" value="张三" scope="page"></c:set> ${pageScope.name}</li> <li>(2)<c:set var="name" value="张三" scope="request"></c:set> ${requestScope.name}</li> <li>(3)<c:set var="name" value="张三" scope="session"></c:set> ${sessionScope.name}</li> <li>(4)<c:set var="name" value="张三" scope="application"></c:set> ${applicationScope.name}</li> <%-- 未指定scope范围,则依次查找--%> <li>(5)${name}</li> <% Student student = new Student(); request.setAttribute("student",student); %> <%-- 给普通对象属性赋值--%> <li>(6)<c:set target="${requestScope.student}" property="gender" value="female"></c:set> ${student.gender}</li> <%-- 给map对象赋值--%> <% Map<String,String> map = new HashMap<String, String>(); map.put("sname","张三"); map.put("gender","男"); request.setAttribute("student",map); %> <li>(7)<c:set target="${requestScope.student}" property="sname" value="李四"></c:set> ${student.sname}</li> <%-- c:set可以给不存在的变量赋值但不可以给不存在的对象赋值--%> <li>(8)<c:set var="x" value="y" scope="request"></c:set> ${x}</li> <li>(9)<c:set target="${requestScope.xxx}" value="xxxx"></c:set></li> </ul>
c:remove
-
语法:
<c:remove var="变量名" [scope="page|request|session|application"]/> 其中var属性是必须的,scope可以以省略。
-
使用范例:
<ul> <%-- 先使用c:set对变量赋值,再使用c:remove移除变量--%> <li>(1)<c:set var="sname" value="张三"></c:set> ${sname}</li> <li>(2)<c:set var="gender" value="男"></c:set> ${gender}</li> <c:remove var="gender"></c:remove> ${gender} </ul>
二、流程控制标签的使用
c:if
-
语法:
语法1:<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/> 语法2:<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]> 标签体内容 </c:if>
-
属性:
-
使用范例:
<h4>if标签演示</h4> <form action="procedure.jsp" method="post"> <input type="text" name="sname" value="${param.sname}"><br> <input type="submit" value="登录"> </form> <c:if test="${param.sname eq 'admin'}" var="adminchock"> <c:out value="管理员欢迎您"></c:out> </c:if>
choose、when、otherwise
-
语法:
<c:choose> <c:when test="条件1"> //业务逻辑1 <c:when> <c:when test="条件2"> //业务逻辑2 <c:when> <c:when test="条件n"> //业务逻辑n <c:when> <c:otherwise> //业务逻辑 </c:otherwise> </c:choose>
-
使用范例:
<h4>choose、when、otherwise</h4> <c:set var="score" value="85"></c:set> <c:choose> <c:when test="${score >= 90}"> <c:out value="该学生成绩优秀!"/> </c:when> <c:when test="${(score >= 80)&&(score < 90)}"> <c:out value="该学生成绩良好!"/> </c:when> <c:when test="${(score >= 70)&&(score <80 )}"> <c:out value="该学生成绩中等!"/> </c:when> <c:when test="${(score >= 60)&&(score < 70)}"> <c:out value="该学生成绩及格!"/> </c:when> <c:otherwise> <c:out value="该学生成绩不及格!"/> </c:otherwise> </c:choose>
三、循环标签-forEach
-
语法:
<c:forEach var=”name” items=”Collection” varStatus=”StatusName” begin=”begin” end=”end” step=”step”> 本体内容
【参数解析】:
(1)var设定变量名用于存储从集合中取出元素。
(2)items指定要遍历的集合。
(3)varStatus设定变量名,该变量用于存放集合中元素的信息。
(4)begin、end用于指定遍历的起始位置和终止位置(可选)。
(5)step指定循环的步长。 </c:forEach>
- 属性:
-
使用范例:
<% List<String> list = new ArrayList<String>(); list.add(0,"路飞"); list.add(1,"索隆"); list.add(2,"山治"); list.add(3,"娜美"); list.add(4,"乌索普"); request.setAttribute("list",list); %> <c:out value="不使用begin和end迭代显示集合"></c:out><br> <c:forEach var="onepiece" items="${list}"> <c:out value="${onepiece}"/> </c:forEach><br> <hr/> <c:out value="指定begin、end和step迭代显示集合"></c:out><br> <c:forEach var="onepiece" items="${list}" begin="1" end="3" step="1"> <c:out value="${onepiece}"/> </c:forEach><br> <hr/> <c:out value="输出整个迭代信息"/> <c:forEach var="onepiece" items="${list}" begin="3" end="4" step="1" varStatus="s"><br> <c:out value="${onepiece}">的四种属性</c:out><br> <c:out value="${s.index}"/><br> <c:out value="${s.count}"/><br> <c:out value="${s.first}"/><br> <c:out value="${s.last}"/><br> </c:forEach>