EL 全名为Expression Language。它是一种数据访问语言,目的为了简化Jsp代码,这一点和标签的作用是一样的。
基本用法:
(1)、使用变量访问web域对象中存储的值 ${user }
等价于<%= request.getAttribute(“user”) %>
(2)、访问javabean的属性 ${user.address.city }
(3)、执行基本的逻辑运算 ${ num+1 } ${user==null }
(4)、直接使用隐式对象 ${ pageContext }
EL 表达式可以用在哪里
(1)、可以在jsp页面中直接书写el表达式,用于向浏览器输出内容
(2)、在标签的属性中使用el表达式,用于为标签的属性赋值
可以结合之前的scope例子来做个测试。在scopedestination.jsp页面做添加一段代码:
测试结果:
本来连对象都可以省了,直接${属性名}。
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
因为在scopeforward.jsp中定义的属性名就是和EL的隐含对象重名了,所以若是省略对象名,输出的将是对象信息。
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
${param.参数名}等价于
<%= request.getParameter("参数名")%>
举个例子在WebRoot目录下新建el文件夹,然后新建setparam.jsp
和getparam.jsp。
setparam.jsp的具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
//防止中文乱码,在同一个请求内
request.setCharacterEncoding("UTF-8");
%>
<jsp:forward page="getparam.jsp">
<jsp:param value="张三" name="username" />
</jsp:forward>
getparam.jsp具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
welcome EL<br>
${param.username}
<br>
测试结果:
${initParam.参数名 }等价于
<%=getInitParameter("参数名") %>
用于获取初始参数。举个例子。
在WebRoot/WEB-INF/lib路径下的web.xml中加入一段代码:
然后再el文件夹中新建一个initparam.jsp,具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
${initParam.username}
<!-- 等价于<%=getServletContext().getInitParameter("username")%> -->
测试结果:
网页源码:
cookie对象:
${cookie.key}取的是cookie对象,如
访问cookie的名称和值,需${cookie.key.name}或
${cookie.key.value}
举个例子,获取session ID
在el中新建一个getcookie.jsp,具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
cooike name:${cookie.JSESSIONID.name}<br>
cooike value:${cookie.JSESSIONID.value}
测试结果: