复习 EL 表达式与 JSTL

1.1 EL 表达式

1.1.1 概述

  EL(Expression Language)是为了使 JSP 写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 JSP 的代码更加简化。

1.1.2 EL 表达式语法

  EL 表达式允许指定一个表达式来表示属性值。一个简单的表达式语法:${表达式}. EL中通用的操作符是 .{} 。这两个操作符允许通过内嵌的 JSP 对象访问各种各样的 JavaBean 属性。注意:EL 表达式的实质是从域中取值.

示例

<%--
  Created by IntelliJ IDEA.
  User: Demo_Null
  Date: 2020/6/23
  Time: 17:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<%
    ArrayList<String> list = new ArrayList<>();
    list.add("001");
    list.add("002");
    list.add("003");
    list.add("004");

    request.setAttribute("list",list);
%>

list 的第一个元素为 ${list.get(0)}

</body>
</html>

复习 EL 表达式与 JSTL_第1张图片

1.1.3 基本操作符

操作符 描述
. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ 、 div
% 、mod 取模
== 、eq 测试是否相等
!= 、ne 测试是否不等
< 、lt 测试是否小于
> 、gt 测试是否大于
<= 、le 测试是否小于等于
>= 、ge 测试是否大于等于
&& 、and 测试逻辑与
|| 、or 测试逻辑或
! 、not 测试取反
empty 测试是否空值

1.1.4 EL 隐式对象

隐式对象 描述
pageScope page 作用域
requestScope request 作用域
sessionScope session 作用域
applicationScope application(ServletContext)作用域
param Request 对象的参数,字符串
paramValues Request 对象的参数,字符串集合
header HTTP 信息头,字符串
headerValues HTTP 信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie 值
pageContext 当前页面的 pageContext 可取 JSP 其他八个内置对象

1.1.5 EL 获取值

对象

// 本质上会去调用对象的getter方法
${域名称.键名.属性名}

List 集合

${域名称.键名[索引]}

Map 集合

${域名称.键名.key名称}
${域名称.键名["key名称"]}'


1.2 JSTL

1.2.1 概述

  JSTL 的英文全称是 JavaServer Pages Standard Tag Library,中文全称是 JSP 标准标识库。JSTL 技术标准是由 JCP(Java Community Process)组织的 JSR052 专家组发布,Apache 组织将其列入 Jakarta 项目,Sun 公司将 JSTL 的程序包加入互联网服务开发工具包内(Web Services Developer Pack(WSDP)),作为 JSP 技术应用的一个标准。
  JSTL 标签是基于 JSP 页面的,这些标签可以插入在 JSP 代码中,本质上 JSTL 也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL 的目标是简化 JSP 页面的设计。对于页面设计人员来说,使用脚本语言操作动态数据是比较困难的,而采用标签和表达式语言则相对容易,JSTL 的使用为页面设计人员和程序开发人员的分工协作提供了便利。
  JSTL 标识库的作用是减少 JSP 文件的 Java 代码,使 Java 代码与 HTML 代码分离,所以 JSTL 标识库符合 MVC 设计理念。MVC 设计理念的优势是将动作控制、数据处理、结果显示三者分离。

1.2.2 JSTL 的使用

JSTL 的五大标签库

库名 URI 前缀
Core(核心库) http://java.sun.com/jsp/jstl/core c
I18N(国际化) http://java.sun.com/jsp/jstl/fmt fmt
SQL http://java.sun.com/jsp/jstl/sql sql
XML http://java.sun.com/jsp/jstl/xml x
Functions http://java.sun.com/jsp/jstl/functions fn

使用标签库

直接使用 taglib 引入会报红,需要先引入 jstl 的 jar 包

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

1.2.3 核心标签库

标签 描述
用于在 JSP 中显示数据,就像 <%= … >
用于保存数据
用于删除数据
用来处理产生错误的异常状况,并且将错误信息储存起来
与我们在一般程序中用的 if 一样
本身只当做 的父标签
的子标签,用来判断条件是否成立
的子标签,接在 标签后,当 标签判断为 false 时被执行
检索一个绝对或相对 URL,然后将其内容暴露给页面
基础迭代标签,接受多种集合类型
根据指定的分隔符来分隔内容并迭代输出
用来给包含或重定向的页面传递参数
重定向至一个新的 URL
使用可选的查询参数来创造一个 URL

示例

<%--
  Created by IntelliJ IDEA.
  User: Demo_Null
  Date: 2020/6/23
  Time: 17:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
	<head>
	    <title>test</title>
	</head>
	<body>
		<%
		    List list = new ArrayList();
		    list.add(new User("张三",23,new Date()));
		    list.add(new User("李四",24,new Date()));
		    list.add(new User("王五",25,new Date()));
		
		    request.setAttribute("list",list);
		%>
		
		<table border="1" width="500" align="center">
		    <tr>
		        <th>编号</th>
		        <th>姓名</th>
		        <th>年龄</th>
		        <th>生日</th>
		    </tr>
		
		    <c:forEach items="${list}" var="user" varStatus="s">
		        <c:if test="${s.count % 2 != 0}">
		            <tr bgcolor="red">
		                <td>${s.count}</td>
		                <td>${user.name}</td>
		                <td>${user.age}</td>
		                <td>${user.birStr}</td>
		            </tr>
		        </c:if>
		
		        <c:if test="${s.count % 2 == 0}">
		            <tr  bgcolor="green">
		                <td>${s.count}</td>
		                <td>${user.name}</td>
		                <td>${user.age}</td>
		                <td>${user.birStr}</td>
		            </tr>
		        </c:if>
		    </c:forEach>
		</table>
	</body>
</html>

1.2.4 格式化标签

标签 描述
使用指定的格式或精度格式化数字
解析一个代表着数字,货币或百分比的字符串
使用指定的风格或模式格式化日期和时间
解析一个代表着日期或时间的字符串
绑定资源
指定地区
绑定资源
指定时区
指定时区
显示资源配置文件信息
设置request的字符编码

1.2.5 SQL 标签

标签 描述
指定数据源
运行 SQL 查询语句
运行 SQL 更新语句
将 SQL 语句中的参数设为指定值
将 SQL 语句中的日期参数设为指定的 java.util.Date 对象值
在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

1.2.6 XML 标签

标签 描述
与 <%= … > ,类似,不过只用于 XPath 表达式
解析 XML 数据
设置 XPath 表达式
判断 XPath 表达式,若为真,则执行本体中的内容,否则跳过本体
迭代 XML 文档中的节点
的父标签
的子标签,用来进行条件判断
的子标签,当 判断为 false 时被执行
将 XSL 转换应用在 XML 文档中
共同使用,用于设置 XSL 样式表

1.2.7 JSTL 函数

标签 描述
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首尾的空白符



关注公众号一起学习 Java 开发,跟大家分享我的学习成长过程

复习 EL 表达式与 JSTL_第2张图片

你可能感兴趣的:(Java,Web)