EL(Expression Language):JSP2.0中引进EL表达式语言是一种简洁的数据访问语言
EL表达式的基本语法为:$(var),所有的表达式都以"${"开头以"}"结尾。通过点运算符或方括号来访问对象的属性或数组的元素EL运算符:
/ div
% mod
== eq
!= ne
< lt
> gt
<= le
>= ge
&& and
|| or
! not
a?b:c if-else
empty $(empty var)判断是否为空EL隐含对象 说明
application 将web应用范围内的属性名和属性值进行映射
cookie 把客户请求中的Cookie和Cookie对象进行映射
header 将HTTP请求头部的项目和项目值进行映射
headerValues 将HTTP请求头部的项目和所有匹配的项目值的数组进行映射
initParam 把Web应用的初始化参数名和参数值进行映射
pageContext 表示javax.servlet.jsp.PageContext对象
pageScope 把页面范围内的属性名和属性值进行映射
param 把客户请求中的请求参数名与参数值进行映射
paramValues 把客户请求中的请求参数名与所有匹配的参数值进行映射
requestScope 把请求范围内的属性名和属性值进行映射
sessionScope 把会话范围内的属性名和属性值映射上述11个对象可分为4个类型
(1) 表示HTTP中请求的特定数据包括:header,headerValues,param,paramValues和cookie ${header["user-agent"]} ==> <%=request.getHeader("user-agent")%>
${header.host} ==> <%request.getHeader("host")%>
${cookie.username.value}==> 调用名称为username的Cookie对象的getValue()方法
${param.username} ==> <%request.getParameter("username")%>注意当属性名有特殊字符时不能使用点运算符如:header.user-agent是错误的写法(2)表示特定的范围包括:pageScope,requestScope,sessionScope,applicationScope
${sessionScope.cart.total} ==> 调用会话范围内属性名为card对象的getTotal()方法
${applicationScope.counter.count}表示调用web应用范围内的属性名为"counter"的对象的getCount()方法(3)表示PageContext对象。为pageContext ${pageContext.servletContext.serverInfo} ==> <%application.getServletInfo()%>
${pageContext.request.requestURL} ==><%reqeust.getRequestURL()%>
${pageContext.response.CharacterEncoding} ==><%response.getCharacterEncoding()%>
${pageContext.session.creationTime}==><%session.getCreationTime()%>(4)表示web应用初始化参数集合,为initParam
${initParam.driver} ==> <%application.getInitParameter("driver")%>注意:在EL表达式中无法直接访问JSP文件中的隐含对象;EL表达式中的变量称为命名变量,它不是JSP文件中的局部变量或实例变量,而是存放在特定范围内的属性,命名变量的名字和属性名字对应。
例如:${username}等价于:
<%
String username =(String)pageContextt.findAttribute("username");
//从当前应用的范围内查找名为username的对象
//范围由page->request->session->application
if(username!=null){
%> <%=usernaem%>
<%}%>
简述如下代码执行结果:
<%String username="shark"%>
${username}
结论:以上代码不会打印username局部变量。因为${username}代表特定范围内的username属性。如果从page->request->session->application都没有找到则显示没有任何输出另配置不使用EL表达式方法:
通过配置文件实现
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>