EL 表达式

EL表达式

从名字可以看出相当于<%= ..%> 只能读,不能写。在jsp文件中可以在HTML中直接使用EL。

<div>
1+2的值是:${1+2 }
</div>

如果在jstl中被当做属性值来用时,放在引号之间"${1+2}" 
<C:out value="${true == false}"/> 输出结果为false
访问JavaBean例子
index.jsp文件内部使用例子:
<jsp:useBean id="student" class = "xmlweb.Student" scope="session" />
<jsp:setProperty property="age" name="student" value="12"/>
<c:out value="${student.age }"/>
<a href="foo.jsp">Go to foo.jsp</a>

由于scope是Session的,如果不用EL在其他文件比如foo.jsp中使用:
因为必须要先声明bean,所以下面要写成两句,而且scope如果不设置的话默认不会和index.jsp的bean连接。
<jsp:useBean id="student" class="xmlweb.Student" scope="session"/>
<jsp:getProperty property="age" name="student" /><br>

如果用EL表达式则十分简单,EL表达式会按照从小到到的范围page->request->session->app查找
${sessionScope.student.age }
EL表达式的.和[]
如上面的例子,如果想访问session范围内的student则只需要用.即可。但是EL有一个限制,在用点的时候,变量名必须是全字母。
如果是有其他特殊符号比如下划线stud_ent则无法使用。
这时使用:${sessionScope["stud_ent"]["age"]} 
也可以是混用的:${sessionScope["stud_ent"].age }

上面的用法主要用于防止属性中不必要的误会,比如用Java.lang时如果直接展开
应该是${sessionScope["java.lang"] } 而不应该是 ${sessionScope.java.lang }

EL可以进行自动类型转换
index.jsp?score=10
${param.score + 11 } 结果为21
如果同样适用request.getParameter("score") + 11 则结果为字符串1011

index.jsp?name=abc
${param.name.length() } //由于获取的是字符串,可以直接调用String类的所有函数。
和Servlet一样,EL也有内置对象:
${pageScope.username}
${requestScope.username}
${sessionScope.username}
${applicationScope.username}

在一个页面进行设置web app属性值,
application.setAttribute("time", new Date);
application.getAttribute("time")取得的是Object不够方便,EL会自动转换类型,
在web app人一个位置可以取得${applicationScope.time.Method }

param = request.getParameter 
paramValues = request.getParameterValues
获取一组值,比如:/foo.jsp?name=A&name=B name有两个值,获取第一个的方法为:
${paramValues.name[0] }
※重要隐藏对象pageContext = Servlet的PageContext类
可以读取(不可写)所有不带参数的属性getXXX
${pageContext.request.contextPath } //获取当前web app
${pageContext.request.* }
${pageContext.response.* }
${pageContext.servletContext.* }
${pageContext.exception.* }
...
其他的隐藏属性一般不用。
header
headerValues
coookie
initParam

EL支持的运算符
+ - * / % && and || or  ! not > < = 
三目运算符
${param.score > 60 ? "及格":"不及格" }
※empty运算符,判断集合是否存在,或者非空
<%
List<String> names = new ArrayList<String>();
request.setAttribute("names", names);
%>
${empty requestScope.names } //返回True

${empty requestScope.namesXXX } //集合不存在时,也返回True

<完>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值