EL表达式与JSTL标签

EL表达式

是为了让jsp写起来更简单,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
~在jsp页面直接使用。
~EL用来代替<%=…%>,<%=…%>代表输出,EL表达式是用来输出的。
语法:
${表达式}

<% out.print(request.getAttribute("name")); %>
<!-- 被以下方式替换了 -->
<%=request.getAttribute("name")%>
<!--又被以下El表达式替换了 -->
${name}

pageScope:表示pageContext的域对象
requestScope:表示request域对象
sessionScope:表示session域对象
applicationScope:表示application域对象

1.从某个范围取值
从四个域中通过key找到简单数据并显示出来

四个域的寻找顺序是 pageContext,request,session,application。若找不到键值为name的属性值,不会显示null,会显示空字符串。也可以从指定范围内取值。

${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}

当不存在重名现象时,前半部分可以省略。例 ${name} .

2.取数组、list集合中的值

 <%
    String[] hobbys = {"read","running"};
    pageContext.setAttribute("habbys", habbys);
    List<String> list = new ArrayList<String>();
    list.add("跑步");
    list.add("游泳");
    request.setAttribute("list",list);
    %>
    
<!-- 相当于 pageContext.findAttrbite("names")[0] -->
<!-- 缺点:只能指定数组下标取值,不能遍历 -->
${hobbys[0] }<br />
${list[1] }<br />

3.EL表达式支持运算符
1)语法:${运算表达式}
2)常见运算符:==(eq) !=(ne) <(lt) >(gt) <=(le) >=(ge) &&(and) ||(or) !(not)
~括号内与符号作用相同。
3)判断是否为空
语法:${empty name }
Empty i:用于判断是否某个值是否存在。如果一个字符串为””则也是true.
ii:用于判断集合类是否里面没有数据.

<%
    List list2 = new ArrayList();
    pageContext.setAttribute("a",list2);
%>
    ${empty a}

4.三目运算符

${a==b?1:0}

JSTL标签

~Java Standard Tag Libraray,是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言。
~不是JSP的内置标签,使用时需要导包(jstl-1.2.jar)。
JSTL标签库包括五个,分别是
1、core:核心标签库 核心标签,执行一些输出,设置值,可遍历
2、fmt:格式化标签库 格式化标签,可格式化日期、数字等
3、sql:数据库标签库 用于在页面执行sql
4、xml:xml标签库 操作XML的标签
5、JSTL函数 字符串处理函数

JSP页面中使用taglib指令导入标签库:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      <!-- prefix="c":指定标签库的前缀 -->
      <!-- uri="http://java.sun.com/jstl/core":指定标签库的uri -->

core标签:
1)c:out 输出信息到页面,相当于${}

<c:out value="jack"></c:out>

配合EL表达式使用:

<%
    request.setAttribute("name", "lisi");
%>
<br/>
${name}
<br/>
<!--  default:默认值  -->
<c:out value="${name}" default="没有值"></c:out>

2)c:set 设置值

<c:set var="cset" value="hello c:set" scope="request"></c:set>
${requestScope.cset }

3)c:remove 删除值

<c:remove var="cset" scope="request"/>
${cset }

Scope: 可选四大域对象page|request|session|application,默认为page
4)c:url 输出路径

<c:url var="curl" value="/index.jsp"></c:url>
<a href="${curl}">GO</a>    

5)c:if 判断

<c:if test="${param.age<18 }">
  未成年!
</c:if>

6)c:choose 判断 相当于if elseif else

<c:choose>
  <c:when test="${param.age<20}"> 
    小于20...
  </c:when>
  <c:when test="${param.age>=20 && param.age<=100}">
    20~100...
  </c:when>
  <c:otherwise>
    大于100...
  </c:otherwise>
</c:choose>

7)c:forEach 遍历

items:要被循环的信息
begin:开始的元素(0=第一个元素,1=第二个元素)
end:最后一个元素(0=第一个元素,1=第二个元素)
step:每一次的迭代的步长
var:代表当前条目的变量名称
varStatus:代表循环状态的变量名称,.count表示迭代计数,从1开始;.index从0开始。

i:遍历数组
<% String[] aa = {“1A”,“2A”,“3A”};
pageContext.setAttribute(“aa”, aa);
%>
<c:forEach var=“a” items="${aa}">
${a}

</c:forEach>

ii:遍历list:

<%  List<String> list = new ArrayList<String>();
  list.add("aaa");
  list.add("bbb");
  pageContext.setAttribute("list", list);
%>
<c:forEach items="${list}" var="s">
  ${s}<br/>
</c:forEach>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值