EL 表达式 知识点
什么EL 表达式 ?
EL:Expression Language 一种可以简化jsp 页面的表达式。
EL 的语法 都是以 “${” 开始,以 “ } ” 结束的。
注意${ 表达式 } 必须遵循语法规范
【1】不能以数字开头
【2】不能使用EL 中的保留字 and or gt it 等等
【3】不能使用特殊的符号 - “”/ \ 等
【4】不能使用EL 中的隐式对象
注意: 当在表达式中的字符串需要 “ ” 这样字符,需要使用转义字符 反斜杠 \ 如:\‘
写 定义好的字符时 比如 gt 不能与其他字符连在一起 ,如果连在一起 就不能编译使用
【1】
算数运算符
${2-3}
${2*3}
${2+3}
${2/3}
${2%3}
${2 div 3} // 除法
${2 mod 3}
<br>
结果:
-1
6
5
0.6666666666666666
2
0.6666666666666666
2
【2】
比较运算符 返回的 boolean 类型的值
\${2>3}:${2>3} ---- ${2 gt 3} // \${2>3} 转义字符
${2<3} ---- ${2 lt 3}
${2>=2} ---- ${2 ge 2}
${2<=2} ---- ${2 le 2}
${2==3} ---- ${2 eq 3}
${2!=3} ---- ${2 ne 3}
<br>
结果:
${2>3}:false ---- false // ${2>3} 转义字符
true ---- true
true ---- true
true ---- true
false ---- false
true ---- true
【3】
逻辑运算符 返回的也是 boolean 类型的值
${1>2 && 1<2 } ---- ${1>2 and 1<2}
${1>2 || 1<2 } ---- ${1>2 or 1<2}
${!(1>2)} ---- ${ not (1>2)}
<br>
结果:
false ---- false
true ---- true
true ---- true
【4】
判断是否为空 判断对象为null 或 "" 返回的结果boolean 类型
${empty var}
结果:
true
【5】
条件运算符 :3目运算符
${1>2?1:2}
结果: 2
【6】
( ) 运算优先级高
例如 :(a+b)*c 先做(a+b)运算
a+b*c 先做乘法运算
EL 的11大隐式对象介绍
【1】 pageContext 获取jsp页面的隐藏对象( request response page config等)
请求URI:${pageContext.request.requestURI}<br>
Context-Type响应头:${pageContext.response.contentType}<br>
服务器的信息:${pageContext.servletContext.serverInfo}<br>
Servlet注册名:${pageContext.servletConfig.servletName}<br>
结果:
请求URI:/Day1019/
Context-Type响应头:text/html;charset=utf-8
服务器的信息:Apache Tomcat/7.0.5
Servlet注册名:jsp
四个作用域对象
【2】pageScope 包含page 作用域的变量 map
requestScope 包含request 作用域的变量 map
sessionScope 包含session 作用域的变量 map
applicationScope 包含application 作用域的变量 map
由作用范围小到大的 寻找 userName 参数
<%
pageContext.setAttribute("book", "java web");
request.setAttribute("book", "java web1");
session.setAttribute("book", "java web2");
application.setAttribute("book", "java web3");
%>
结果
${pageScope.book } java web
${requestScope.book } java web1
${sessionScope.book } java web2
${applicationScope.book } java web3
${book } java web 由作用范围小到大的 寻找 book 参数
【3】请求参数
param 用于获取请求参数的某个值,它是Map类型 与request.getParameter()方法相同 如果获取不到就返回为 空字符串
paramValues 如果一个请求参数有多个值,可以使用paramValues对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组,如果要获取某个请求参数的第一个值
<form> 键入的值
param:<input type="text" name="name1"> 2
nam:<input type="text" name="name"> 2
name:<input type="text" name="name"> 2
<input type="submit" value="提交">
</form>
获取的值
${param.name1} 2
${paramValues.name[0]} 2
${paramValues.name[1]} 2
【3】初始化参数 initParam 包含所有初始化参数(初始化参数在web.xml 中配置)
比如
<context-param>
<param-name>userName</param-name>
<param-value>111</param-value>
</context-param>
比如
initParam ${initParam.userName }
结果 111
【4】 头信息 hrader 包含所有头信息的map 可获取头信息的String
hreaderValues 包含所有头信息的Map 可获取头信息的 String[]
${header.host}
${headerValues["Accept-Language"][0]}
结果
localhost:8080
zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
【5】Cookie 该对象是一个代表所有Cookie信息的Map集合, Map集合中元素的关键字为各个Cookie的名称,值则为对应的Cookie对象.
<%
Cookie cookie =new Cookie("cookie1","nihao");
cookie.setMaxAge(1*24*60*60);
response.addCookie(cookie);
%>
<br>
${cookie.cookie1}
${cookie.cookie1.name}
${cookie.cookie1.value}
结果:javax.servlet.http.Cookie@4cba8fce
cookie1
nihao
什么EL 表达式 ?
EL:Expression Language 一种可以简化jsp 页面的表达式。
EL 的语法 都是以 “${” 开始,以 “ } ” 结束的。
注意${ 表达式 } 必须遵循语法规范
【1】不能以数字开头
【2】不能使用EL 中的保留字 and or gt it 等等
【3】不能使用特殊的符号 - “”/ \ 等
【4】不能使用EL 中的隐式对象
注意: 当在表达式中的字符串需要 “ ” 这样字符,需要使用转义字符 反斜杠 \ 如:\‘
写 定义好的字符时 比如 gt 不能与其他字符连在一起 ,如果连在一起 就不能编译使用
【1】
算数运算符
${2-3}
${2*3}
${2+3}
${2/3}
${2%3}
${2 div 3} // 除法
${2 mod 3}
<br>
结果:
-1
6
5
0.6666666666666666
2
0.6666666666666666
2
【2】
比较运算符 返回的 boolean 类型的值
\${2>3}:${2>3} ---- ${2 gt 3} // \${2>3} 转义字符
${2<3} ---- ${2 lt 3}
${2>=2} ---- ${2 ge 2}
${2<=2} ---- ${2 le 2}
${2==3} ---- ${2 eq 3}
${2!=3} ---- ${2 ne 3}
<br>
结果:
${2>3}:false ---- false // ${2>3} 转义字符
true ---- true
true ---- true
true ---- true
false ---- false
true ---- true
【3】
逻辑运算符 返回的也是 boolean 类型的值
${1>2 && 1<2 } ---- ${1>2 and 1<2}
${1>2 || 1<2 } ---- ${1>2 or 1<2}
${!(1>2)} ---- ${ not (1>2)}
<br>
结果:
false ---- false
true ---- true
true ---- true
【4】
判断是否为空 判断对象为null 或 "" 返回的结果boolean 类型
${empty var}
结果:
true
【5】
条件运算符 :3目运算符
${1>2?1:2}
结果: 2
【6】
( ) 运算优先级高
例如 :(a+b)*c 先做(a+b)运算
a+b*c 先做乘法运算
EL 的11大隐式对象介绍
【1】 pageContext 获取jsp页面的隐藏对象( request response page config等)
请求URI:${pageContext.request.requestURI}<br>
Context-Type响应头:${pageContext.response.contentType}<br>
服务器的信息:${pageContext.servletContext.serverInfo}<br>
Servlet注册名:${pageContext.servletConfig.servletName}<br>
结果:
请求URI:/Day1019/
Context-Type响应头:text/html;charset=utf-8
服务器的信息:Apache Tomcat/7.0.5
Servlet注册名:jsp
四个作用域对象
【2】pageScope 包含page 作用域的变量 map
requestScope 包含request 作用域的变量 map
sessionScope 包含session 作用域的变量 map
applicationScope 包含application 作用域的变量 map
由作用范围小到大的 寻找 userName 参数
<%
pageContext.setAttribute("book", "java web");
request.setAttribute("book", "java web1");
session.setAttribute("book", "java web2");
application.setAttribute("book", "java web3");
%>
结果
${pageScope.book } java web
${requestScope.book } java web1
${sessionScope.book } java web2
${applicationScope.book } java web3
${book } java web 由作用范围小到大的 寻找 book 参数
【3】请求参数
param 用于获取请求参数的某个值,它是Map类型 与request.getParameter()方法相同 如果获取不到就返回为 空字符串
paramValues 如果一个请求参数有多个值,可以使用paramValues对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组,如果要获取某个请求参数的第一个值
<form> 键入的值
param:<input type="text" name="name1"> 2
nam:<input type="text" name="name"> 2
name:<input type="text" name="name"> 2
<input type="submit" value="提交">
</form>
获取的值
${param.name1} 2
${paramValues.name[0]} 2
${paramValues.name[1]} 2
【3】初始化参数 initParam 包含所有初始化参数(初始化参数在web.xml 中配置)
比如
<context-param>
<param-name>userName</param-name>
<param-value>111</param-value>
</context-param>
比如
initParam ${initParam.userName }
结果 111
【4】 头信息 hrader 包含所有头信息的map 可获取头信息的String
hreaderValues 包含所有头信息的Map 可获取头信息的 String[]
${header.host}
${headerValues["Accept-Language"][0]}
结果
localhost:8080
zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
【5】Cookie 该对象是一个代表所有Cookie信息的Map集合, Map集合中元素的关键字为各个Cookie的名称,值则为对应的Cookie对象.
<%
Cookie cookie =new Cookie("cookie1","nihao");
cookie.setMaxAge(1*24*60*60);
response.addCookie(cookie);
%>
<br>
${cookie.cookie1}
${cookie.cookie1.name}
${cookie.cookie1.value}
结果:javax.servlet.http.Cookie@4cba8fce
cookie1
nihao