JSTL表达式

JSTL的使用

JSTL标签库使用说明

使用JSTL之前需要导入两个jar包,分别为jstl.jar、stardard.jar。并在jsp页面导包

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 表达式控制符标签:out、set、remove、catch
  2. 流程控制标签:if、choose、when、otherwise
  3. 循环标签:foEach、forTokens
  4. URL操作标签:import、url、redirect、param。

一、表达式控制标签

c:out

  1. 语法:

    语法一:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]/>  
    语法二:<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值</c:out>
    
  2. 属性:

JSTL表达式

  1. 使用范例:

    <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. 语法:

    语法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的属性名。
    
  2. 属性:

JSTL表达式

  1. 使用范例:

    <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

  1. 语法:

    <c:remove var="变量名" [scope="page|request|session|application"]/>
    其中var属性是必须的,scope可以以省略。
    
  2. 使用范例:

    <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. 语法:

    语法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>
    
  2. 属性:

JSTL表达式

  1. 使用范例:

    <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

  1. 语法:

     <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>
    
  2. 使用范例:

    <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

  1. 语法:

    <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>

  1. 属性:

JSTL表达式

  1. 使用范例:

    <%
        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>
上一篇:问题汇总以及其的解决方案


下一篇:Java学习之EL与JSTL篇