当前位置 博文首页 > mataodehtml的博客:java学习之路——第六十天
EL表达式是一套简单的计算规则,用于给JSP标签的属性赋值,也可以直接用来输出
EL表达式中的+号只做加法操作,不做拼接操作。
EL表达式是为了简化我们的JSP代码,具体一点就是为了简化在JSP里面写的那些java代码。
?????? 如果使用:
1.去除4个作用域中存放的值
?????? ${pageScope.name }
?????? ${requestScope.name }
?????? ${sessionScope.name }
?????? ${applicationScope.name }
?
2.如果是数组(作用域的值)
?????? 若以pageContext存值
????????????? pageContext.setAttribute(“array”,str);
?????? ${array[0] },${array[1] }
?
3.若是集合:
?????? pageContext.setAttribute(“list”,list);
?????? ${list[0] }….
?
4.若是Map集合
?????? pageContext.setAttribute(“map”,map);
?????? ${map.key1 },${map.key2 }
?
若key中有值为key.aa
?????? ${map[“key.aa”] }
?
从域中取值,得先存值:
?????? ${pageScope.name }指定在pageScope中找name,不在其他地方找
?????? ${name }依次在pageContext,request,session,application中找到则不继续找
?
若是对象:
User user = new User(“zhangsan”,18);
session.setAttribute(“u”,user);
${u.name } 和 ${u.age }取得
?
${empty u }判断是否为空
?
一般使用EL表达式,用的比较多的,都是从一个对象中取出它的属性值,比如取出某个学生的姓名。
EL表达式中的11个内置对象:
?????? ${对象名.成员 }
pageContext?????????? header??????????? param??????????? cookie
pageScope???????????? headerValues?? paramValues?? initParam
requestScope
sessionScope
applicationScope
?
JSTL:JSP Standard Tab Library?? jsp标准标签库
?????? 简化jsp的代码编写,替换<%%>的写法,一般与EL表达式配合
我们使用的是JSTL1.1版本? 而1.0版本的JSTL不支持EL表达式
?
怎么使用:
?????? 1.导入jar文件到工程的webContent/web-Inf/lib?? jstl.jar & standard.jar
?????? 2.在jsp页面上,使用taglib指令,来引入标签库
?????? 3.注意:如果想支持EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式
常用标签:
?????? <c:set></c:if>
?????? <c:if test=””></c:if>
?????? <c:forEach></c:forEach>
?
c:set
?????? <c:set var=”name” value=”zhangsan” scope=”session”></c:set>
?????? ${session.name }
?????? 声明一个对象name,对象的值zhangsan,存值在session域中,默认为page
?
c:if
?????? 判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出,c:if是没有else的
<c:set var=”age” value=”18” >
?????? <c:if test=”${age>26 }”>
????????????? 年龄大于26…
</c:if>
?
<c:if test=”${age<=26 }”>
?????? 年龄小于等于26
</c:if>
</c:set>
?
定义一个变量名flag,去接收前面表达式的值,然后存在session域中
?????? <c:if? test=”${age>26 }”? var=”flag”? scope=”session”>
????????????? 年龄大于26
?????? </c:if>
?
?????? c:forEach
????????????? 从1开始遍历到10,得到结果赋值给i,并且会存储到page域中,step:增幅为2
?????? <c:forEach begin=”1” end=”10” var=”i” step=”2”>
????????????? ${i }
</c:forEach>
?
?????? items:表示遍历哪一个对象,注意,这里必须写EL表达式
?????? var:遍历出来的每一个元素用user去接收:
<c:forEach? var=”user” items=”${list }”>
?????? ${user.name }……${user.age }
</c:forEach>
?
choose标签:(相当于if(){}else if(){}…)
性别:
<c:choose>
?????? <c:when test=’${emp.gender==”m” }’>男</c:when>
<c:when test=’${emp.gender==”f” }’>女</c:when>
??????
</c:choose>
?
cs