目录

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标准标签库练习--20190919

 

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的值是truefalse--%>
        <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
猜你喜欢
  • 2022-12-23
  • 2021-08-24
  • 2021-09-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案