• EL 表达式


    1、语法结构
    ${expression}
    2、[ ]与.运算符
    EL 提供“.“和“[ ]“两种运算符来存取数据。
    当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:
    ${ user. My-Name}应当改为${user["My-Name"]}
    如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
    ${sessionScope.user[data]}中data 是一个变量
    3、变量
    EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
    因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找
    假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
     
    1、例如,
    < %=request. getParameter(“username”)% > 等价于 ${ param. username }
    2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。
    <%=user.getAddr( ) %> 等价于 ${user.addr}。
    3、例如:
    <%=request.getAttribute(“userlist”) %> 等价于$ { requestScope.userlist }
    4、例如,原理如上例3。
    ${requestScope.userlist} 1
    ${sessionScope.userlist} 2
    ${applicationScope.userlist} 3
    ${pageScope.userlist} 4
    ${uselist} 含义:执行顺序为4 1 2 3。
    “.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。
    4、例如,
    <%=user.getAddr( ) %> 等价于 ${user.addr}
    第一句前面的user,为一个变量。
    第二句后面user,必须为在某一个范围里的属性。
     
    C:CHOOSE WHEN OTHERWISE
     

    <c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。

    switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。

    语法格式

    <c:choose>
        <c:when test="<boolean>"/>
            ...
        </c:when>
        <c:when test="<boolean>"/>
            ...
        </c:when>
        ...
        ...
        <c:otherwise>
            ...
        </c:otherwise>
    </c:choose>

    属性

    • <c:choose>标签没有属性。
    • <c:when>标签只有一个属性,在下表中有给出。
    • <c:otherwise>标签没有属性。
    <c:when>标签的属性如下:
    属性描述是否必要默认值
    test 条件


        

    <c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。

    举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。

    <c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。


    语法格式

    <c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

    属性

    <c:out>标签有如下属性:

    属性描述是否必要默认值
    value 要输出的内容
    default 输出的默认值 主体中的内容
    escapeXml 是否忽略XML特殊字符 true


    <c:forEach>, <c:forTokens> 标签

    这些标签封装了Java中的for,while,do-while循环。

    相比而言,<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。

    <c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。


    forEach 语法格式

    <c:forEach
        items="<object>"
        begin="<int>"
        end="<int>"
        step="<int>"
        var="<string>"
        varStatus="<string>">
    
        ...

    forTokens 语法格式

    <c:forTokens
        items="<string>"
        delims="<string>"
        begin="<int>"
        end="<int>"
        step="<int>"
        var="<string>"
        varStatus="<string>">

    属性

    <c:forEach>标签有如下属性:

    属性描述是否必要默认值
    items 要被循环的信息
    begin 开始的元素(0=第一个元素,1=第二个元素) 0
    end 最后一个元素(0=第一个元素,1=第二个元素) Last element
    step 每一次迭代的步长 1
    var 代表当前条目的变量名称
    varStatus 代表循环状态的变量名称

    <c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:

    属性描述是否必要默认值
    delims 分隔符
     

    <c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:

    属性描述是否必要默认值
    delims 分隔符

    <c:forEach>实例演示

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
    <head>
    <title>c:forEach 标签实例</title>
    </head>
    <body>
    <c:forEach var="i" begin="1" end="5">
       Item <c:out value="${i}"/><p>
    </c:forEach>
    </body>
    </html>

    运行结果如下:

    Item 1
    Item 2
    Item 3
    Item 4
    Item 5

    <c:forTokens>演示实例

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
    <head>
    <title>c:forTokens 标签实例</title>
    </head>
    <body>
    <c:forTokens items="google,runoob,taobao" delims="," var="name">
       <c:out value="${name}"/><p>
    </c:forTokens>
    </body>
    </html>



     
  • 相关阅读:
    2015年12月28日 Java基础系列(六)流
    黑客攻防技术宝典Web实战篇(三)web攻击方式总结
    黑客攻防技术宝典Web实战篇(二)工具篇DVWA Web漏洞学习
    黑客攻防技术宝典Web实战篇(二)工具篇
    黑客攻防技术宝典Web实战篇(一)Web应用程序技术基础
    Web渗透测试使用Kali Linux(一)渗透测试概要及环境部署
    2015年12月13日 spring初级知识讲解(五)Spring持久化
    2015年12月13日 spring初级知识讲解(四)面向切面的Spring
    2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客
    2015年12月10日 spring初级知识讲解(三)Spring消息之activeMQ消息队列
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6363303.html
Copyright © 2020-2023  润新知