一:输出原理
<!-- 1.${属性键值},输出属性省去null判断-->
<h2>${info}</h2
上边的输出相当于下边这一大堆的表达式
<%
String takeOut = (String)request.getAttribute("info");
if(null != takeOut)
{
%>
<h2><%=takeOut%></h2>
<%
}
%>
二:EL表达式内置对象
<!-- 2.EL表达式内置对象:属性范围 -->
<%
pageContext.setAttribute("info","pageContext属性");
request.setAttribute("info","request属性");
session.setAttribute("info","session属性");
application.setAttribute("info","application属性");
%>
<h3>pageScope: ${pageScope.info}</h3> <!-- 不指定的话,输出优先级:page > req > session > app -->
<h3>requestScope: ${requestScope.info}</h3>
<h3>sessionScope: ${sessionScope.info}</h3>
<h3>applicationScope: ${applicationScope.info}</h3>
<!-- 3.内置对象pageContext: -->
<h3>IP地址: ${pageContext.request.remoteAddr}</h3>
<h3>SessionID: ${pageContext.session.id}</h3>
<!-- 4.内置对象param:接收参数 --><!-- 地址栏添加 ? = 测试-->
<h3>通过EL获得参数: ${param.p1}</h3>
<h3>通过Scriptlet获得参数: <%=request.getParameter("p1")%> </h3>
<h3>EL获得一组参数_0: ${paramValues.p2[0]}</h3>
<h3>EL获得一组参数_1: ${paramValues.p2[1]}</h3>
<h3>EL获得一组参数_2: ${paramValues.p2[2]}</h3>
三:EL表达式中的集合操作
<!-- EL集合操作 -->
<%
List all = new ArrayList();
all.add("1st");
all.add("2nd");
request.setAttribute("list",all);
%>
<h3>EL获得List _0: ${list[0]}</h3>
<h3>EL获得List _1: ${list[1]}</h3>
<%
Map map = new HashMap();
map.put("1st","first");
map.put("2nd","second");
request.setAttribute("map",map);
%>
<h3>EL获得Map _0: ${map["1st"]}</h3>
<h3>EL获得Map _1: ${map["2nd"]}</h3>
四:EL表达式运算符操作
<!-- 2.EL运算符 -->
<!-- 常见的+-*/ mod等都支持 -->
<%
request.setAttribute("num1",10);
request.setAttribute("num2",20);
%>
<h3>EL运算符: ${num1>num2 ? num1 : num2}</h3>