动态网站开发讲课笔记07:EL和JSTL
文章目录
零、本节学习目标
- 掌握EL的基本语法
- 熟悉EL中常见的隐式对象
- 了解JSTL标签库
- 熟悉JSTL的下载与使用
- 掌握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
- 单击【Finish】按钮
- 修改Artifact名称
- 重新部署项目
- 修改首页
- 启动服务器,查看结果
- 创建
net.huawei.servlet
包,在包里创建ServletDemo01
类
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
页面
<%@ 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
(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的作用域(page
、request
、 session
与 application
)。
(二)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 |
(四)EL中的变量
- 目标:熟悉EL中的变量
1、基本概念
- EL中的变量就是一个基本的存储单元,EL中的变量不用事先定义就可以直接使用。EL可以将变量映射到一个对象上。
2、简单示例
${product}
- 在上述示例中,
product
就是一个变量,通过表达式${product}
就可以访问变量product
的值。
(五)EL中的常量
- 目标:熟悉EL中的常量
1、布尔常量
- 布尔常量用于区分一个事物的正反两面,它的值只有两个,分别是
true
和false
。
2、整型常量
- 整型常量与Java中的十进制的整型常量相同,它的取值范围是Java语言中定义的常量·Long.MIN_VALUE·到·Long.MAX_VALUE·之间,即 [ − 2 63 , 2 63 − 1 ] [-2^{63}, 2^{63}-1] [−263,263−1]之间的整数。