EL运算符(web基础学习笔记十七)
一、EL语法
1.1、语法结构
${expression}
1.2、[]与.运算符 EL 提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${user[data]}中data 是一个变量
1.3、变量 EL存取变量数据的方法很简单
例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
1.4、访问顺序

二、EL运算符
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
为了避免JSP混淆运算符和页面关键字,很多运算符都有替代写法:
| 关系运算符 | 说明 | 范例 | 结果 |
| == 或 eq | 等于 | ${5==5}或${5eq5} | true |
| != 或 ne | 不等于 | ${5!=5}或${5ne5} | false |
| < 或 lt | 小于 | ${3<5}或${3lt5} | true |
| > 或 gt | 大于 | ${3>5}或{3gt5 | false |
| <= 或 le | 小于等于 | ${3<=5}或${3le5} | true |
| >= 或 ge | 大于等于 | ¥{3>=5}或${3ge5} | false |
注意:在使用EL 关系运算符时,不能够写成: ${param.password1} == ${param.password2} 或者 ${ ${param.password1 } == ${ param.password2 } }
而应写成 ${ param.password1 == param.password2 }
逻辑运算符
| 逻辑运算符 | 范例 | 结果 |
| &&或and | 交集${A && B}或${A and B} | true/false |
| ||或or | 并集${A || B}或${A or B} | true/false |
| !或not | 非${! A }或${not A} | true/false |
三、EL访问pageContext
使用EL访问pageContext对象,可以 取得页面的详细信息,如下:
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
四、EL访问对象
EL表达式可以访问一系列对象,一共有11个。我们重点学习了最重要的1-6。
(1)pageContext:指JSP的pageContext对象
(2)pageScope:一个Map对象,包括page范围的属性和值
(3)requestScope:一个Map对象,包括request范围的属性和值
(4)sessionScope:一个Map对象,包括session范围的属性和值
(5)ApplicationScope:一个Map对象,包括application范围的属性和值
(6)param:一个Map对象,包括Web请求参数(request parameter)的字符串值,对应了ServletRequest.getParameter(String)
(7)paramValues:一个Map对象,包括Web请求参数(request parameter)的多个字符串值,对应了ServletRequest.getParameterValues(String)
(8)header:一个Map对象,包括请求的头信息值,对应了ServletRequest.getHeader(String)
(9)headerValues:一个Map对象,包括请求的头信息多个值,对应了ServletRequest.getHeaders(String)
(10)cookie:一个Map对象,包括对应名称的Cookie,对应了HttpServletRequest.getCookie(String)
(11)initParam:一个Map对象,包括一个Web程序的初始化参数值,对应了ServletRequest.getInitParameter(String)
EL运算符(web基础学习笔记十七)的更多相关文章
- JSTL 标签库 使用(web基础学习笔记十九)
标签库概要: 一.C标签库介绍 1.1.<c:> 核心标签库 JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out.set.remove.catch2 ...
- 监听器(web基础学习笔记二十二)
一.监听器 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门 ...
- 过滤器(web基础学习笔记二十一)
一.过滤器简介 二.在Eclipse中创建过滤器 三.使用过滤器设置全部web字符编码 public void doFilter(ServletRequest request, ServletResp ...
- Servlet一(web基础学习笔记二十)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- JavaBean(web基础学习笔记十二)
一.JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用 ...
- JDBC五数据源和数据池(web基础学习笔记十一)
一.为什么使用数据源和连接池 现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的.如果每次操作都连接数据库,然后关闭,这样做性能一定会受限.所以,我们一定要想办法复用数据库的连接. ...
- JDBC二查询(web基础学习笔记八)
一.建立数据库 --创建news表空间 CREATE TABLESPACE tbs_news DATAFILE 'F:\ORACLE\news.dbf' SIZE 10M AUTOEXTEND ON; ...
- JSP的范围-作用域(web基础学习笔记五)
JSP的范围(作用域) 在JSP页面中的对象,包括用户创建的对象如JavaBean,都有一个范围属性,这个范围也被叫做“作用域”.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,s ...
- JSP实现数据保存(web基础学习笔记四)
session对象: //服务端设置Session属性 session.setAttribute("user", username); //客户端接收Session Object ...
随机推荐
- hdoj 4445 Crazy Tank 物理题/枚举角度1
Crazy TankTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- [Visual Studio] SOA服务框架搭建
1.服务框架搭建 2.服务模板创建 3.Nuget引用 4.客户端调用 任务点: 1.分析SOA 2.修改SOA架构名称以及关键字 3.使用Nuget添加引用 4.选择服务模板进行创建 5.尝试调用 ...
- Web scraping with Nightmare.js | azurelogic.com
Web scraping with Nightmare.js | azurelogic.com (ab)use
- linux 定时任务 crontab 详细解释(转)
cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: 引用: /sbin/service crond start //启动服务 /sbin/service cr ...
- SPOJ 375. Query on a tree (动态树)
375. Query on a tree Problem code: QTREE You are given a tree (an acyclic undirected connected graph ...
- spring mvc接收数组
(一)前言 对于springmvc接收数组的问题啊,我试验过几次,但是了有时候成功了,有时候失败了,也不知道为啥的,然后现在又要用到了,所以打算具体看看到底怎么回事,但是了我实验成功了顺便找了好多资料 ...
- MsDepSvc 启动失败
MsDepSvc 使用80端口,用于 Microsoft Web Deploy 3.6 的远程代理服务. 如果80端口被占用,则启动失败.我的是被phpstudy软件占用,所以启动失败.
- 【Nginx】ngx_event_core_module模块
ngx_event_core_module模块属于事件模块,它是其他事件类模块的基础.它主要完毕下面任务: 创建连接池 决定使用哪些事件驱动机制 初始化将要使用的事件模块 以下分析该模块的代码. ng ...
- 使用 SQLiteManager 操作 sqlite3 数据库
SQLiteManager https://github.com/misato/SQLiteManager4iOS 本人以前从事过嵌入式开发,后来转职为iOS开发,即使如此,也绝不想去碰C语言级别的面 ...
- VirtualBox虚拟机内的系统时间无法调整的解决方法
VirtualBox虚拟机内的系统时间无法调整的解决方法 因试用某软件要求将系统时间设置在特定的日期,利用windows自带的调整日期/时间功能进行设置,发现过几秒钟就又恢复到和主机相同的时间了, ...