> 文章列表 > 动态网站开发讲课笔记07:EL和JSTL

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

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

文章目录

  • 零、本节学习目标
  • 一、EL
    • (一)EL基本语法
      • 1、EL的概念
      • 2、EL的语法
      • 3、案例演示
        • (1)用EL读取保存的信息
        • (2)使用Java代码与EL获取信息的对比
      • 4、EL基本语法的特点
    • (二)EL中的标识符
      • 1、EL中标识符的规范
      • 2、EL中标识符的示例
        • (1)合法标识符
        • (2)非法标识符
    • (三)EL中的关键字
    • (四)EL中的变量
      • 1、基本概念
      • 2、简单示例
    • (五)EL中的常量
      • 1、布尔常量
      • 2、整型常量
  • 二、EL隐式对象
  • 三、JSTL
  • 四、JSTL中的Core标签库

零、本节学习目标

  1. 掌握EL的基本语法
  2. 熟悉EL中常见的隐式对象
  3. 了解JSTL标签库
  4. 熟悉JSTL的下载与使用
  5. 掌握Core标签库中的常用标签

前面我们学习了JSP页面,在JSP开发中,为了获取Servlet域对象中存储的数据,经常需要书写很多Java代码,这样的话会使JSP页面混乱。为了降低JSP页面的复杂度,增强代码的重用性,Sun公司制定了一套标准标签库JSTL,同时为了获取Servlet域对象中存储的数据,JSP2.0规范还提供了EL(表达式语言),大大降低了开发的难度。本节将针对EL以及JSTL标签库进行详细讲解。

一、EL

(一)EL基本语法

  • 目标:掌握EL的基本语法

1、EL的概念

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

2、EL的语法

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

3、案例演示

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

  • 创建Java Enterprise项目 - ELJSTLDemo
    动态网站开发讲课笔记07:EL和JSTL
  • 单击【Finish】按钮
    动态网站开发讲课笔记07:EL和JSTL
  • 修改Artifact名称
    动态网站开发讲课笔记07:EL和JSTL
  • 重新部署项目
    动态网站开发讲课笔记07:EL和JSTL
  • 修改首页
    动态网站开发讲课笔记07:EL和JSTL
  • 启动服务器,查看结果
    动态网站开发讲课笔记07:EL和JSTL
  • 创建net.huawei.servlet包,在包里创建ServletDemo01
    动态网站开发讲课笔记07:EL和JSTL
package net.huawei.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页面
    动态网站开发讲课笔记07:EL和JSTL
<%@ 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>
  • 启动服务器,访问http://localhost:8080/ELJSTLDemo/demo01
    动态网站开发讲课笔记07:EL和JSTL

(2)使用Java代码与EL获取信息的对比

  • 由上图中可知,使用EL同样可以成功获取Servlet中存储的数据,但EL明显简化了JSP页面的书写,使程序简洁易维护。另外,当域对象里面的值不存在时,使用EL获取域对象里面的值时返回空字符串;而使用Java方式获取时,如果返回值是null,会报空指针异常,所以在实际开发中推荐使用EL的方式获取域对象中存储的数据。

4、EL基本语法的特点

(1)EL可以与JavaScript语句结合使用。
(2)EL可以自动进行类型转换。如果想通过EL获取两个字符串数值(如number1和number2)的和,可以直接通过“+”符号进行连接(如$ {number1 + number2})。
(3)EL不仅可以访问一般变量,还可以访问JavaBean中的属性、嵌套属性和集合对象。
(4)在EL中,可以执行算术运算、逻辑运算、关系运算和条件运算等。
(5)在EL中,可以获取pageContext对象,进而获取其他内置对象。
(6)在使用EL进行除法运算时,如果除数为0,则返回表示无穷大的Infinity,而不返回错误。
(7)在EL中,可以访问JSP的作用域(pagerequestsessionapplication)。

(二)EL中的标识符

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

1、EL中标识符的规范

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

2、EL中标识符的示例

(1)合法标识符

username
username123
user_name
_userName

(2)非法标识符

123username
or
user"name
pageContext

(三)EL中的关键字

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

(四)EL中的变量

  • 目标:熟悉EL中的变量

1、基本概念

  • EL中的变量就是一个基本的存储单元,EL中的变量不用事先定义就可以直接使用。EL可以将变量映射到一个对象上。

2、简单示例

${product}
  • 在上述示例中,product就是一个变量,通过表达式${product}就可以访问变量product的值。

(五)EL中的常量

  • 目标:熟悉EL中的常量

1、布尔常量

  • 布尔常量用于区分一个事物的正反两面,它的值只有两个,分别是truefalse

2、整型常量

  • 整型常量与Java中的十进制的整型常量相同,它的取值范围是Java语言中定义的常量·Long.MIN_VALUE·到·Long.MAX_VALUE·之间,即 [ − 2 63 , 2 63 − 1 ] [-2^{63}, 2^{63}-1] [263,2631]之间的整数。

二、EL隐式对象

三、JSTL

四、JSTL中的Core标签库

Free Fonts