④品茶看<Servlet&JSP>-EL表达式
前言
今早,概率课偷了下小懒写的:

泡一杯红茶,ACM集训前,写篇博客记录记录EL表达式。
#EL介绍
①EL 语法
②访问JavaBean等
③EL隐式对象
④EL运算符
EL介绍
EL 全名为Expression Language。受ECMAScript 和XPath 表达式的语言启发。EL 的语法比传统JSP Scriptlet 更为方便、简洁。
EL 语法
①基本知识
${为起始、以}为结尾的,构造:${expression}。接下来比较下:
JSP Scriptlet获取:
User user = (User)session.getAttribute("user");
String sex = user.getName( );
EL 获取:
${sessionScope.user.sex}
② [] 和 . 运算符
EL表达式中,对象有属性。就可以利用 [] 和 . 运算符 来访问该属性,两者功能相似。
例如:下面都是一样的。
${sessionScope.user.name}
或者
${sessionScope.user["name"]}
两者功能差异
# 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
例如:
${sessionScope.user["My-Name"] } ${header["accept-language"] }
#我们来考虑下列情况:
selection是一个变量,可以代表user各个属性。
${sessionScope.user[selection]}
如果selection为"name",就相当于${sessionScope.user.name}或者${sessionScope.user["name"]}
因此,如果要动态取值时,. (点)运算符无法做到动态取值, [] 运算符 可以做到。
访问JavaBean
|
类型
|
实例
|
方法
|
|
JavaBeans
|
${user.username}
${user["username"]}
${user['username']}
|
user.getUsername()
|
|
数组
|
${sport[1]}
${sport["1"]}
${sport['1']}
|
sport[1]
|
|
List
|
${phone[2]}
${phone["2"]}
${phone['2']}
|
phone.get(2)
|
|
Map
|
${phone.home}
${phone["home"]}
${phone['home']}
|
phone.get("home")
|
EL隐式对象
|
隐含对象 |
类型 |
说明 |
|
PageContext |
javax.servlet.jspPageContext |
表示当前JSP的javax.servlet.jsp.PageContext |
|
PageScope |
java.util.Map |
取得Page范围的属性名称所对应的值 |
|
RequestScope |
java.util.Map |
取得Request范围的属性名称所对应的值 |
|
sessionScope |
java.util.Map |
取得Session范围的属性名称所对应的值 |
|
applicationScope |
java.util.Map |
取得Application范围的属性名称所对应的值 |
|
param |
java.util.Map |
如同ServletRequest.getParameter(String name)。回传String类型的值 |
|
paramValues |
java.util.Map |
如同ServletRequest.getParameterValues(String name)。回传String[]类型的值 |
|
header |
java.util.Map |
如同ServletRequest.getHeader(String name)。回传String类型的值 |
|
headerValues |
java.util.Map |
如同ServletRequest.getHeaders(String name)。回传String[]类型的值 |
|
cookie |
java.util.Map |
如同HttpServletRequest.getCookies() |
|
initParam |
java.util.Map |
如同ServletContext.getInitParameter(String name)。回传String类型的值 |
cookie
隐式对象cookie包含了当前HttpServletRequest的所有cookie 的Map。
例如
获取一个名为jsessionid的cookie值:
${cookie.jsessionid.value}
header 和headerValues
header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。
例如
获取accept-language语言
${header["accept-language"]}。
注意:当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ]。
initParam
就想我们在web-xml 配置 初始化值得时候,我们用initParam隐式对象可以获取。
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">: <context-param> <param-name>username</param-name> <param-value>jeffli</param-value> </context-param>: </web-app>
用EL表达式获取:
${initParam.username}
等价于
String userid = (String)application.getInitParameter("username");
param和paramValues
同上面的理
${param.name}
${paramValues.name}
等价于
request.getParameter(String name)
request.getParameterValues(String name)
EL运算符
|
逻辑运算符 |
实例 |
结果 |
|
&&或and |
交集${A && B}或${A and B} |
true/false |
|
||或or |
并集${A || B}或${A or B} |
true/false |
|
!或not |
非${! A }或${not A} |
true/false |
总结
EL学习,这次比较全。以前用着就去看,索性写篇博客记录下。

学这个,好比ABC... 慢慢来,多写多用就会了。
④品茶看<Servlet&JSP>-EL表达式的更多相关文章
- Jsp,EL表达式的入门
Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...
- JSP EL表达式使用
JSP EL表达式使用: Servlet: package com.stono.servlet; import java.io.IOException; import java.util.HashMa ...
- jsp EL表达式 字符串的比较
jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ...
- JSP EL表达式 获得 request的GET/POST方法
JSP EL表达式 获得 request的GET/POST方法: 不在requestScopse中: <p>得到request的方法</p> <p>pageCont ...
- JSP EL表达式 param、paramValues的使用
JSP EL表达式 param.paramValues的使用: <%@ page language="java" import="java.util.*" ...
- JSP EL表达式忽略方法
JSP EL表达式忽略方法: web.xml中,和jsp中:jsp中的等级要高一些: web.xml: <?xml version="1.0" encoding=" ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- oozie错误:javax.servlet.jsp.el.ELException: variable [***] cannot be resolved
完整错误: javax.servlet.jsp.el.ELException: variable [compute] cannot be resolved at org.apache.oozie.ut ...
- 11 JSP/EL表达式/EL函数
JSP * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行 * JSP的运行原 ...
随机推荐
- 从React组件划分的纠结到总结
在实际开发项目中,我将所有的React组件划分为容器组件和展示组件,展示组件其实就是一个纯函数组件,没有任何副作用,基本都是PureComponent.但是突然,出现了这么一个问题: 我有一个浮层组件 ...
- Github使用:使用github用作自己的免费域名
1.创建一个新仓库 --- 删除里面的文件 --- Git上传文件到新仓库(必须有index.html) 2. 点击新仓库的setting,下滑找到GitHub Pages ---- 点击第一行的链接 ...
- uboot常用的函数
http://blog.csdn.net/ooonebook/article/details/53206623 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...
- shell编写自动化安装dhcp服务
#!/bin/bash#Auth:Darius#自动化安装dhcp服务#"$1"为测试IP,用来查看IP段是否能通eno=`ifconfig|awk '{print $1}'|he ...
- [转载]ECMall模板解析语法与机制
ECMall模板解析语法与机制 2011-05-22 在ECMall模板中,用"{"开头,以"}"结尾就构成一个标签单元,"{"紧接着的单词 ...
- noip第24课资料
- 急速安装lnmp 编译版本
急速安装lnmp 编译版本 安装msyql+PHP 系统centos6.5 安装 开发软件包 已经改成了163的源需要执行下面的代码 官网不自带 libmcrypt libmcrypt-devel w ...
- awk\sed\grep 补充
# awk\sed\grep 补充 以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符 sed's:test:TEXT:g' sed's|test|TEXT|g' 定界符出现在样式内 ...
- Pyhon学习笔记-基础3
文件操作 1.基本操作 f = open("filename","r",encoding="utf-8") #打开文件,以r模式,字符编码模 ...
- 架构(三)MongoDB安装配置以及集群搭建
一 安装 1.1 下载MongoDB 我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况 https://fastdl.mongodb.org/linux/mongodb-li ...