Java Web学习总结(10)学习总结-EL表达式

一,EL 表达式概述(EL主要从域中取数据

EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。

二,EL从域中取出数据(EL最重要的作用)

jsp脚本:

<%=request.getAttribute(name)%>

EL表达式替代上面的脚本:

${requestScope.name}

EL最主要的作用是获得四大域中的数据

格式:${ EL表达式 }

EL获得pageContext域中的值

${pageScope.key};

EL获得request域中的值

${requestScope.key};

EL获得session域中的值

${sessionScope.key};

EL获得application域中的值

${applicationScope.key};

EL从四个域中获得某个值:${key};

EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从pagerequestsessionapplication四个域中查找相应的对象,找到则返回相应对象,找不到则返回"" (注意,不是null,而是空字符串)。

例如:

User实体类:

public class User {private int id;private String name;private String pwd;public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public User() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}
}

Index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import="com.zender.*,java.util.*"%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- 模拟域中的数据 --><%//存储字符串request.setAttribute("name","Zender");//存储一个对象User user = new User(1, "Zender", "123");session.setAttribute("user", user);//存储一个集合User user1 = new User(1, "Zender", "123");User user2 = new User(2, "Zender2", "1234");User user3 = new User(3, "Zender3", "1235");List<User> list = new ArrayList<User>();list.add(user1);list.add(user2);list.add(user3);application.setAttribute("list", list);%>通过脚本获取域中的数据:<br/><!-- 通过脚本获取域中的数据 --><%=request.getAttribute("name") %><%User sessionUser = (User)session.getAttribute("user");out.write(sessionUser.getName());%><hr/>通过EL表达式获取域中的数据:<br/><!-- 通过EL表达式获取域中的数据 -->${requestScope.name}${sessionScope.user.name}${applicationScope.list[1].name}<hr/>通过EL表达式,全域查找,获取域中的数据 :<br/><!-- 通过EL表达式,全域查找,获取域中的数据 -->${name}${user.name}${list[2].name}<hr/>
</body>
</html>

访问index.jsp结果如下:

三,EL表达式执行运算

语法:${运算表达式},EL表达式支持如下运算符:

1、关系运算符

2、逻辑运算符

3、empty运算符:检查对象是否为null(空)

4、二元表达式:${user!=null?user.name :""}

5、[ ] 和 . 号运算符

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="com.zender.*,java.util.*"%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>el表达式进行四则运算:<br/>加法运算:${100+100}<br/>减法运算:${100-100}<br/>乘法运算:${100*100}<br/>除法运算:${100/100}<hr/>el表达式进行关系运算:<br/><%--${user == null}和 ${user eq null}两种写法等价--%>${user == null}<br/>${user eq null}<hr/>el表达式使用empty运算符检查对象是否为null(空):<br/><%--使用empty运算符检查对象是否为null(空) --%><% List<String> list = new ArrayList<String>();list.add("Zender");list.add("Zender2");request.setAttribute("list",list);%><c:if test="${!empty(list)}"><c:forEach var="str" items="${list}">${str}<br/></c:forEach></c:if><hr/>EL表达式中使用二元表达式:<br/><% session.setAttribute("user1",new User(1,"Zender","123"));%>${user1 == null ? "对不起,您没有登陆 " : user1.name}
</body>
</html>

运行结果如下:

四,EL的内置11个对象

pageScope,requestScope,sessionScope,applicationScope

用于获取JSP中域中的数据

param,paramValues

用于接收参数,相当于request.getParameter(),rquest.getParameterValues()

header,headerValues

用于获取请求头信息,相当于request.getHeader(name),request.getHeaders()

initParam

用于获取全局初始化参数,相当于this.getServletContext().getInitParameter(name)

cookie

用于WEB开发中的cookie,相当于request.getCookies()--->cookie.getName()--->cookie.getValue()

pageContext

用于WEB开发中的pageContext

注意:

  测试header和headerValues时,如果头里面有"-" ,例Char-Encoding,则需要header["Char-Encoding"]、headerValues["Char-Encoding"]

  测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,必须${cookie.key.name}或者${cookie.key.value}

五,EL表达式保留关键字

所谓保留字的意思是指变量在命名时,应该避开上述的名字,以免程序编译时发生错误。

转载于:https://www.cnblogs.com/Zender/p/7801330.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片测量尺寸软件_3D扫描之工件测量检测

一&#xff0e;技术简介消费者追求品质和时尚的需求使制造领域发生了一系列变革&#xff0c;最明显的两点&#xff1a;一是产品外形增加了更多的曲面设计&#xff1b;二是产品的质量控制标准越来越严格。而这两点的变化又对检测行业提出了更高的要求&#xff0c;传统的测量或检…

计算机词汇查询,计算机辅助英语词汇查询系统的设计.doc

计算机辅助英语词汇查询系统的设计计算机辅助英语词汇查询系统的设计摘 要&#xff1a; 以往所使用的基于Visual Studio的计算机辅助英语词汇查询系统存在查询页面过于繁琐运行效率低&#xff0c;导致查询系统速度慢以及实用性差等缺点。因此设计基于Struts的计算机辅助英语词汇…

input只能输入数字_Python基础第一个案例:猜数字游戏,这个都写不出,那就放弃吧...

前言本文案例只适合新手&#xff0c;老司机请绕路。游戏介绍&#xff1a;程序自己有一个数字&#xff0c;用户输入一个数字&#xff0c;两个数字进行比较。知识点&#xff1a;input函数字符串while循环if条件判断语句break语句开始撸代码先来看看效果图代码# 1. 有一个数字 my_…

远程服务器任务,远程大批量操作windows服务器的计划任务

在工作过程中&#xff0c;经常需要大批量对某一批次机器进行计划任务设置&#xff0c;可以通过组策略实现&#xff0c;也可以通过脚本操作。本文演示如何通过powershell脚本远程大批量给若干台机器设置周期重启的操作。#生成10到30的数组$a(10..30);#初始化空的数组$pcname();#…

java 异或_Javase第一部分:操作符的使用(按位异或运算)(含视频讲解)

本套课程讲解详细深入&#xff0c;内容丰富,包含了数据结构、JVM、GC等大厂常见的面试知识精讲&#xff0c;而且配有在线的预习文档课堂笔记每天作业&#xff0c;可以缩短你的学习周期&#xff0c;提高学习效率。Java精讲视频六大板块----带你轻松入门Java​mp.weixin.qq.com本…

js 设计模式

首先我们需要知道JavaScript与传统的面向对象编程&#xff08;oop&#xff09;不同&#xff0c;它没有传统意义上的类&#xff0c;该语言的一切都是基于对象&#xff0c;依靠的是一套原型&#xff08;prototype&#xff09;系统。JavaScript通过原型委托的方式实现对象与对象之…

电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...

电子科技大学 计算机科学与工程 学院标 准 实 验 报 告(实验)课程名称 汇编语言与微机接口技术综合实验电子科技大学教务处制表电 子 科 技 大 学实 验 报 告 (一)学生姓名&#xff1a;郫县英格拉姆 学 号&#xff1a;2014123456789 指导教师&#xff1a;皮皮怪实验地点&#x…

python环境变量配置步骤_关于人工智能Python系统环境变量设置步骤

最近无论是JAVA的环境变量配置,还是Python环境变量配置都有学生问我,我在这里写一下回答,当然我以配置Python的环境变脸来举例.首先需要确定本机电脑上安装上了Python首先解释一下为什么需要配置环境变量,我们平时打开一个应用程序&#xff0c;一般都是在桌面双击该软件的快捷方…

图文详解linux/windows mysql忘记root密码解决方案

经常有用户过来咨询说自己的mysql服务器忘记密码了怎么办&#xff0c;为了更好的解决大家的困扰&#xff0c;本文特归档整理了windows和linux系统下&#xff0c;mysql忘记密码的解决方案。本文内容是我亲测实用&#xff0c;当然过程中踩过的坑我也会在本文中一并分享交流。废话…

jquery 判断控件css样式,jQuery获取并设置CSS类

jQuery获取并设置CSS类通过 jQuery&#xff0c;可以很容易地对 CSS 元素进行操作。jQuery 操作 CSSjQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些&#xff1a;• addClass() - 向被选元素添加一个或多个类• removeClass() - 从被选元素删除一个或多个类• toggleCl…

零宽断言 python_正则表达式-零宽断言

[toc]一、零宽断言-介绍零宽断言&#xff0c;它匹配的内容不会提取&#xff0c;其作用是在一个限定位置的字符串向前或向后进行匹配查找。1.1、应用场景排除查找&#xff0c;查找不含有某段字符串的行包含查找&#xff0c;查找含有某段字符串的行二、断言的分类2.1、正先行断言…

JS闭包—你不知道的JavaScript上卷读书笔记(二)

关于闭包&#xff0c;初学者会被绕的晕头转向&#xff0c;在学习的路上也付出了很多精力来理解。 让我们一起来揭开闭包神秘的面纱。 闭包晦涩的定义 看过很多关于闭包的定义&#xff0c;很多讲的云里雾里&#xff0c;晦涩难懂。让不少人以为闭包是多么玄乎的东西。在我看过的所…

img 错误样式css,css设置图片大小_css 控制img图片的大小样式

摘要 腾兴网为您分享:css 控制img图片的大小样式&#xff0c;掌上财富&#xff0c;优品多多&#xff0c;问作业&#xff0c;淘客联盟等软件知识&#xff0c;以及手机游戏开挂神器&#xff0c;au补丁&#xff0c;局域网监测&#xff0c;苹果录屏专家&#xff0c;重复文件删除&am…

python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...

1 #-*- coding: utf-8 -*-2 from __future__ importunicode_literals3 #操作文件4 importos5 #科学计算6 importnumpy as np7 #图像识别8 importcv2 as cv9 #数据预处理, 该项目中只使用了标签编码10 importsklearn.preprocessing as sp111213 defload_imgs(directory):14 加载…

vue css load,vue css3loadding插件的开发以及npm包的发布管理

插件开发的话建议使用vue-gitment脚手架开发vue init webpack-simple vue-gitment如果提示执行cnpm install vue-cli -g 全局安装cnpm install vue-cli -g在次执行上面的命令完成之后可以看到这样的目录在src下面添加component loadding.js loadding.vueloadding.vueexport def…

python label显示图片_python 实现在tkinter中动态显示label图片的方法

在编程中我们往往会希望能够实现这样的操作&#xff1a;点击Button&#xff0c;选择了图片&#xff0c;然后在窗口中的Label处显示选到的图片。那么这时候就需要如下代码&#xff1a;from tkinter import *from tkinter.filedialog import askopenfilenamedef choosepic():path…

如何更改服务器上的数据库文件夹,如何设置数据库文件位置

如何设置数据库文件位置08/07/2014本文内容适用于&#xff1a; Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007上一次修改主题&#xff1a; 2007-01-02本主题说明如何使用 Exchange 管理控制台或 Exchange 命令行管理程…

js删除数组中指定元素_js中数组操作详解

今天给大家带来一篇有关数组操作方法的文章。新建数组方法一&#xff1a;通过new运算符创建一个数组构造函数。var arr new Array();方法二&#xff1a;通过方括号直接创建直接量数组。var arr [1,2,3];添加数组中的元素方法一&#xff1a;通过下标添加元素。var arr new Ar…

控制台文字对战游戏 初始版

namespace 对战游戏{ class Program { #region public struct JueSe //创建一个角色对象 { public string XingMing;//这个对象中有这些属性 public int GongJi; public int ShengMing; public int…

查询链接服务器信息,如何通过 SQL Server 链接服务器和分布式查询使用 Excel

作为链接服务器查询 Excel您可以使用企业管理器、系统存储过程或 SQL-DMO(分布式管理对象)将 Excel 数据源配置为 SQL Server 链接服务器。在所有的这些情况中&#xff0c;您总需要设置以下四个属性&#xff1a;链接服务器要使用的名称。连接要使用的 OLE DB 提供程序。Excel 工…