1.EL表达式时用来做什么的?
- Expression Language(表达式语言)
- EL表达式可以代替JSP当中的Java代码,让JSP文件中的程序看起来更加整洁。
- EL表达式算是JSP语法的一部分,EL表达式归属于JSP
- 点击了解JSP详解
2.EL表达式出现在JSP中主要是:
- 从某个作用域中许褚数据,然后将其转换为字符串,并将其输出至浏览器,这就是EL表达式的作用。具体表示为:
第一功效:从某个域当中取数据
第二功效:将取出的数据转换为字符串
第三功效:将字符串输出到浏览器
(注意:EL表达式只能存域中取数据)
3.EL表达式基本的语法格式
$(表达式)
图示:
结果:
所以 ${name} 就相当于<%=request.getAttribute("name")%>
注意:使用EL表达式从域中取数据的时候,不能带双引号,否则会被当做普通字符串输出,如图:
结果:
当想使用EL表达式输出某个对象的某个属性时,使用以下语法格式
${对象名.属性名}
必须确保该对象所属的类中编写了关于此属性的get方法,此语法实际上调用了底层的get方法(如果没有对应的get方法,则出现异常,报500错误)
4.EL表达式读取数据优先级
- EL表达式优先从小范围中读取数据
pageContext < request < session < application
- EL表达式中有四个隐含的隐式范围:
pageScope对应的是pageContext范围
requestScope对应的是request范围
sessionScope对应的是session范围
applicationScope对应的是application范围
当想要从指定域中取出数据时,可以使用以上语法格式,如指定在request域中取出name对应的数据:
${requestScope.name}
5.EL表达式特殊用法
- 如果存储到域的时候,这个name中含有特殊字符,可以使用[ ]
如:
request.setAttribute("a.b","LiMing");
${requestScope.a.b} 这样写无法取到对应的值
${requestScope[ "a,b" ]} 这样写可以取到对应的值
- 在Map集合中取数据:
${ map.key }
- 在数组中取数据
${ 数组[下标] }
- 在List集合中取数据
${ list[下标] }
- page指令中,使用一个属性可以忽略当前文件当中的EL表达式:
isELIgnored="true"
也可以使用 \ ${ EL表达式 } 进行行级忽略(在头端添加" \ ")
如图:
结果:
- 通过EL表达式获取应用的根路径
${ pageContext.request.contextPath }
- EL表达式对null进行了预处理,如果输出值为null,则会象浏览器输出一个空字符串。
6.EL表达式中其他的隐式对象:
- pageContext
(页面作用域对象) - param
此对象可以获取用户提交的数据(如:http://localhost:8080/Test/test.jsp?name=a&name=b&name=c)
此对象获取的是请求参数一维数组当中的第一个元素
${ param.name }
相当于:
<%=request.getParameter("name")%>
输出结果:
a
- paramValues
此对象可以获取用户提交的数据(如:http://localhost:8080/Test/test.jsp?name=a&name=b&name=c)
此对象获取的是请求参数的一维数组
${ paramValues.name }
相当于:
<%=request.getParameters("name")%>
输出结果:
[a,b,c]
- initParam
隐式对象具体描述