一、EL表达式的形式:${"属性名" }
EL表达式可以直接获取该属性的属性值,EL表达式会依次从pageContext中寻找该属性,如果没有,就继续向上到request中找,在到session,到application中找,直到找到为止,找不到的话就为空。
二、<c:out></c:out>和EL表达式的配合使用
1、像是上面描述的一样,如果直接用EL表达式获取属性值,找不到该属性的话,就会为空。
可以在<c:out value="${dosomething } " default="123456"></c:out>这样设置,就表示如果找不到该属性,就让该属性默认等于一个值。
2、当在一个jsp中有
<%
request.setAttribute("dosomething", "<font color='red'>dosomething</font>");
%>
想要获取dosomething的值时
分别用四种方式来测试:
dosomething=${dosomething }<br/> 结果:红色字体的dosomething
dosomething=<c:out value="${dosomething }"></c:out><br/> 结果:<font color='red'>dosomething</font>
dosomething=<c:out value="${dosomething }" escapeXml="true"></c:out><br/>结果:<font color='red'>dosomething</font>
dosomething=<c:out value="${dosomething } " escapeXml="false"></c:out><br/> 结果:红色字体的dosomething
<,>是特殊符号,直接使用EL表达式或者在标签里面设置escapeXml="false"不会对特殊符号进行转码,所以得到的是红色字体。
在标签里面设置escapeXml="true",缺省情况下也是escapeXml="true",这样的话会对尖括号进行转码,转成<和>,所以得到的是<font color='red'>dosomething</font>,仅仅是当成了一个字符串来处理。