最近心里乱乱的。有时候也该记录点啥。想起啥就写点啥吧。总比一天天这样无所事事的耗下去好。这样有背时代精神呀。
-----------------------------------------------------华丽丽的分割线-------------------------------------------------------------
EL(Expression Language)表达式语言是JSP2.0版本中引入的新特性,用于在JSP文件中的数据访问。在JAVA1.4之前是不支持的。
先来看一段JSP代码:
<%
User user = (User)session.getAttribute("user");
if(null != user){
%>
<%=user.getUserName() %>
<% } %>
这是一段JSP代码。比较繁锁。而且大量的JSP标签和JAVA程序片,让我们开发和维护都比较困难。再看下EL表达式的写法:
${user.userName}
可见,EL表达式大大的简化 了JSP代码。而且也是JSP现在极力推荐的表达式。
${属性/表达式}
例如:${user.name};${20>24}; ${empty user} ; ${2>3?8:5};
表达式用点号运算符来访问对象属性。也可以用[]来访问。当然[]也可以用来访问数组
EL表达式的运算符:
有算术运算符:+ , - ,* ,/或div,%或mod。
关系运算符:==或eq,<或lt,>或gt,!=或ne,<=或le,>=或ge
逻辑运算符:&&或and ,||或or,!或not。
empty运算符和条件运算符:a?b:c
注意:empty运算符返回true的情况:${empty var}
1、var 变量不存在,即没有被定义。
2、var变量的值为null。
3、变量引用集合set,list,map类型的对象,并且集合对象中不包含任何元素。
另外,empty运算符可以与not(!)一起使用。如:${! empty user.name}
---------------------------------------------以上是语法,下面来看EL提供的隐含对象-------------------------------------
在EL表达式中共有11个隐式对象
- 与作用范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope和applicationScope
- 它们可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(String name),却不能取得其他相关信息。
- 例如,要取得session中储存的一个username属性的值,可以利用下面的方法:session.getAttribute("username")
- 在EL中则使用下面的方法:${sessionScope.username}
- 注意:如果没有设定使用EL内置对象的作用范围,则按照pageScope、requestScope、sessionScope和applicationScope的先后顺序读取属性值。
- 即,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。
- 与输入有关的隐含对象param和paramValues,它们是EL中比较特别的隐含对象。
- 要取得用户的请求参数时,可以利用下列方法:
- request.getParameter(String name)
- request.getParameterValues(String name)
- 在EL中则可以使用param和paramValues两者来取得数据:
- ${param.name}
- ${paramValues.name}------这时可同时使用[]运算符号来读取哪个元素,例如${paramValues.week[0]}
- 要取得用户的请求参数时,可以利用下列方法:
- 其他隐式对象
- cookie
- 用来取得使用者的cookie值,例如在cookie中设定了username属性值,可以使用${cookie.username.value}来取得属性值。
- header和headerValues
- 读取请求的头数据,使用header或headerValues内置对象,例如${header[“User-Agent”]},headerValues则用来取得所有的头信息,等价于调用request.getHeaders()方法。
- initParam
- initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:(String)application.getInitParameter(“repeat”); 或 servletContext.getInitParameter(“repeat”);
- pageContext
- 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} 取得主机端的服务信息
- pageContext用于取得其他有关用户要求或页面的详细信息
- cookie
from :http://blog.csdn.net/zhaoyazhi2129/article/details/8175201