EL表达式,JSTL标签库

EL是Expression Language的缩写,意为表达式语言。使用EL表达式能够简化JSP页面中Java代码的编写。格式非常简单,只需要在JSP页面中嵌入${表达式}即可。

入门案例
新建一个JSPDemo4.jsp,使用EL表达式对两个整数进行判断。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL入门案例</title>
</head>
<body>
    <!--el表达式,判断4>3是否正确-->
    ${4>3}
</body>
</html>

JSP忽略EL表达式

JSP是默认支持EL表达式的,如果想要JSP页面忽略EL表达式。可以通过page指令设置。

1.在page指令中添加 isELIgnored="true"
2./${表达式}
忽略EL表达式之后,EL表达式会作为页面内容原样输出。
<%@ page contentType="text/html;charset=UTF-8"  isELIgnored="true" language="java" %>
<html>
<head>
    <title>EL入门案例</title>
</head>
<body>
    <!--el表达式,判断4>3是否正确-->
    /${4>3}
</body>
</html>

EL运算符
EL的运算符和Java基本一致,简单看一下就可以了。

算数运算符:+ - * / %
比较运算符:== != > >= < <=
逻辑运算符:&& || !
空运算符:empty
    功能:用于判断集合、数组、字符串是否为null并且长度是否为0
    ${empty list}

创建JSPDemo5.jsp 演示EL运算符,下面只简单演示一些empty运算符。

<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL运算符</title>
</head>
<body>
    <!--定义ArrayList变量,值为null-->
    <% ArrayList list=null;%>
    <!--判断list是否为null-->
    ${empty(list)}
</body>
</html>

EL获取域值
EL表达式只能从域对象中获取值。存储在域中的值可以是字符串,也可以是对象。

格式1: ${域名称.键名称} 
    pageScope:  从pageContext域中获取数据
    requestScope: 从request域中获取数据
    sessionScope: 从session域中获取数据
    applicationScope: 从application域中获取数据

格式2:  ${键名} 从小到大的域中查找指定键名对应的数据,如果找到了就不再往下找。

域中的值是字符串
创建JSPDemo6.jsp 演示EL获取域对象中的值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL获取域值</title>
</head>
<body>
    <%
        /*向Page域存储数据*/
        pageContext.setAttribute("key1","Hello Page");
        /*向request域中存储数据*/
        request.setAttribute("key2","Hello Request");
        /*向session域中存储数据*/
        session.setAttribute("key3","Hello Session");
        /*向applicatoiin域中存储数据*/
        application.setAttribute("key4","Hello Application");
    %>

    <!--${域名称.键名}:获取指定域中指定键的值-->
    ${pageScope.key1}  <br>
    ${requestScope.key2}  <br>
    ${sessionScope.key3}  <br>
    ${applicationScope.key4}  <br>

    <!--${键名}:按照小到大的域中获取键对应的值-->
    ${key3}
</body>
</html>

域中的值是普通对象
创建JSPDemo7.jsp 演示EL获取域对象中的值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL_域中的值为普通对象</title>
</head>
<body>
    <!--request域中存储Student对象-->
    <%
        Student stu=new Student("张三",20);
        request.setAttribute("stu",stu);
    %>
    <!--EL获取Student对象的属性值-->
    ${requestScope.stu}  <br>
    ${requestScope.stu.name}  <br>
    ${requestScope.stu.age}  <br>
</body>
</html>

域中存储List集合

<%@ page import="servlet.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL_域中的值为普通对象</title>
</head>
<body>

    <!--request域中存储List集合-->
    <%
        ArrayList<Student> list=new ArrayList<>();
        list.add(new Student("张三",20));
        list.add(new Student("李四",30));
        request.setAttribute("list",list);
    %>

    <!--EL获取request域中的list集合,以及其元素-->
    获取list集合:
        ${requestScope.list}  <br>
    获取list集合的0索引元素:
        ${requestScope.list[0].name},
        ${requestScope.list[0].age}  <br>
</body>
</html>

域中存储map集合

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL_域中的值为普通对象</title>
</head>
<body>

    <!--request域中存储List集合-->
    <%
        Map<String,String> map=new HashMap<>();
        map.put("孙悟空","花果山");
        map.put("猪八戒","高老庄");
        map.put("沙和尚","流沙河");
        request.setAttribute("map",map);
    %>

    <!--EL获取request域中的map集合,以及其元素-->
    获取map集合:${requestScope.map}  <br>
    获取map集合中键对应的值:${requestScope.map["孙悟空"]}  <br>

</body>
</html>

EL表达式介绍

  • EL:表达式语言
  • 在JSP2.0规范中加入的语言,也是Servlet规范的一部分
  • 作用:在JSP页面中获取数据,让我们的JSP脱离Java代码块和JSP表达式。
  • 使用EL表达式能够简化JSP页面中Java代码的编写。格式非常简单,只需要在JSP页面中嵌入${表达式}即可。
<%--将用户名存入请求域--%>
<%request.setAttribute("username","zhangsan");%>    <br>

Java代码获取数据:<%out.println(request.getAttribute("username"));%><br>

JSP表达式:<%=request.getAttribute("username")%><br>

EL获取数据:${username}

EL获取域值

EL表达式根据域对象中存储的数据类型不同,获取方式也稍有不同。

  • EL获取基本类型数据
<!--在request域中存数据-->
<% request.setAttribute("num",10); %>
    
<!--获取num的值-->
${num}  <br>
  • EL获取自定义对象
<!--request域中存储Student对象-->
<%
Student stu=new Student("张三",20);
request.setAttribute("stu",stu);
%>

<!--EL获取Student对象的属性值-->
学生对象:${stu}  <br>
学生姓名:${stu.name}  <br>
学生年龄:${stu.age}  <br>
  • EL获取List集合
<!--request域中存储List集合-->
<%
ArrayList<Student> list=new ArrayList<>();
list.add(new Student("张三",20));
list.add(new Student("李四",30));
request.setAttribute("list",list);
%>

<!--EL获取request域中的list集合,以及其元素-->
获取list集合:${list}  <br>
获取list集合的0索引学生:${list[0]}<br>
获取list集合的1索引学生姓名:${list[1].name}<br>
  • EL获取Map集合
<!--request域中存储Map集合-->
<%
Map<String,String> map=new HashMap<>();
map.put("孙悟空","花果山");
map.put("猪八戒","高老庄");
map.put("沙和尚","流沙河");
request.setAttribute("map",map);
%>

<!--EL获取request域中的map集合,以及其元素-->
获取map集合:${map}  <br>
获取map集合中键对应的值:${map["孙悟空"]}  <br>

EL 表达式注意事项

  • EL表达式没有空指针异常
  • EL表达式没有索引越界异常
  • EL表达式没有字符串的拼接

JSTL标签库

JSTL(全称JavaServer Pages Tag Library)意为JSP标准标签库,可以用来简化在JSP页面中Java代码的编写。

导入JSTL相关jar包

img

在JSP页面导入JSTL包

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

常用JSTL标签

<!--if标签:相当于Java的if语句-->
<c:if test="${number%2==0}"> 
    ${number}是偶数
</c:if>

<!--choose标签:相当于Java的switch语句-->
<c:choose>
    <c:when test="${number==1}">星期一</c:when>
    <c:when test="${number==2}">星期二</c:when>
    <c:when test="${number==3}">星期三</c:when>
</c:choose>

<!--foreach标签:相当于Java的for循环-->
<c:forEach begin="0" end="${list.size()}" step="1" var="i">
    <c:if test="${list[i]!=null}">
        ${list[i].name},${list[i].age}<br>
    </c:if>
</c:forEach>

<!--foreach标签:类似Java增强for循环-->
<c:forEach items="${list}" var="element">
    ${element.name},${element.age}<br>
</c:forEach>

JSTL练习

在request域中存储一个元素是Student对象的list集合,使用jstl和el把元素的属性值显示到table表格中。

<%@ page import="java.util.ArrayList" %>
<%@ page import="servlet.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>JSTL+EL综合练习</title>
</head>
<body>
    <!--往request域中存储4个Student对象的list集合-->
    <%
        ArrayList<Student> list=new ArrayList<>();
        list.add(new Student("001","孙悟空",20,"1991-9-10"));
        list.add(new Student("002","猪八戒",20,"1992-12-10"));
        list.add(new Student("003","沙和尚",20,"1993--3-9"));
        list.add(new Student("004","白龙马",20,"1994-4-23"));
        request.setAttribute("list",list);
    %>

    <!--使用jstl的if语句判断list集合是否为空-->
    <c:if test="${not empty list}">
        <table width="500" border="1"  align="center" cellspacing="0">
            <!--使用jstl遍历list集合-->
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>生日</th>
            </tr>
            <c:forEach items="${list}" var="e">
                <tr>
                    <td>${e.id}</td>
                    <td>${e.name}</td>
                    <td>${e.age}</td>
                    <td>${e.birthday}</td>
                </tr>
            </c:forEach>
        </table>
    </c:if>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb 中,使用 EL 表达式和 JSTL 可以实现在 JSP 页面中进行动态数据处理和展示。下面我来分别介绍这两种技术的实现方法。 1. EL 表达式的实现 EL 表达式是一种用于在 JSP 页面中访问 JavaBean 中属性的语言。在 JSP 页面中,我们可以通过 ${} 语法来使用 EL 表达式。例如,我们可以通过 ${user.name} 来获取 JavaBean 中的 name 属性的值。 要在 JavaWeb 中使用 EL 表达式,我们需要完成以下步骤: 1) 在 JSP 页面中引入 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>,指定页面编码为 UTF-8。 2) 在 JSP 页面中引入 JSTL 标签 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。 3) 在 JavaBean 中定义属性,并提供 getter 和 setter 方法。 4) 在 JSP 页面中使用 EL 表达式来访问 JavaBean 的属性值。例如:${user.name}。 2. JSTL 的实现 JSTL 是一组 JSP 自定义标签,用于在 JSP 页面中进行动态数据处理和展示。JSTL 提供了一些常用的标签,例如 core、fmt、sql、xml 和 functions 等。 要在 JavaWeb 中使用 JSTL,我们需要完成以下步骤: 1) 在 JSP 页面中引入 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>,指定页面编码为 UTF-8。 2) 在 JSP 页面中引入 JSTL 标签 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。 3) 在 JSP 页面中使用 JSTL 标签提供的标签来进行动态数据处理和展示。例如,使用 <c:forEach> 标签来遍历一个集合: ``` <c:forEach var="item" items="${list}"> ${item} </c:forEach> ``` 这样就可以在 JSP 页面中使用 EL 表达式和 JSTL 来进行动态数据处理和展示了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值