六、JSP06 使用 EL 和 JSTL 简化 JSP

news/2024/10/18 12:27:08/

六、使用 EL 和 JSTL 简化 JSP

6.1 使用 EL 表达式

EL 表达式借鉴了 JavaScript 和 XPath 的表达式语言

EL 表达式提供了一种在 JSP 中简化表达式的方法

EL 表达式通常用于在某个作用域 {page、request、session、application等} 内取得属性值

6.1.1 使用 EL 表达式

  • EL 表达式语法
${表达式}
  • EL 表达式一般操作的是域对象,操作不了局部变量
  • 域对象的概念在 JSP 中存在的有: pageContext、request、session、application
  • 作用范围依次为 本页面、一次请求、一次会话、整个应用程序
  • 使用时通过给域对象设置的 name 值来调用值
  • 如果四个域对象的 name 值都相同时,EL 默认的查找方式是从小到大查找
  • 示例
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>JSP</title>
</head>
<body>
<%--设置数据--%>
<%pageContext.setAttribute("uname","pageContext");request.setAttribute("uname", "request");session.setAttribute("uname", "session");application.setAttribute("uname", "application");//    局部变量String str="你好";
%>
局部变量${str}<br>
域变量${uname}
</body>
</html>
  • 输出结果
局部变量
域变量pageContext
  • 因为 EL 表达式操作的是域对象,所以调用局部变量并没有找到值
  • 因此也可以看出,当 EL 表达式操作的值为空时,会返回一个空的字符串,而不是 null

6.1.2 使用 EL 表达式操作对象

  • EL 表达式经常用来访问两类内容: 对象和属性

1、用 点 (.) 操作符

  • 与 Java 语言类似,在 EL 表达式中,也可以用点操作符来访问对象的属性
  • 用 点 (.) 操作符访问对象属性 示例
${对象名.属性}

2、 [] 操作符

  • 与点操作符类似,[] 操作符也可以访问对象的属性
  • 它也可以用来访问一些包含了特殊字符的 如 .- 等的属性名
  • 也可以用来访问数组
  • [] 操作符示例
${对象名[属性]}
${数组[下标]}

3、 EL 表达式的简单用于,操作 Map 集合

  • 将用户信息存储在 Map 中,并通过 EL 表达式输出
  • 代码示例
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>JSP</title>
</head>
<body>
<%--设置数据--%>
<%Map<String, String> map=new HashMap<String, String>();map.put("name","巧克力");map.put("hobby","胡思乱想");request.setAttribute("user",map);
%>
用户名:${user.name}<br>
用户爱好:${user.hobby}<br>
</body>
</html>
  • 输出结果

image-20230604132354909

6.1.3 Empty 运算符

  • Empty 运算符是一个前缀操作符,用于检测一个变量是否为空
  • 如引用为 null,字符串或集合的长度为 0 等,结果都会返回为 true
  • 如果不为空则返回 false
  • 代码示例
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>JSP</title>
</head>
<body>
<%--设置数据--%>
<%String str=null;String str1="";Map map=null;Map map1=new HashMap();Map map2=new HashMap();map2.put("str","123");request.setAttribute("str",str);request.setAttribute("str1",str1);request.setAttribute("map",map);request.setAttribute("map1",map1);request.setAttribute("map2",map2);%>
空字符串:${empty str}<br>
值为空格的字符串:${empty str1}<br>
空 map:${empty map}<br>
长度为0的 map:${empty map1}<br>
有值的 map:${empty map2}<br>
</body>
</html>
  • 运行结果

image-20230604133317344

6.1.4 EL 表达式的隐式对象

  • EL 表达式提供了若干隐式对象,以便 JSP 的开发
  • EL 表达式的隐式对象按照使用途径的不同分为 作用域访问对象、参数访问对象、JSP 隐式对象、首部访问对象和初始化参数访问对象
  • EL 表达式的隐式对象

image-20230604135233081

1、作用域访问对象

  • 在 Java Web 中存储变量时,共有 page、request、session、application 四个作用域选项
  • 但是如果四个作用域内存储的值的 name 都相同时,可以使用作用域对象,指定在某个作用域查找的值
  • 将作用域内的所有属性转为 Map 类,通过 key 值来调用
  • EL 表达式提供了四个作用域访问对象
对象名称说明
pageScope与 page 作用域中的属性相关联的 Map 类
requestScope与 request 作用域中的属性相关联的 Map 类
sessionScope与 session 作用域中的属性相关联的 Map 类
applicationScope与 application 作用域中的属性相关联的 Map 类
  • 当使用 EL 表达式访问某个变量时,应该指定查找范围,如 ${rquestScope.pageObje}
  • 代码示例
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>JSP</title>
</head>
<body>
<%--设置数据--%>
<%pageContext.setAttribute("uname","pageContext");request.setAttribute("uname", "request");session.setAttribute("uname", "session");application.setAttribute("uname", "application");
%>
PageContext作用域:${pageScope.uname}<br>
requset作用域:${requestScope.uname}<br>
session作用域:${sessionScope.uname}<br>
application作用域:${applicationScope.uname}<br></body>
</html>
  • 输出结果

e", “application”);
%>
PageContext作用域: p a g e S c o p e . u n a m e < b r > r e q u s e t 作用域 : {pageScope.uname}<br> requset作用域: pageScope.uname<br>requset作用域:{requestScope.uname}

session作用域: s e s s i o n S c o p e . u n a m e < b r > a p p l i c a t i o n 作用域 : {sessionScope.uname}<br> application作用域: sessionScope.uname<br>application作用域:{applicationScope.uname}

~~~
  • 输出结果

image-20230604140604914


http://www.ppmy.cn/news/205454.html

相关文章

探索瑞芯微RKNanoD芯片获索尼音箱,采用无线连接稳定无延迟

索尼在音频行业的成就相信大家都有目共睹&#xff0c;索尼HT-Z9F音响系统是持续热卖的产品&#xff0c;这套音响系统由一个中置回音壁以及一个重低音音箱组成&#xff0c;搭配“VERTICAL SURROUND ENGINE垂直环绕引擎”可以让用户感受到声音的竖向变化从而带来更加沉浸的观影体…

在 Ubuntu 20.04 上安装 Nginx

保证以 sudo 用户身份登录&#xff0c;并且你不能运行 Apache 或者 其他处理进程在80端口和443端口。 安装 Nginx Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它&#xff0c;运行下面的命令&#xff1a; sudo apt update sudo apt install nginx 一旦安装完成&#xff0…

H3C无线控制器支持的认证方式

Portal 认证MAC 认证801.2X 认证PSK 认证PPPOE 认证

H3C 无线控制器+瘦ap 配置

1.开启自动ap功能 wlan auto-ap enable2.配置无线口WLAN-ESS1 interface WLAN-ESS5 undo port hybrid vlan 1 //禁止VLAN1 port hybrid pvid vlan 188 mac-vlan enable port-security port-mode psk port-security tx-key-type 11key port-security preshared-key pass-phr…

H3C无线资料

配置案例在附件&#xff0c;无线一本通如以下连接&#xff1a; H3C WX3500H系列多业务无线控制器-新华三集团-H3C 通过以下连接进入控制器的版本说明书&#xff1a; H3C WX3500H无线控制器系列-新华三集团-H3C 官网软件下载公共账号密码&#xff1a;账号&#xff1a;yx800 密…

华三无线控制器基础调试步骤

WAPI是无线局域网鉴别与保密基础结构&#xff0c;中国提出的&#xff0c;以802.11无线协议为基础的无线安全标准两个部分构成:1、WAI是无线局域网鉴别基础结构的简称&#xff0c;是用于无线局域网中身份鉴别和密钥管理的安全方案2、WPI是无线局域网保密基础结构的简称&#xff…

H3C 无线控制器关闭信号认证

AC添加完portal认证服务器之后如果想要关掉单个信号的认证怎么操作呢&#xff1f; 看下关闭之前的相关配置 interface Vlan-interface1002description zzsmsc-vipip address 10.60.32.1 255.255.224.0 portal server openportal method directportal domain vip 之后 inter…

H3C无线控制器与Windows2008NPS结合实现无线终端的802.1X认证

1 本文档详细介绍了如何在windows 2008上安装CA、NPS并配置NPS为radius服务器&#xff0c;实现无线客户端基于802.1X认证的步骤&#xff0c;其中还介绍了一下H3C无线控制器Radius相关一些配置方法。 2 主要配置步骤 1安装Windows 2008服务器及其组件&#xff08;生成证书&#…