EL表达式 与 JSTL标签库
Posted wzhsc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式 与 JSTL标签库相关的知识,希望对你有一定的参考价值。
EL表达式
什么是el
jsp内置的表达式语言
el表达式的作用
代替脚本
el如何获取数据
1、获取域中的数据
简单数据:${域中的key值}
注意:如果多个域中的key值一样 那么取出的顺序?
从范围小的开始查找,查找到以后就返回
如果没有查询到对应的key 返回""(空字符串)
例如:
<%
pageContext.setAttribute("num", 5);
request.setAttribute("num", 1);
session.setAttribute("num", 0);
application.setAttribute("num", 2);
%>
<p>${ requestScope.num}</p>
<p>${ sessionScope.num}</p>
<p>${ applicationScope.num}</p>
<p>${ num}</p>
复杂数据:
数组:${域中的key值 [ index ] }
list:${域中的key值 [ index ] }
map:
一般数据:${域中的key值.map中的key}
如果map的是特殊(数字等):${域中的key值 [ " key " ] }
javaBean导航:
javaBean:我们编写的一个普通java类:类似:User,Person……
javaBean规范:
1、必须是一个共有的类
2、提供私有字段
3、必须提供私有字段公共的get、set方法(boolean :is)
4、必须提供无参构造
5、一般来说需要实现Serializable接口(序列化)
用法:
${域中的key值.javabean属性}
javabean属性:就将get或set方法去掉头(set,get) 然后将首字母小写
2、el表达式的内置对象:pageContext
${ pageContext.request.contextPath} <!--获取项目的根路径-->
${pageContext.request.requestURI} <!-- 请求的url -->
${pageContext.request.queryString} <!-- 获取查询参数-->
${pageContext.request.method} <!-- 请求方式-->
${pageContext.request.protocol} <!-- http协议-->
${pageContext.request.serverName} <!-- 服务器名字-->
3、el中的保留字段
and | eq | gt | div |
or | ne | le | mod |
no | lt | ge | true |
instanceof | empty | null | false |
4、el执行运算
算数:
+:只能进行加法,不能实现拼接
/:div 例如:${ 10 / 2 } 等同于 ${ 10 div 2 }
%:mod 例如:${ 10 % 2 } 等同于 ${ 10 mod 2 }
关系:
> 或者 gt 例如:${8>9} 或者 {8 gt 9 }
>= 或者 ge 例如:${45>=9} 或者 ${45 ge 9 }
< 或者 lt 例如:${4<9} 或者 ${4 lt 9 }
<= 或者 le 例如:${9<=8} 或者 ${9 le 8 }
== 或者 eq 例如:${4==4} 或者 ${4 eq 4 }
!= 或者 ne 例如:${4!=3} 或者 ${4 ne 3 }
逻辑:
&& 或者 and 例如:${false && false} 或者 ${false and false }
|| 或者 or 例如:${true || false} 或者 ${true or false }
! 或者 not 例如:${!true}(相当于${false}) 或者 {not true }
empty:判断容器的长度是否为0、判断对象是否为空
例如:
JSTL 标签库
作用:用来代替脚本
导入格式:
taglib:导入标签库
<%@ taglib prefix="",uri="" %>
prefix:前缀(一个命名)
uri:标签路径
JSTL标签库的分类
核心标签:Core
if:条件判断
属性:
test:条件表达式(${})
var:接收条件表达式的结果
scope:var变量的作用范围
例如:
<c:if test="${ 1==1}" var="result" >
${result}
1 等于 1
</c:if>
<c:choose>(与switch的功能类似)
属性:
choose:switch
when:case
otherwise:defalut
例如:
<c:choose>
<c:when test="${3>4}">
3>4
</c:when>
<c:when test="${3<4}">
3<4
</c:when>
<c:otherwise>
3 = 4
</c:otherwise>
</c:choose>
<c:foreach>:循环
属性:
begin:开始
end:结束
step:递增值
items:要遍历的对象
var:遍历结果
varStatus:循环状态
对象:
index:以begin的值为开始下标
count:当前执行的次数
first:判断是否为第一个变量,是(返回true),否(返回false)
last:判断是否为最后一个变量,是(返回true),否(返回false)
例子:
<c:forEach begin="5" end="10" step="1" var="i" varStatus="vs">
${vs.index}<br>
${vs.count}<br>
${vs.first}<br>
${vs.last}<br>
变量值: ${i}<br>
</c:forEach>
<c:out>:<%=%> 输出
<c:set>:向域中设置值
属性:
value:值
var:key
scope:域
例如:
<c:set value="abc" var="msg" scope="request"></c:set>
格式化标签:fmt
例如:
<c:set var="now" value="<%=new Date()%>" scope="request"></c:set>
<p> <fmt:formatDate value="${now}" type="both"></fmt:formatDate></p>
函数标签:fn
例如:
<c:set value="abc" var="msg" scope="request" ></c:set>
${fn:toUpperCase(msg)}
${fn:contains("aaabc","aaa" )}
以上是关于EL表达式 与 JSTL标签库的主要内容,如果未能解决你的问题,请参考以下文章