第四章 EL与JSTL

1. EL

(一) EL语法

EL表达式(Expression Language)

${EL 表达式} 例如:${username}

EL操作符

操作符“.” :获取对象的属性

${news.title}

操作符“[]” :获取对象的属性||获取集合中的对象

//获取对象的属性
${news["title"]}
//获取集合中的对象
${newsList[0]}

EL运算符

( )改变执行的优先级,例如${3*(4+5)}
+,-,*,/,%算术运算符,例如${3+2}
==,!=,>,>=,<,<=关系运算符,例如${a==b}或${a eq b}
&&,||,!逻辑运算符,例如${true&&false}
?:条件运算符,例如${a>b?1:2}
empty用于检测变量名是否为空,是否等于NULL,例如${empty name}
关系运算符范例结果
== eq${5 == 5}或${5 eq 5}true
!= ne${5 != 5}或${5 ne 5}false
< lt${3 < 5}或${3 lt 5}true
> gt${3 > 5}或{3 gt 5}false
<= le${3 <= 5}或${3 le 5}true
>= ge${3 >= 5}或${3 ge 5}false
(二) EL功能
取得JavaBean对象的属性

    ${news.title}

取得数组、List、Map类型对象的元素

    ${list[0]}

使用各类运算符对原始数据进行简单处理

    ${totalRecordCount/pageSize}

屏蔽一些常见的异常

    ${username}

能实现简单的自动类型转换

    ${news}相当于(News)request.getAttribute("news")
(三) EL访问作用域
request.setAttribute("news", news);
两种方式取数据:
    使用Java小脚本:request.getAttribute("news");
    使用EL表达式:  ${ news } 或者 ${ requestScope.news }
作用域Java代码取值EL取值
请求作用域request.getAttribute("news");${ requestScope.news }
会话作用域session.getAttribute("username");${ sessionScope.username }
程序作用域application.getAttribute("count");${ applicationScope.count }
页面作用域pageContext.getAttribute("userNum");${ pageScope.userNum }

2. JSTL

(一) JSTL介绍

JSTL(JavaServerPages Standard Tag Library)

JSP标准标签库

实现JSP页面中的逻辑控制

 JSTL使用步骤

下载jstl.jar和standard.jar包

Index of /dist/jakarta/taglibs/standard/binaries

将这两个包复制到WEB-INF\lib目录

在JSP页面中添加指令

<%@ taglib url="Oracle Java Technologies | Oracle" prefix="c" %>

(二) JSTL标签分类
标签库名称资源标示符(url)前缀(prefix)
核心标签库Oracle Java Technologies | Oraclec
国际化/格式化标签库Oracle Java Technologies | Oraclefmt
XML标签库Oracle Java Technologies | Oraclex
数据库标签库Oracle Java Technologies | Oraclesql
函数标签库Oracle Java Technologies | Oraclefn
//核心标签库
<%@ taglib url="http://java.sun.com/jsp/jstl/core" prefix="c" %>
​
//国际化/格式化标签库
<%@ taglib url="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
​
//<c:out/>标签    
<c:out value="value" default="default" escapeXml="true|false" />

设置变量和对象属性

//设置变量
<c:set  var="name"  value= "value" scope="" />
​
//设置对象属性
<c:set value= "value" target="target" property="propertyName" />

实现对集合的遍历

//<c:forEach/>迭代标签
​
<c:forEach var="varName" items="items" varStatus="varStatus">
     ……
</c:forEach>

实现条件的判断

//<c:if/>条件标签
<c:if test="condition" var="varName" scope="scope">
         ……
</c:if>
    
    
//复杂的条件判断
<c:choose>
    <c:when test="条件">
       ...
    </c:when>
    <c:when test="条件">
       ...
    </c:when>
    <c:otherwise>
       ...
    </c:otherwise>
</c:choose>

使用JSTL构建URL

//<c:url/>超链接标签
<c:url  value="url" />
//<c:param/>参数标签
<c:param name="name"  value="value"/>
//<c:import/>导入标签
<c:import url="URL" />

实现格式化的日期和时间显示

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

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值