EL表达式的基本格式由 $ 与{}组成,
例如:${user.name} 即其意思就是查询得到user对象中的name属性的值.(即调用的是getName方法)
如果仅使用EL表达式的话则不需要导包,但需要在作用域中去取值。
该作用域可以是 其范围由小到大依次是 page(页面上下文对象) request(一次请求对象) session(会话期间对象) application(程序应用对象) 。
访问规则: 当容器解析到当前EL表达式时,会依次从pageScope,requestScope,
sessionScope以及applicationScope当中取值,查找绑定名为user的对象,调用其getName方法。
EL表达式如果获取到null值,会自动把null值转换为空字符串输出。
EL的四个范围和JSP的四个范围对应,分别为pageContextScope、requestScope、sessionScope,applicationScope
Object value = null;
value = pageContext.getAttribute(key);
if(value==null){
value = request.getAttribute(key);
if(value==null){
value = session.getAttribute(key);
if(value == null){
value = application.getAttribute(key);
if(value==null){
value= "";
}
}
}
}
return value;
当没有指定作用域,则默认取值依次从小到大来取
<%
List list=new ArrayList();
list.add(1);
request.setAttribute("list", list);
request.setAttribute("a", "");
request.setAttribute("b", null);
%>
${empty list } 其结果为false
${empty a } 其结果为 true
${empty b } 其结果为 true
${empty user}其结果为false
JSTL:(JSP Standard Tag Library) JSP标准标签库
第一步:引入jstl.jar以及 standard.jar两个架包注:在javaEE5.0以上的版本不需要引入这两个架包,因为在javaEE5.0以上的版本已经包含了这两个架包。
将jstl.jar和standard.jar两个包考到现有工程 WEB-INF / lib 目录下
第二步: 使用taglib指令导入要使用的JSP标签 <%@taglib uri="" prefix="" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
uri:JSP标签的命名空间
prefix:命名空间的前缀(简称)
第三步: 使用常见的标签
1 if标签
< c:if test= "" var = "" scope= "" >
标签体的内容
</c:if >
注: test中传入的只能是boolean值,如果值为false则不执行标签体,为true
则执行标签体。
var :代表当前test表达式的结果。
scope:指test表达式执行的结果绑定范围
2 choose标签
<c : choose >
<c:when test =""></c : when>
...
<c : otherwise></c : otherwise>
</c : choose >
注:when可以出现一次以上,当test属性为true时,会执行标签体的内容otherwise只能出现0或1次。
3 foreach标签
<c:foreach items="" var="" varStatus="s">
</c:foreach>