[关闭]
@duyao 2015-05-24T14:02:25.000000Z 字数 2919 阅读 1917

jstl

jstl


jstl

jstl=jsp standard tag library,产生jstl的原因是减少java代码片段,提高开发效率

jstl使用方法

要先引包,才能使用
首先要保证有jstl-1.2.jar的包,然后点开后,有很多包,找到META-INF,找到*.tld文件,会有uri这个标签,将此uri写入taglib中的uri
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix是指标签名字,就是c.tld,fn.tld

jstl标签种类

一般用途标签

out

用于输出

您的用户名是: <c:out value=”${user.username}” default=”guest”/>
显示用户的用户名,如为空则显示guest

<c:out value="${sessionScope.username}"/>
指定从session中获取username的值显示;

<c:out value="${username}" />
显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显

escapeXml属性是指逃离对特殊编码的处理,默认为true,即对于html等标签不做任何处理
<c:out value='click<a href="www.baidu.com">baidu</a>' default="no value" escapeXml="false"/>

set

语法
<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>
直接设置

  1. <c:set value="10000" var="maxUser" scope="application"/>
  2. <c:set value="20" var="maxIdelTime" scope="session"/>
  3. <c:set value="next.jsp" var="nextPage" scope="page"/>

通过属性设置

  1. <% Foo foo = new Foo(); pageContext.setAttribute("foo", foo); %>
  2. <c:out value="${foo.date}"/><br> <c:set target="${foo}" property="day" value="1"/>
  3. <c:out value="${foo.date}"/>

redirect,param

redirect可以将客户端的请求从一个 JSP 网页导向到其他文件。
param用于传递参数,用来为包含或重定向的页面传递参数。

  1. <c:redirect url="/MyHtml.jsp">
  2. <c:param name="userName" value=”RW” />
  3. </c:redirect>

remove

<c:remove var="username" scope="session"/>
username变量从session范围移除。若我们不设定scope,则<c:remove>会移除所有范围名称为username的数据。

条件标签

if

判断作用,一般与其他标签一起使用

  1. <c:if test="${empty param.empDate}">
  2. <jsp:forward page="input.jsp">
  3. <jsp:param name="msg" value="Missing the Employment Date" />
  4. </jsp:forward>
  5. </c:if>

choose,when,otherwise

语法结构

  1. <c:choose>
  2. body(<when><otherwise>)
  3. </c:choose>
  1. <c:choose>
  2. <c:when test="${condition1}">
  3. condition1 为 true
  4. </c:when>
  5. <c:when test="${condition2}">
  6. condition2 为 true
  7. </c:when>
  8. <c:otherwise>
  9. condition1和conditon2都为false
  10. </<c:otherwise >
  11. </c:choose>

迭代标签

forEach

有两种方法:一种是普通遍历,基于次数beginend

  1. <c:forEach [var="var"] [varStatus="varStatus"] begin="startIndex" end="stopIndex" [step="increment"]>
  2. JSP elements
  3. </c:forEach>

另一种基于集合元素进行迭代item
注意:这里迭代取值的时候,取出其属性用.来取,这个属性一定是用getXxx()setXxx()得到的,而不一定使其真正的名名字,具体意思是:比如student有属性mystuidgetStuid(),而在el表达式中就一定要用{s.stuid}
比如下面的map中${mymap.key}jdk中getKey()的方法

  1. <%
  2. Map map = new HashMap();
  3. map.put("a", "12345");
  4. map.put("b", "abcde");
  5. out.println(map.get("a"));
  6. request.setAttribute("map",map);
  7. %>
  8. <!-- 完全迭代 -->
  9. <c:forEach items="${map}" var="mymap" >
  10. <c:out value="${mymap.key}" />
  11. <c:out value="${mymap.value}" />
  12. </c:forEach>
  13. <!-- 根据map的key来找到特定的值 -->
  14. <c:forEach items="${map}" var="mymap">
  15. <c:if test="${mymap.key=='a'}">
  16. <c:out value="${mymap.value}"/>
  17. </c:if>
  18. </c:forEach>
  1. <c:forEach items="${arrayList}" var="s">
  2. <tr>
  3. <td >${s.stuid} </td>
  4. <td >${s.name}</td>
  5. </tr>
  6. </c:forEach>

forTokens

forTokens用来处理字符串

  1. <%
  2. String phonenumber="123-456-7899";
  3. request.setAttribute("userPhone",phonenumber);
  4. %>
  5. <c:forTokens items="${userPhone}" delims="-" var="item">
  6. ${item}
  7. </c:forTokens>

url相关的标签(xml,sql)

很少使用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注