EL介绍
Expressive Language, JSP2.0引入,简化jsp开发中对对象的引用,(可以直接读取对象的属性,不需要像之前java脚本那样去做,比较繁琐),使得访问存储在JavaBean中的数据变得非常简单。
基本语法
${表达式}
常见用法
根据其访问对象,可大体分成三类:访问数据(javabean里面的数据)及其各种表达式,访问EL的隐含对象(页面的对象),访问环境信息的隐含对象。
(1)访问数据及其各种表达式
访问数据 ${userinfo.id} //1.访问userinfo的id属性。.和[]用于访问数据,二者等价。 ${userinfo[id]} ${userinfo.[user-name]} //当属性名含有特殊符号时,就只能使用[],而不能${userinfo.user-name} ${arrBook[0]} //2.(假定arrBook为数组对象)访问request范围中的数组arrBook中的第一个元素 ${goodsList[0]} //3.(假定goodsList为List对象)访问request范围中的goodsList的第一个元素 算术运算 ${5/2} 或者 ${5 div 2} //5除以2 ${17%3} 或者 %{17 mod 3} //17求余3 ${1+2} //注意+无法实现两个字符串的拼接,只能做算术运算。 判空 ${empty user1} //user1==null或者user1==""的话,都会返回true。 逻辑关系运算 ${10==10} 或者 ${10 eq 10} //返回true ${10!=10} 或者 ${10 ne 10} //返回false ${10<10} 或者 ${10 lt 10} //返回false ${10>=10} 或者 ${10 ge 10} //返回true ${ true && true } 等价 ${"true" && "true"} //可知,字符串会转为Boolean进行处理。 ${!true} 或者 ${not true} 条件运算 ${empty user1? "user1为null或空":user1} //判断user1是否为空,然后输出对应的值。
(2)访问EL的隐含对象
1.获取页面上下文对象pageContext,可以访问jsp内置对象及其他们的属性值和方法。(request、response、out、session、application等) 注意:不可以通过pageContext对象获取保存到request范围内容变量。 ${pageContext.response} //获取response对象 ${pageContext.response.ContentType} //获取返回响应的内容类型。 ${pageContext.session} //获取session对象 ${pageContext.session.maxInactiveInterval} //获取session的有效时间的值 2.访问作用域范围的隐含对象 有四个:pageScope、requestScope、sessionScope、applicationScope ${pageScope.user.name} //获取页范围内的user对象的name属性值 ${requestScope.user1} //如之前设置过<% request.setAttribute("user1","uuu"); %> ${sessionScope.user2} //如之前设置过<% session.setAttribute("user2","uuu"); %> ${applicationScope.user3} //如之前设置过<% application.setAttribute("user3","uuu"); %>
(3)访问环境信息的隐含对象
有六个:param对象, paramValues对象、header和headerValues对象、iniParam对象、cookie对象 <% Cookie cookie = new Cookie("user","uuu"); //使用response对象设置一个请求有效地cookie对象。 response.addCookie(cookie); %> ${cookie.user.value} //再使用EL获取该cookie对象的值