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>



 
原文地址:https://www.cnblogs.com/ouyangping/p/6363303.html