JavaWeb---3、EL与JSTL

一、EL

  1. EL表达式作用:代替JSP页面中表达式脚本进行数据的输出(只能获取数据,不能设置数据)

  2. EL表达式的格式是:${表达式} ,注:EL表达式写在jsp页面中,表达式一般是域对象的key

(一)搜索域表示式的顺序

(二)表达式

1、条件运算

2、逻辑运算

3、算术运算

4、empty运算

empty运算可以判断一个数据是否为空,若为空,输出true,不为空,输出false 以下几种情况为空(在原本的key之前加empty关键字):

<%
//值为null
request.setAttribute("emptyNull",null);
//值为空串
    request.setAttribute("emptyStr","");
//值为Object类型的数组且长度为0 (注:其他类型的长度为0的数组值为非空)
    request.setAttribute("emptyArr",new Object[]{});
//List集合元素个数为0
    List<String> list = new ArrayList<>();
    request.setAttribute("emptyList",list);
//Map集合元素个数为0
    Map<String,Object> map = new HashMap<>();
    request.setAttribute("emptyMap",map);
%>
${empty emptyNull}
${empty emptyStr}
${empty emptyArr}
${empty emptyList}
${empty emptyMap}

5、三元运算

表达式 1?表达式 2:表达式 3 表达式1为真返回表达式2的值,表达式1为假返回表达式3的值

 ${ 12 != 12 ? "相等":"不相等" }

6、“.”点运算和“[ ]”中括号运算

.点运算可以输出某个对象的某个属性的值(getXxx或isXxx方法返回的值)

[]中括号运算可以输出有序集合中某个元素的值

注:中括号运算可以输出Map集合中key里含有特殊字符的key的值

<%
    Map<String,Object> map = new HashMap<>();
    map.put("a+a","aaaaaa");
    map.put("b+b","bbbbbb");
    map.put("c.c","cccccc");
    request.setAttribute("map",map);
%>
${ map["a+a"] }<br>
${ map["b+b"] }<br>
${ map["c.c"] }<br>

(三)11个隐含对象

EL表达式中的11个隐含对象是EL表达式自己定义的,可以直接使用

四个访问作用域
作用域Java代码取值EL取值
请求作用域request.getAttribute("news");${ requestScope.news}
会话作用域session.getAttribute("username");${ sessionScope.username }
程序作用域application.getAttribute("count");${applicationScope.count}
页面作用域pageContext.getAttribute("userNum");${ pageScope.userNum }

二、JSTL标签库

(一)下载与使用

1、下载JSTL的jar包地址:Apache Taglibs - Apache Standard Taglib: JSP[tm] Standard Tag Library (JSTL) implementations

2、在文件中导入加载这两个jar包

3、使用taglib指令引入标签库

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

(二)<c:set>

作用:set标签可以向域中保存数据

域对象.setAttribute(key,value)

scope:属性设置保存到哪个域中

page-------------->PageContext域中

request---------->Request域中

session------------>Session域中

application------->ServletContext域中

var属性设置key是多少

value属性设置

保存前:${requestScope.aaa}
<c:set scope="request" var="aaa" value="aaaValue"/>
保存后:${requestScope.aaa}

(三)<c:if>

作用:做if判断

test属性表示判断条件

//判断12是否等于13,等于十三输出h3标签的内容,不等于则不输出
<c:if test="${12 == 13}">
<h3>12不等于13</h3>
</c:if>

(四)<c:choose>...<c:when>...<c:otherwise>

 作用:多路判断

相当于switch······case······ default

<%
request.setAttribute("score",98);
%>
<c:choose>
    当成绩大于80时,输出优秀
    <c:when test="${requestScope.score > 80 }">
    <h3>优秀</h3>
    </c:when>

    <c:when test="${requestScope.score > 60 }">
    <h3>及格</h3>
    </c:when>
    
    其他,输出不及格
    <c:otherwise>
    <h3>不及格</h3>
    </c:otherwise>
</c:choose>

(五)<c:forEach>

1、遍历打印1-10

//遍历打印1-10
//begin:开始索引		end:结束索引位置		var:变量
<c:forEach begin="1" end="10" var="i">
    ${i}
</c:forEach>

2、遍历数组

items:遍历的集合

var:当前遍历到的数

<%
request.setAttribute("arr",new Object[]{"李梅","韩梅梅","李华"});
%>
<c:forEach items="${requestScope.arr}" var="arr">
<h3>${arr}</h3>
</c:forEach>

3、遍历Map集合

<%
    Map<String,Object> map = new HashMap<>();
    map.put("1","aa");
    map.put("2","bb");
    map.put("3","cc");
    request.setAttribute("map",map);
%>
<c:forEach items="${requestScope.map}" var="item">
	<%--键--%>
    <h3>${item.key}</h3>
	<%--值--%>
    <h3>${item.value}</h3>
</c:forEach>

(六)其他标签

标签名称作用
<c:out />输出文本内容到out对象,常用于显示特殊字符,显示默认值
<c:set />在作用域中设置变量或对象属性的值
<c:remove/>在作用域中移除变量的值
<c:if/>实现条件判断结构
<c:forEach/>实现循环结构
<c:url/>构造url地址
<c:param/>在url后附加参数
<c:import/>在页面中嵌入另一个资源内容
<fmt:formatDate/格式化时间
<fmt:formatNumber/格式化数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值