目录
EL表达式 例1
EL表达式 例2
EL表达式与JSTL 例3
EL表达式与JSTL 例4
EL表达式与JSTL 例5
关于这两个知识点(以及jsp之前的指令元素、动作元素),我认为,通过例子来验证概念更为合理,在这里就写几个例子来在测试中学习总结这两个知识点吧。
EL表达式 例1
|
<%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java"%> <html> <head>
<title>Title</title> </head> <body> <% int i = 0 ; %> <%--没有值,说明在此处i不是属性--%> ${i}<br> <%--利用内置对象request设置属性和值,尝试使用EL表达式获取--%> <% request.setAttribute("str","newre"); request.setAttribute("arr",new String[]{"aaa","bbb","ccc","ddd"}); request.setAttribute("list",new ArrayList<>()); ArrayList list = (ArrayList) request.getAttribute("list"); list.add("one"); list.add("two"); list.add("three"); %> <%--${变量名}--%> ${str}<br> <%--结果是一个内存地址--%> ${arr}<br> <%--按下标取值--%> ${arr[0]}${arr[1]}${arr[2]}<br> <%--ArrayList类型的变量--%> ${list}<br> <%--ArrayList类型的变量也要靠下标来取值--%> ${list[0]}<br> <%--也行--%> ${list.get(0)}<br> </body> </html>
|
|
执行结果:
newre
[Ljava.lang.String;@53ef806f
aaabbbccc
[one, two, three]
one
one
|
| 第一行空格不是我空的,而是因为${i}<br>没有值而导致的。 |
EL表达式 例2
|
<%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java"%> <html> <head>
<title>Title</title> </head> <body> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%--EL表达式可以使用函数,但是需要导入标签库(这里的标签库不是JSTL)--%> fn:length("hello world"):${fn:length("hello world")}<br> <%--运算--%> "a"=="b":${"a"=="b"}<br> "a" eq "b":${"a" eq "b"}<br> 10%3:${10%3}<br> <%--判断是否为null--%> empty null:${empty null}<br> </body> </html
|
|
执行结果:
fn:length("hello world"):11
"a"=="b":false
"a" eq "b":false
10%3:1
empty null:true
|
| 基本上较为特殊的运算符就是这么几种,用一用即可。 |
EL表达式与JSTL 例3
|
<%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java"%> <html> <head>
<title>Title</title> </head> <body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--输出--%> <c:out value="this is JSTL"/><br>
<%--使用循环做的九九乘法表--%> <%--初始值为1,循环结束条件是i大于9--%> <c:forEach var="i" begin="1" end="9">
<%--step:一次循环后自增的数--%> <c:forEach var="j" begin="1" end="${i}" step="1">
${i}*${j}=${i*j} </c:forEach>
<br>
</c:forEach>
<%--forTokens能够按条件分割内容,item填写要循环遍历的内容,delims可以写正则表达式,var是变量名--%> <c:forTokens items="a(b)c(d)e)f(g" delims="\\[(,)]\\" var="name">
<c:out value="${name}"/>,
</c:forTokens> </body> </html
|
|
执行结果:

|
EL表达式与JSTL 例4
|
<%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java"%> <html> <head>
<title>Title</title> </head> <body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--${1000}保证了类型是数值--%> <c:set var="va" value="${1000}"/>
<%--相当于switch--%> <c:choose>
<%--test的值是true或false--%> <c:when test="${va > 1000}">
<c:out value="挺好"/><br>
</c:when>
<c:when test="${va < 1000}">
<c:out value="太差"/><br>
</c:when>
<c:otherwise>
<c:out value="刚刚好"/><br>
</c:otherwise>
</c:choose> </body> </html>
|
|
执行结果:
刚刚好
|
EL表达式与JSTL 例5
|
<%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>
<title>Title</title> </head> <body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--var定义了异常名,出现异常时此变量会有值--%> <c:catch var="myException">
<%=10 / 0%> </c:catch>
<c:if test="${myException != null}">
<c:out value="出错了"/>
</c:if> </body> </html>
|
|
执行结果:
出错了
|
其实说白了也很简单,就是一种能够简化<%%>诸如此类的繁琐代码,能用一种相对简洁的方式写出来的一种语法。
相关文章:
-
2021-11-15
-
2022-12-23
-
2021-08-09
-
2021-07-31
-
2022-12-23
-
2022-01-18
-
2021-12-02
-
2022-01-01