自学内容网 自学内容网

EL表达式和JSTL表达式(详解)

1.EL表达式:

导包:

isELIgnored="false"就可以用了,这个包是用的tomcat内置的,如果不行的话,就需要导包

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
El表达式默认对JavaBean对象的getter方法进行调用

在 JSP 中,可以使用 EL 表达式获取 User 对象的 name 属性值:

${user.name} 实际上会调用 user 对象的 getName() 方法,获取 name 属性的值。

${user.name}
当出现多个作用域key相同时:

会由小到大的范围进行找

页面作用域: ${pageScope.xx}
请求作用域: ${requestScope.xx}
会话作用域: ${sessionScope.xx}
程序作用域: ${applicationScope.xx}

EL表达式的运算:

empty运算:

在 EL 表达式中,empty 运算符用于检查一个值是否为空或为 null。它可以用于各种类型的值,包括字符串、集合、数组和对象等。empty 运算符返回一个布尔值,如果值为空或为 null,则返回 true;否则返回 false。

<%-- 使用 empty 运算符检查各种类型的值 --%>
 
<p>Is name empty? ${empty person.name}</p>        <%-- 输出:false --%>
 
<p>Is age empty? ${empty person.age}</p>          <%-- 输出:false --%>
 
<p>Is hobbies empty? ${empty person.hobbies}</p>  <%-- 输出:true,因为 hobbies 属性尚未设置 --%>

中括号运算:

中括号运算用于访问集合(数组、List、Map等)类型的数据。

1.集合对象

${集合名.get[下标].属性名}

    <p>第一个人:${peopleList.get[0].name},年龄:${peopleList.get[0].age}</p>
    <p>第二个人:${peopleList.get[1].name},年龄:${peopleList.get[1].age}</p>
    <p>第三个人:${peopleList.get[2].name},年龄:${peopleList.get[2].age}</p>
2.数组,集合,Map

${名字[下标]}

${map[key]}

数组:
   <% String[] fruits = {"Apple", "Banana", "Orange"}; %>
   <p>First fruit: ${fruits[0]}</p>   <%-- 输出:First fruit: Apple --%>
   <p>Last fruit: ${fruits[2]}</p>    <%-- 输出:Last fruit: Orange --%>

list集合:
   <% List<String> colors = new ArrayList<String>(); %>
   <% colors.add("Red"); %>
   <% colors.add("Green"); %>
     
   <p>First color: ${colors[0]}</p>  <%-- 输出:First color: Red --%>
   <p>Last color: ${colors[2]}</p>   <%-- 输出:Last color: Blue --%>

Map集合: 
   <% Map<String, Integer> scores = new HashMap<String, Integer>(); %>
   <% scores.put("Alice", 85); %>
   <% scores.put("Bob", 92); %>
   <% scores.put("Charlie", 78); %>
 
   <p>Alice's score: ${scores["Alice"]}</p>  
                       <%-- 输出:Alice's score: 85 --%>

EL表达式运算符:

2.JSTL格式化标签:<fmt:formatDate>

参数:

使用指定的风格或模式格式化日期和时间

<fmt:formatDate value="${provider.creationDate}" pattern="yy-MM-dd hh:mm:ss" />
 

2.JSTL核心标签:

JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。

一共13个标签

1.表达式控制标签:out、set、remove、catch

2.流程控制标签:if、choose、when、otherwise

3.循环标签:forEach、forTokens

4.URL操作标签:import、url、redirect

使用标签时,要在前面加上

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>

1. <c:out>

用来显示数据对象(字符串、表达式)的内容或结果

输出到页面

使用Java脚本的方式为:
<% out.println("hello") %>  <% =表达式 %>

使用JSTL标签:
<c:out value="字符串">,例如:

2. <c:set>

用于将变量存取于 JSP 范围中或 JavaBean 属性中

<c:set var="variableName" value="someValue" [scope="page|request|session|application"] />

设置简单值:
<c:set var="username" value="张三" scope="session" />
使用标签体设置值:message的值设为welcome
<c:set var="message" scope="request">
    welcom
</c:set>

设置属性值:给user的name属性赋值,相当于setName
<c:set target="${user}" property="name" value="李四" />

3.<c:remove>

主要用来从指定的 jsp 范围内移除指定的变量。

删除session作用域中的username变量
<c:remove var="username" scope="session" />

4.<c:catch>

用来处理 JSP 页面中产生的异常,并存储异常信息

如果抛异常,则异常信息保存在变量 name1 中。
<c:catch var="name1">

      容易产生异常的代码

</c:catch>

5.<c:if>

如果标签之间没有东西就会输出true或者false

<c:if test="条件1" var="name" [scope="page|request|session|application"]></c:remove>
输出布尔值
<c:if test="${person.name == '赵五'}" var="name2"></c:if>

满足条件则输出中间的内容
<c:if test="${user.age > 18}">
    您已成年!
</c:if>

满足条件并且赋值到变量isAdult
<c:if test="${user.age > 18}" var="isAdult" scope="request">
    <p>成年人的相关信息...</p>
</c:if>

<p>是否成年: ${isAdult}</p>

6. <c:choose> <c:when> <c:otherwise>

三个标签通常嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次

    <c:set var="score">85</c:set>
    <c:choose>
    <c:when test="${score>=90}">
    你的成绩为优秀!
    </c:when>
    <c:when test="${score>=70&&score<90}">
    您的成绩为良好!
    </c:when>
    <c:when test="${score>60&&score<70}">
    您的成绩为及格
    </c:when>
    <c:otherwise>
    对不起,您没有通过考试!
    </c:otherwise>
    </c:choose>

7.<c:forEach>

语法:

1. items 属性:必须属性,用于指定要遍历的集合或数组。可以是 List、Set、Map、数组等。

2. var 属性: 必须属性,用于指定一个变量名,该变量将在每次迭代中保存当前元素的值。

3. varStatus 属性:可选属性,用于指定一个变量名,该变量将保存当前迭代的状态信息,包括索引、计数等。状态信息是一个 javax.servlet.jsp.jstl.core.LoopTagStatus 对象。表示下标那种

4. begin 属性:可选属性,用于指定开始迭代的索引位置,默认为 0。

5. end 属性:可选属性,用于指定结束迭代的索引位置(包含)。

6. step 属性:可选属性,用于指定每次迭代的步长,默认为 1。

<c:forEach var="name" items="Collection" varStatus="statusName" 
                                 begin="begin" end="end" step="step"></c:forEach>

 <c:forEach var="provider" items="${requestScope.list}">
        <tr>
            <td>${provider.id}</td>
            <td>${provider.proCode}</td>
            <td>${provider.proName}</td>
            <td>${provider.proDesc}</td>
        </tr>
    </c:forEach>

8.<c:forTokens>

用于浏览字符串,并根据指定的字符串截取字符串
语法:

<c:forTokens items="stringOfTokens"
 delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>

JSTL函数:

1.fn:indexOf()

返回指定字符串在输入字符串中出现的位置

${fn:indexOf(<原始字符串>,<子字符串>)}

2.fn:join()

将数组中的元素合成一个字符串然后输出

${fn:join([数组], <分隔符>)}

3.fn:length()

返回字符串长度

${fn:length(string)}

4.fn:replace()

将输入字符串中指定的位置替换为指定的字符串然后返回

${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}

5.fn:split()

将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回

${fn:split(<带分隔符的字符串>, <分隔符>)}

6.fn:substring()

返回字符串的子集

${fn:substring(<string>, <beginIndex>, <endIndex>)}

7.fn:trim()

移除首位的空白符

${fn:trim(<string>)}

原文地址:https://blog.csdn.net/qq_62859013/article/details/143628835

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!