A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 最光阴 初级黑马   /  2018-11-22 10:07  /  641 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    EL中文称为表达式语言,它的诞生主要是为了使Web页面可以更加简洁方便的计算和输出java对象。EL具有以下特点:1、在EL表达式中可以访问JSP内置对象。2、EL表达式可以访问一般变量,还可以访问JavaBean中的属性和集合对象。3、在EL表达式中可以执行关系,逻辑和算术等运算。4、在EL表达式中可以访问JSP的作用域。5、EL表达式还允许开发人员直接调用一个普通Java类中的公共静态方法。
   JSTL是一个不断完善的开发源代码的JSP标准标签库,开发人员通过使JSTL标签,可以取代在传统JSP程序中嵌入Java代码的做法,大大提高程序的可维护性。JSTL所提供的标签函数库主要分为核心标签库,I18N格式标签库,SQL标签库,XML标签库和函数标签库五类。
   EL表达式的出现替代了传统JSP中的赋值表达式。而JSTL为Java Web开发人员提供了一个标准的通用标签库。通过使用JSTL标签,可以取代在传统的JSP页面中嵌入大量的Java代码的做法,大大提高程序的可维护性。更为重要的是,JSTL和EL可以综合起来运用,提高了程序的简洁性,使用起来更方便。

//给遍历赋值,相当于 <% int example = 100+1; %>

<c:set var= "example" value="${100+1}" scope="session"  />

<s:set name="personName" value="person.name"/>



          //打印变量,相当于 <%=example%>

<c:out value="${example}" default="a default value"  escapeXml="true"/>

<s:property value="#personName" default="a default value" />  OGNL的#符号相当与EL的$符号



         //从session中移除变量 <% session.removeAttribute("example")%>

<c:remove var= "example" scope="session"/>



         //test里面是一个boolean的运算, var里面声明的变量则记录test的结果,scope指明这个变量的存在范围,有4个值,博文的第三点(JSP- 内置对象)

<c:if test= "${ 条件运算 }"  var= "varName" scope= "page"  />
        //条件为true时,执行的代码
</c:if>

<s:if test="%{false}"><div>Will Not Be Executed</div>

</s:if>

<s:elseif test="%{true}"><div>Will Be Executed</div>

</s:elseif>

<s:else> <div>Will Not Be Executed</div>

</s:else>



        //items中是遍历的集合变量,var里面声明集合中的单个对象名称为currentBook

<c:forEach var="currentBook" items="${sessionScope.titles}">
                …//显示书籍信息
</c:forEach>


<s:iterator value="defaultDimensionItemList" status="st" id="infn">

</s>

循环遍历:


1、在jsp中引入标准函数声明
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


2、若要判断集合的大小,则需要引入如下声明
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


3、如何使用jstl判断集合是否为空
${user}为集合,user为集合名
<c:if test="${empty user}">无信息!</c:if>为空
<c:if test="${!empty user}">其它</c:if>非空

json集合判断是否为空:

<c:choose>
    <c:when test="${'[null]' == coverageinfo}">//调试了好久,之前就写的${ null == coverageinfo} or ${empty coverageinfo}
       $(function(){
           var coverageinfo= [];
       });
    </c:when>
    <c:otherwise>
        $(function(){
          var coverageinfo= ${coverageinfo};
        });
    </c:otherwise>
    </c:choose>




4、如何取得集合的大小
${fn:length(sessionScope.键)}
${fn:length(map)}

取得json集合的大小:${covArr}.length;

取得字符串的长度 :${fn:length("hello")}




5、varStatus显示循环变量的状态
例:<c:forEach var="currentFood" items="${sessionScope.foods}" varStatus="status"
<c:if test="${status%2==1}">
.....................
</c:if>
</c:forEach>
其中status这个变量就记录了循环变量的状态




6、如何遍历Map集合
<c:forEach var="foodmap" items="${sessionScope.cart}" varStatus="status">
<c:set var="subtotal" value="${foodmap.value.bean.foodPrice*foodmap.value.quantity}"></c:set>
</c:forEach>
遍历Map集合的值:
foodmap:保存session中的map
foodmap.value:取得map的值,即获取保存在map中的一个对象
要获取对象中的数据,必须用foodmap.value.quantity去点对象的属性(quantity就是对象的属性)





7.遍历数字
  <c:if test="${totalPages>=1}">
      <a href="javascript:void(0)"  onclick="goback()">上一页</a>
       <c:forEach begin="1" end="${totalPages}" var="i">
         <c:choose>
              <c:when test="${i != num}">
                 <a href="${path}/PageServlet?page=${i}&branchlevel=${branchlevel}&branchtype=${branchtype}">${i}</a>
              </c:when>
              <c:otherwise>
                 <a style="background-color: red" href="${path}/PageServlet?page=${i}&branchlevel=${branchlevel}&branchtype=${branchtype}">${i}</a>
              </c:otherwise>
          </c:choose>
       </c:forEach>
      <a href="javascript:void(0)">下一页</a>
   </c:if>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马