④品茶看<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的运行原 ...
随机推荐
- 阿里巴巴Java编码规范插件安装使用指南
编码规范插件安装使用指南 阿里技术公众号公布的<阿里巴巴Java开发规约>,瞬间引起全民代码规范的热潮,后又发布了PDF的终极版,大家踊跃留言,期待配套的静态扫描工具开放出来. 为了让开发 ...
- 快速排序——JavaScript实现
基本原理: 1.从一个数组中任意挑选一个元素作为中轴元素: 2.将剩下的元素以中轴元素作为比较的标准,将小于等于中轴元素的放到中轴元素的左边,将大于中轴元素的放到中轴元素的右边: 3.以当前中轴元素的 ...
- 使用ajax实现html页面产品详情页文字具体内容
<script type="text/javascript" src="Assets/js/jquery.min.js"></script&g ...
- Git的安装和使用
在CentOS 6.x/7.x上安装git及最新版 方式一.yum安装 # yum install git 通过yum方式安装,版本比较旧,CentOS6.5上安装好是1.7.1版.如果想安装最新版或 ...
- Oracle中将Clob字段转换成字符串
1. 利用dbms_lob.substr()方法可将对应字段转换成字符串如下 select dbms_lob.substr(content) from NEWS 该方法有个缺点,当content字段长 ...
- String类笔记
首先要知道,String类的核心是一个数组 我们所写的字符串序列都会放到这个char数组中,且前面有final修饰,所以只能赋值一次. 所以String创建的是不可变字符串序列,不可修改.如果要对其进 ...
- (PMP)解题技巧和典型题目分析(0903-3班)
B.项目有依赖 D A A B B C B C D B A B B A B
- div界面元素生成图片
首先明确一下需求,界面上截取部分元素,生成图片,用户可以长按保存.主要是在微信里,所以设计到生成二维码的问题. 1.链接生成二维码,这里用qrcode生成,搜索可以搜到相关的js文件 var myUr ...
- POJ2248-Addition Chains
满足如下条件的序列被称为加成序列: X[1]=1,X[m]=n,X[1]<X[2]<......<X[m-1]<X[n] 对于每个k(2<=k<=m)都存在两个整数 ...
- IO模型的介绍
Stevens 在文章中的一种IO Model: ****blocking IO #阻塞 IO (系统调用不返回结果并让当前线程一直阻塞,只有当该系统调用获得结果或者超时出错才返回) *** ...