zoukankan      html  css  js  c++  java
  • EL和JSTL

    EL(表达式语言)

      表达式语言(Expression Language,EL)是JSP2.0中新增的功能。使用表达式语言,可以方便地访问标志位(page,request,session和application标志位)中的属性内容,可以避免出现许多的Scriptlet代码。语法如下:  

    ${属性名称}

     

      注:Scriptlet:在JSP中,Scriptlet被称为脚本小程序,所有嵌入在HTML代码中的Java程序都必须使用Scriptlet标记起来。一共有三种:

         第一种:<% %>    第二种:<%!%>   第三种:<%= %>

     

      EL表达式可以方便得访问对象中的属性、提交的参数或者是进行各种数学运算,EL表达式最大的特点是如果输出内容为null,则会自动使用空字符串(“”)表示。EL表达式语言可以输出4种范围中的内容,如在不同的属性范围中设置了同一个属性名称,则将按照如下顺序查找:

        page --> request --> session --> application

    <%
      pageContext.setAttribute(“info”,”page范围属性”);
      request.setAttribute(“info”,” request范围属性”);
      session.setAttribute(“info”,” session范围属性”);
      application.setAttribute(“info”,” application范围属性”);
    %>
    ${info}

     

       以上代码的运行结果是:page范围属性。

     

      当然要指定一个要取出属性的范围,可以添加标记

    属性范围

    范例

    说明

    page

    ${pageScpe.属性}

    取出page范围的属性内容

    request

    ${requestScpe.属性}

    取出request范围的属性内容

    session

    ${sessionScpe.属性}

    取出session范围的属性内容

    application

    ${applicationScpe.属性}

    取出application范围的属性内容

     

    接受请求参数

      使用表达式语言可以显示接收的请求参数,功能和request.getParameter()类似,语法如下:

        接收一个参数    ${param.参数名}

        接收一组参数    ${paramValues.参数名称}

      接收到一组参数,如果想要取出,需要分别指定下标。

      对集合的操作(Collection、Map集合中的内容)将集合保存在request范围中,使用EL表达式输出时,直接通过集合的下标即可访问。

    <%
        List list = new Arraylist();
        list.add(“a”);
        list.add(“b”);
        list.add(“c”);
        request.setAttribute(“list”,list);
    %>
    第一个元素:${list[0]}
    第二个元素:${list[1]}
    第三个元素:${list[2]}

     

      以上代码的运行结果是:  

        第一个元素:a

        第二个元素:b

        第三个元素:c

     

    运算符

    算术运算符

    描述

    范例

    结果

    +

    加法

    ${4+6}

    10

    -

    减法

    ${4-6}

    -2

    *

    乘法

    ${4*6}

    24

    /或div

    除法

    ${4/6} 或 ${4 div 6}

    0.666

    %或mod

    取模(余数)

    ${4%6} 或 ${4 mod 6}

    4

     

    特别注意

        “+”在EL中只代表加法,不表示连接;

    ${a+”20”}    //20
    ${a+”20a”} //异常
    ${10/0}  //Infinity
    ${“abc” < “b”} //true 比较的是位置的字符Unicode码
    ${empty ulist} //返回的是boolean,即ulist是否为空。

     

     

     JSTL(JSP标准标签库)

      JSP标准标签库

        使用标签库可以避免过多的Scriptlet代码,但是采用自定义的标签库的做法,非常繁琐且不通用,所以可以借助一些开源工具使用一些公共的标签来完成代码的开发。JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开放源代码的标签组件。核心标签库是JSTL中最重要的部分,也是在开发中最常用的部分,在核心标签库中主要完成的就是流程控制、迭代输出等操作。

      核心标签库中的主要标签

     

    功能分类

    标签名称

    描述

    基本标签

    <c:out>

    输出属性内容

    <c:set>

    设置属性内容

    <c:remove>

    删除指定属性

    <c:catch>

    异常处理

    流程控制

    <c:if>

    条件判断

    <c:choose>

    多条件判断,可设置<c:when>和<c:otherwise>标签

    迭代标签

    <c:forEach>

    输出数组,集合

    <c:forTokens>

    字符串拆分及输出操作

    包含标签

    <c:import>

    将指定的路径包含到当前页

    生成URL标签

    <c:url>

    根据路径和参数生成一个新URL

    客户端跳转

    <c:redirect>

    客户端跳转

     

      使用核心标签库之前,必须在JSP页面中引入标签库配置文件。

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

     

    <c:if>标签

      语法:

    <c:if test=”判断条件” var=”存储判断结果”>
    </c:if>

     

      例子

    <c:if test=”${username != null}”>
            欢迎,${username}
    </c:if>

     

     

    <c:choose>标签

       <c:if>的功能只是针对一个条件的判断,如果要判断多个条件,可以使用<c:choose>标签,<c:choose>只能作为<c:when>和<c:otherwise>的父标签出现,不能单独使用。

      例子:

    <% 
      request.setAttribute(“num”,12);
    %>
    <c:choose> <c:when test=”${num == 10}”> num属性的值为10 </c:when>   <c:when test=”${num == 20}”> num属性的值为20 </c:when> <c:otherwise> 没有一个条件满足 </c:otherwise> </c:choose>

     

     以上代码输出结果为:没有一个条件满足

       <c:otherwise>标签是当所有的<c:when>都不满足时执行的,所以编写时一定要放在所有<c:when>标签的最后。

     

    <c:forEach>标签

      <c:forEach>标签的主要功能为循环控制,可以将集合中的成员进行迭代输出,功能与Iterator接口类似。

    <c:forEach [var=”每一个对象的属性名称”] items=集合” [varStatus=”存放当前对象的成员信息”] [begin=”集合的开始输出位置”] [end=”集合的结束输出位置”] [step=”每次增长的步长]>
      标签体
    </c:forEach>

       varStatus属性可以用来当做集合的编号具体编写如下:

    <%
        String info[] = {"a", "b", "c"};
        request.setAttribute("info",info);
    %><c:forEach var ="s" items="${info}" varStatus="vs">
        ${vs.count} --> ${s}、
    </c:forEach>

      以上代码的输出结果是:

      1 --> a、2 --> b、3 --> c 

      例子:

    <%
        String info[] = {“a”, “b”, “c”, “d”, “e”, “f”, “g”};
        request.setAttribute(“info”,info);
    %>    
    例一:
    <c:forEach var =”s” items=”${info}” >
        ${s}、
    </c:forEach>
    例二:
    <c:forEach var =”s” items=”${info}” step=”2”>
        ${s}、
    </c:forEach>
    例三:
    <c:forEach var =”s” items=”${info}” begin=”1” end=”2”>
        ${s}、
    </c:forEach>

     

    以上代码输出结果为:

      例一:a、b、c、d、e、f、h、

           例二:a、c、e、h、

           例三:b、c、

     

      使用<c:forEach>输出时,不仅可以输出List,也可以输出Set,即只要是Collection接口的子接口或类都可以输出。<c:forEach>也可以输出Map集合,但是Map集合中的元素都是按照键值对来存储的,要想得到key和value,则需要通过元素提供的getKey()和getValue()方法。

      例子:

    <%
        Map m = new HaspMap();
        m.put(“1”,”first”);
        m.put(“2”,”second”);
        request.setAttribute(“m”,m);
    %>    
    <c:forEach var =”s” items=”${m}” >
        ${m.key} --> ${m.value}
    </c:forEach>

     

    以上代码输出结果为:

      1 --> first

      2 --> second

     

  • 相关阅读:
    java 线程的终止与线程中断
    java 线程协作 wait(等待)与 notiy(通知)
    java 线程协作 yield()
    java 线程协作 join()
    python学习 文件操作
    linux 学习 常用命令
    linux 学习 设置固定网Ip
    web 安全
    MySQL数据物理备份之tar打包备份
    MySQL数据物理备份之lvm快照
  • 原文地址:https://www.cnblogs.com/ghq120/p/8168852.html
Copyright © 2011-2022 走看看