动态网站开发讲课笔记10:EL和JSTL

一、EL

1、EL的概念

  • EL全称为Expression Language,即表达式语言。它是JSP 2.0引入的一个新内容。EL可以简化JSP开发中的对象引用,从而规范页面代码,增加程序的可读性及可维护性。EL为不熟悉Java语言页面开发的人员提供了一个开发JavaWeb应用的新途径。

2、EL的语法

  • EL的语法非常简单,都是以“ ”符号开始,以“”符号结束的语法格式: {”符号开始,以“}”符号结束的 语法格式: 符号开始,以符号结束的语法格式:{表达式}
    表达式”中的表达式必须符合 E L 语法要求。由于 E L 的语法以“ {表达式}”中的表达式必须符合EL语法要求。 由于EL的语法以“ 表达式中的表达式必须符合EL语法要求。由于EL的语法以{" 开头,如果在JSP网页中要显示“${“字符串,必须在前面加上“\”符号,即“${”,或者写成“KaTeX parse error: Expected '}', got 'EOF' at end of input: {{}“, 也就是用表达式输出“${” 符号。

3、案例演示

(1)用EL读取保存的信息

  • 创建Java Enterprise项目 - ELJSTLDemo
    在这里插入图片描述

  • 修改Artifact名称
    在这里插入图片描述

  • 重新部署项目
    在这里插入图片描述

  • 修改首页
    在这里插入图片描述

  • 启动服务器,查看结果
    在这里插入图片描述

  • 创建net.hdl.servlet包,在包里创建ServletDemo01类
    在这里插入图片描述

package net.hdl.servlet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 功能:保存request属性,请求转发到指定页面
 * 作者:胡德兰
 * 日期:2023年04月20日
 */
@WebServlet(name = "ServletDemo01", urlPatterns = "/demo01")
public class ServletDemo01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 保存request属性
        request.setAttribute("username", "无心剑");
        request.setAttribute("password", "903213");
        // 获取请求转发器,转发到`demo01.jsp`页面
        RequestDispatcher dispatcher = request.getRequestDispatcher("/demo01.jsp");
        // 请求转发
        dispatcher.forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
}

  • 在web目录里创建demo01.jsp页面
    在这里插入图片描述
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo01</title>
</head>
<body>
使用JSP表达式获取属性:<br />
用户名:<%=request.getAttribute("username")%> <br />
密码:<%=request.getAttribute("password")%> <br />
<hr />
使用EL获取属性:<br />
用户名:${username} <br />
密码:${password} <br />
</body>
</html>


  • 启动服务器
    在这里插入图片描述

二、EL中的标识符

  • 目标:熟悉EL中的标识符

1、EL中标识符的规范

  • 在EL中,经常需要使用一些符号标记一些名称,如变量名、自定义函数名等,这些符号被称为标识符。EL中的标识符可以由任意的大小写字母、数字和下划线组成,为了避免出现非法的标识符,在定义标识符时还需要遵循以下规范。
  • (1)不能以数字开头。
  • (2)不能是EL中的关键字,如and、or、gt等。
  • (3)不能是EL隐式对象,如pageContext。
  • (4)不能包含单引号(')、双引号(")、减号(-)和正斜线(/)等特殊字符。

2、EL中标识符的示例

(1)合法标识符
username
username123
user_name
_userName

  • (2)非法标识符
    123username
    or
    user"name
    pageContext

三、EL中的关键字

  • 目标:熟悉EL中的关键字
  • 关键字就是编程语言里事先定义好并赋予了特殊含义的单词,和其他语言一样,EL中也定义了许多关键字,如false、not等。
  • EL所有的关键字
1 2 3 4
and eq gt true
instanceof or ne le
false empty not lt
ge null div mod