EL表达式

来源:互联网 发布:粤语歌曲谐音软件 编辑:程序博客网 时间:2024/06/05 14:57

EL(Expresssion Language)表达式语言,简称为EL表达式,它是JSP2.0中引入的一种计算和输出Java对象的简单语言。主要特点:

  • 在EL表达式中可以获取命名空间(pageContext对象),通过该对象可以访问JSP页面的其他内置对象
  • 可以获取JavaBean的属性、数组以及集合对象的数据
  • 可以执行关系、逻辑、算术等运算
  • 获取page、request、session、application作用域的属性
  • 自定义EL函数,调用Java类的方法

一.语法

(1).语法格式如下:
${ expression }
(2).输出$字符串
// 加上“\”符号\$// 输出“${}”字符串${ "${}" }// 输出EL表达式“${1 + 1 }”,不是结果2\${ 1 + 1 }

二.运算符

JSP中,EL表达式提供了存取运算符、算术运算符、关系运算符、逻辑运算符、条件运算符以及Empty运算符

(1).存取运算符

存取运算符包括“.”和“[]”,用于获取对象的属性
${user.name} - ${user["name"]}${userList.get(0).name}

(2).算术运算符

+ - * / %,用在整数和浮点数上 
${"a"}${"b"} // ${"a" + "b"} 是错误的,只能用于整数、浮点数的运算

(3).关系运算符

等于(==或eq) 不等于(!=或ne) 小于(<或lt) 大于(>或gt)  大于等于(>=或ge) 小于等于(<=或le)
${1 > 2 } - ${1 lt 2 } // false - true

(4).逻辑运算符

与(&&或and)、或(||或or)、非(!或not)
${not (1 > 2) } - ${! (1 < 2)} // true - false

(5).empty运算符

前缀运算符,判断是否为null
${empty name }-${name == null} // true - true

(6).条件运算符

问号表达式
${num1 < num2 ? num1 : num2 }

三.隐含对象

EL表达式中定义了一些隐含对象,共有11个,分为以下3种:
pageContext隐含对象、访问环境信息的隐含对象、访问作用域范围的隐含对象

(1).pageContext隐含对象

该对象用于访问JSP的9大内置对象,如request、response、session、page等
// 获取应用上下文路径${pageContext.request.contextPath} // '/项目名'

(2).访问环境信息的隐含对象

EL表达式中定义的用于访问环境信息的隐含对象包括以下6个:
  • cookie:请求中的Cookie
  • header:请求头,若属性中有“-”,如User-Agent,需要使用${header["User-Agent"]}获取值
  • headerValues:请求头属性的Map对象,值保存在数组中
  • initParam:获取上下文的初始化参数,如web.xml中<context-param>标签
  • param:获取请求参数
  • paramValues:请求参数的Map对象,值保存在数组中
// cookie${cookie.JSESSIONID.name} - ${cookie.JSESSIONID.value}// header${header.Accept } ${header["User-Agent"] } // 使用${header.User-Agent}会报错,也就是执行了减法// headerValues${headerValues.Accept[0] }${header["User-Agent"][0] }// url为:xxx/testEl?name=aa// param${param.name } // aa // paramValues${paramValues.name[0] } // aa,返回的是String[]// initParam${initParam.appName}// test_servletweb.xml配置为:<context-param>    <param-name>appName</param-name>    <param-value>test_servlet</param-value></context-param>

(3).访问作用域范围的隐含对象

  • pageScope:(默认),获取page域内的属性
  • requestScope:获取request域中的属性
  • sessionScope:获取session域中的属性
  • applicationScope:获取application域中的属性

获取指定域中的属性值,若不指定哪一个范围内取值,默认从page域中查找,不存在则依次从request->session->application查找,只要查找到该属性则停止查找

// request、session中都存在name属性${name} // 获取的是request范围的name属性${requestScope.name}// 指定获取request域中的name属性


原创粉丝点击