EL与JSTL的介绍与使用

    科技2024-01-23  104

    文章目录

    什么是ELEL——获取数据EL——执行运算EL——获取web开发常用对象什么是JSTLJSTL——通用标签JSTL——if标签JSTL——foreach标签JSTL其他标签库

    什么是EL

    Expression Language表达式语言,EL和JSTL一起使用取代JSP页面中嵌入java代码写法。

    EL作用

    从域对象或参数中取值并输出到页面中。

    EL特点

    EL表达式自带类型转换EL表达式自带非空判断

    EL写法 ${ };

    EL——获取数据

    EL表达式语句在执行的时候,会调用pageContext.findAttribute()方法。分别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回“”(不是null,是空的字符串),EL获取数据需要在四个作用范围中。

    <% pageContext.setAttribute("name","张三"); request.setAttribte("name","李四"); session.setAttribte("name","王五"); application.setAttribte("name","赵六"); %> ${pageScope.name}; ${requestScope.name}; ${sessionScope.name}; ${applicationScope.name}; <h3>EL的简写</h3> ${ name } <!-- 底层调用pageContext.findAttribute()-->

    EL获取数组和集合数据:

    <h3>EL获取数组数据</h3> <% String[] arrs = {"aa","bb","cc"}; pageContext.setAttribute("arrs",arrs); %> ${ arrrs[0] } ${ arrrs[1] } ${ arrrs[2] } <h3>EL获取List集合数据</h3> <% List<String> list = new ArrayList<String>(); list.add("aa"); list.add("bb"); list.add("cc"); pageContext.setAttribute("list",list); %> ${ list[0] } ${ list[1] } ${ list[2] } <h3>EL获取Map集合数据</h3> <% Map<String,Integer> map = new HashMap<String,Integer>(); map.put("111",aaa); map.put("222",bbb); map.put("333.444",ccc); pageContext.setAttribute("map ",map); %> ${ map.111 } ${ map.222 } ${ map["333.444"] }

    EL——执行运算

    <%pageContext.setAttribute("n1","10"); pageContext.setAttribute("n1","10"); %> <h3>执行算数运算</h3> ${ n1+n2 } <h3>执行关系运算,返回true or false</h3> ${ n1 < n2} -- ${n1 lt n2} <br /> ${ n1 > n2} -- ${n1 gt n2} <br /> ${ n1 == n2} -- ${n1 eq n2} <br /> ${ n1 >= n2} -- ${n1 ge n2} <br /> ${ n1 <= n2} -- ${n1 le n2} <br /> ${ n1 != n2} -- ${n1 ne n2} <br /> <%pageContext.setAttribute("n3","30"); pageContext.setAttribute("n4","40"); %> <h3>执行逻辑运算</h3> ${(n1 < n2) && (n3 < n4)} -- ${(n1 < n2) and (n3 < n4)}<br/> ${(n1 < n2) || (n3 < n4)} -- ${(n1 < n2) or (n3 < n4)}<br/> ${!(n1 < n2)} -- ${not(n1 < n2)}<br/> <h3>执行三元运算</h3> ${n1 < n2? "n1小于n2":"n1不小于n2"} <h3>空运算符</h3> ${empty n1}

    EL——获取web开发常用对象

    EL表达式定义了11个web开发常用对象。使用这些对象可以很方便的获取web开发中的一些常见对象,并可以读取这些对象中的数据。

    什么是JSTL

    JSP StandardTag Library,JSP标准标签库。

    主要和EL一起取代传统页面上直接嵌入java代码的写法,提升程序可读性、维护性和方便性。使用需要引入jstl.jar以及standard.jar两个jar包。JSP页面引入标签库(固定写法,C:核心标签库) <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    JSTL——通用标签

    set:设置指定范围内的变量值out:计算表达式并将结果输出显示remove:删除指定范围内的变量 <% pageContext.setAttribute("name","aaa"); %> <c:set var= "example" value="${100+1}" scope="session" /> <c:out value="${example}"/> <c:remove var= "example" scope="session"/> ${ name }

    JSTL——if标签

    if标签的使用 <c:set value="10" var="i" scope="page"></c:set> <c:if test="${ i >= 10}"> <font color="red">i大于等于10</font> </c:if> <c:if var="flag" test="${ i < 10}" scope="page"> <font color="blue">i小于10</font> </c:if> <c:if test="${ flag }"> flag为true </c:if>

    if标签的属性

    test属性:条件var属性:将test中的条件的值赋给一个变量,在var中定义变量scope属性:作用范围(域) <c:if test="${empty loginUser }" var="islogin" scope="session"> <!--test:判断条件 可以将结果保存在域中 var是key scope是域 --> <c:redirect url="testEL.jsp"></c:redirect><!--配合跳转标签使用 --> </c:if> <c:if test="${not islogin}"> <!--对之前保存的判断结果取反 完成else结构 --> 已登录 </c:if>

    JSTL——foreach标签

    foreach标签的使用 <h3>遍历数组</h3> <% String[] arrs = {"aa","bb","cc"}; pageContext.setAttribute("arrs",arrs); %> <c:forEach var="s" items="${ arrs }"> ${ s } </c:forEach> <h3>遍历List集合</h3> <% List<String> list = new ArrayList<String>(); list.add("aa"); list.add("bb"); list.add("cc"); pageContext.setAttribute("list",list); %> <c:forEach var="s" items="${ list }"> ${ s } </c:forEach> <h3>遍历Map集合</h3> <% Map<String,Integer> map = new HashMap<String,Integer>(); map.put("111",aaa); map.put("222",bbb); map.put("333",ccc); pageContext.setAttribute("map ",map); %> <c:forEach var="entry" items="${ map }"> ${ entry.key } -- ${ entry.value } </c:forEach> <h3>遍历从110</h3> <c:forEach var="i" begin="1" end="10" step="1"> ${ i } </c:forEach> <h3>遍历100200,每次加2,到第三个数的时候将该数字变蓝</h3> <c:forEach var="i" begin="100" end="200" step="2" varStatus="status"> <c:if test="${ status.count % 3 == 0 }"> <font color="blue">${ i }</font> </c:if> <c:if test="${ status.count % 3 != 0 }"> ${ i } </c:if> </c:forEach> <c:forEach items="${listEitity }" var="myentity"> <!--items是遍历的集合 var是每次遍历到的对象 每次会存在域中 --> <tr><td>${myentity.ename }</td><td>${myentity.eage }</td><td>${myentity.eaddr }</td></tr> <!--遍历中取值直接使用遍历到并存在域中的key,通过el表达式取值 --> </c:forEach>

    JSTL其他标签库

    Processed: 0.031, SQL: 8