一、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基础学习笔记十七)的更多相关文章

  1. JSTL 标签库 使用(web基础学习笔记十九)

    标签库概要: 一.C标签库介绍 1.1.<c:> 核心标签库  JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out.set.remove.catch2 ...

  2. 监听器(web基础学习笔记二十二)

    一.监听器 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门 ...

  3. 过滤器(web基础学习笔记二十一)

    一.过滤器简介 二.在Eclipse中创建过滤器 三.使用过滤器设置全部web字符编码 public void doFilter(ServletRequest request, ServletResp ...

  4. Servlet一(web基础学习笔记二十)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  5. JavaBean(web基础学习笔记十二)

    一.JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用 ...

  6. JDBC五数据源和数据池(web基础学习笔记十一)

    一.为什么使用数据源和连接池 现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的.如果每次操作都连接数据库,然后关闭,这样做性能一定会受限.所以,我们一定要想办法复用数据库的连接. ...

  7. JDBC二查询(web基础学习笔记八)

    一.建立数据库 --创建news表空间 CREATE TABLESPACE tbs_news DATAFILE 'F:\ORACLE\news.dbf' SIZE 10M AUTOEXTEND ON; ...

  8. JSP的范围-作用域(web基础学习笔记五)

    JSP的范围(作用域) 在JSP页面中的对象,包括用户创建的对象如JavaBean,都有一个范围属性,这个范围也被叫做“作用域”.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,s ...

  9. JSP实现数据保存(web基础学习笔记四)

    session对象: //服务端设置Session属性 session.setAttribute("user", username); //客户端接收Session Object ...

随机推荐

  1. 【原】Order属性决定了不同切面类中通知执行的先后顺序

    [障碍再现] MyBatis配置多数据源时,数据源切换失败. [原因分析]    自定义切面和Spring自带事务切面“即<aop:advisor>”执行的先后顺序导致数据源不能切换成功. ...

  2. Chrome DevTools Protocol Viewer

    Chrome DevTools Protocol Viewer     awesome-chrome-devtools

  3. RAD Studio 2010~XE8 官方 ISO 下载地址 (2015-03-28更新)

    http://bbs.csdn.net/topics/390816856 RAD Studio XE8 目前最新版 v22.0.19027.8951 官方 ISO 文件下载(6.72GB):http: ...

  4. Fast dev didn't succeed, trying another location

    Android 调试时,出现快盘加载失败问题.调试输出如下: Fast dev didn't succeed, trying another location 解决办法: 将项目属性->Andr ...

  5. Linux内核相关常见面试题

      转:http://www.embeddedlinux.org.cn/html/xinshourumen/201303/11-2475.html   本文详细阐述了linux内核相关的开发职位面试中 ...

  6. MVC通过UIHint和自定义视图显示RadioButtonList

    在Product类中有一个显示删除状态的属性DelFlag,在编辑视图页,对于所有的删除状态以RadioButtonList显示出来,如果RadioButtonList选项的value值与当前mode ...

  7. iOS appStore中的应用 实现升级功能

    .h文件中 <UIAlertViewDelegate> .m文件中 #import "SBJson.h"        //解析sbjson 数据 - (void)vi ...

  8. Android之Bean属性通知类

    调用: import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import android. ...

  9. 安卓5.1/7.1/8.1+wifi有叉问题解决

    7.1/8.1 adb shell "settings put global captive_portal_http_url http://captive.v2ex.co/generate_ ...

  10. csv2txt.cpp

    #include <iostream> #include <fstream.h> #include <windows.h> #include <iomanip ...