表达式语言(Expression Language,EL)是JSP2.0中引入的新特性,在JSP中使用EL表达式可以获取并显示页面数据。使用EL表达式可以简化对变量和对象的访问,减少JSP中的Java代码。
${ELexpression}
EL表达式是以“$”符合开始,后面紧跟一对大括号,大括号内部包含合法的表达式。EL表达式可以直接用在JSP页面的静态文本中,也可以作为JSP标签的属性值来使用。
访问作用域变量
可以通过${varname}的形式取得作用域变量的值,其中,varname是要访问作用域变量的名称。
1、首先从page范围查找属性varname,如果找到了则返回并输出当前范围的变量的值;
2、如果没找到,则再从request范围查找。
3、如果没找到,再从session范围查找
4、最后从application范围查找
5、如果都没找到,则直接返回并输出空字符串。
访问JavaBean属性
在servlet中实例化JavaBean类,并放入request域内。
EL表达式可以通过点号运算符访问JavaBean属性,具体格式${作用域对象名.属性名},它相当于调用JavaBean对象的getter方法。
访问集合元素
访问的数据类型 | 使用示例 | 说明 | 返回值 | 实际调用的方法 |
数组 | ${ins[i]} | i代表数组元素的下标 | 返回下标为i的数组元素的值 | ins[i] |
${ins['i']} | ||||
${ins["i"]} | ||||
List | ${ins[i]} | i代表List元素的下标 | 返回下标为i的List集合元素的值 | ins.get(i) |
${ins['i']} | ||||
${ins["i"]} | ||||
Map | ${ins[name]} | name代表Map对象键值 | 返回对应于键name的值 | ins.get("name") |
${ins['name']} | ||||
${ins["name"]} |
EL内置对象
内置对象名 | 类型 | 说明 |
pageContext | 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 | 获取其它页面传递过来的参数 |
paramValues | java.util.Map | 获取其它页面传递过来的多值参数 |
header | java.util.Map | 获取头信息 |
headerValues | java.util.Map | 获取头信息的值 |
cookie | java.util.Map | 获取cookie的值 |
initParam | java.util.Map | 获取设定的初始化参数的值 |
1、pageContext
pageContext对象可以获得与用户请求或服务器端相关的信息,它用于访问JSP内置对象,如请求、响应、会话、输出、servletContext等。
表达式 | 作用 |
${pageContext.request.queryString} | 取得请求字符串 |
${pageContext.request.requestURL} | 取得不包括请求字符串的URL |
${pageContext.request.method} | 取得HTTP方法 |
${pageContext.request.contextPath} | 取得请求的上下文路径 |
${pageContext.request.remoteAddr} | 取得用户的IP地址 |
${pageContext.session.new} | 判断session是否是已产生但未使用 |
${pageContext.session.id} | 取得session的id |
${pageContext.servletContext.serverInfo} | 取得服务器的信息 |
2、作用范围相关的内置对象
pageScope、requestScope、sessionScope、applicationScope,只能用来获取值而不能设置值。
3、与请求参数相关的内置对象
param和paramValues相当于getParameter()和getParameterValues()
4、与请求头相关的内置对象
header用来访问HTTP请求头的一个具体的Header值,
headerValues用来访问所有HTTP请求的Header值。
如果头中包含“-”,则访问时要用中括号运算符而不能使用点号运算符。
5、cookie内置对象
${cookie.username.value}表示返回cookie中名称为username的值。
6、与初始化参数相关的内置对象
initParam内置对象用于获取web.xml文件中配置的初始化参数,它相当于ServletContext.getInitParameter(String name)方法。
EL运算符
1、算符运算符
2、关系运算符
3、逻辑运算符
4、条件运算符
5、empty运算符
empty运算符使用格式为:${empty expression},它用来判断expression的值是否为null、空字符串、空数组、空Map或空集合,若为空则返回true,否则返回返回false
禁用EL表达式
{%@page isELIgonred="{true}"%}