javaweb-EL与JSTL
文章目录
一、为什么要使用EL表达式
二、EL语法
EL表达式(Expression Language)
E L 表达式 例如: {EL 表达式} 例如: EL表达式例如:{username}
EL操作符
操作符“.”
- 获取对象的属性,例如:${news.title}
操作符“[]”
-
获取对象的属性,例如:${news[“title”]}
-
获取集合中的对象,例如:${newsList[0]}
注意:EL严格区分大小写,初学者严格按规范书写,有利于养成好的编码习惯
三、EL运算符
运算符 | 说明 |
---|---|
( ) | 改变执行的优先级,例如**${3*(4+5)}** |
+,-,*,/,% | 算术运算符 , 例如 ${3+2} |
==,!=,>,>=,<,<= | 关系运算符,例如 a = = b ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {a==b}** **或** ** a==b∗∗∗∗或∗∗∗∗{a eq b} |
&&,||,! | 逻辑运算符,例如 ${true&&false} |
?: | 条件运算符,例如 ${a>b?1:2} |
empty | 用于检测变量名是否为空,是否等于 NULL ,例如 ${empty name} |
关系运算符 | 范例 | 结果 |
---|---|---|
== 或 eq | 5 = = 5 ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {5 == 5}** **或** ** 5==5∗∗∗∗或∗∗∗∗{5 eq 5} | true |
!= 或 ne | 5 ! = 5 ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {5 != 5}** **或** ** 5!=5∗∗∗∗或∗∗∗∗{5 ne 5} | false |
< 或 lt | 3 < 5 ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {3 < 5}** **或** ** 3<5∗∗∗∗或∗∗∗∗{3 lt 5} | true |
> 或 gt | ${3 > 5} 或 {3 gt 5} | false |
<= 或 le | 3 < = 5 ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {3 <= 5}** **或** ** 3<=5∗∗∗∗或∗∗∗∗{3 le 5} | true |
>= 或 ge | 3 > = 5 ∗ ∗ ∗ ∗ 或 ∗ ∗ ∗ ∗ {3 >= 5}** **或** ** 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”); | ${ request Scope .news } |
会话作用域 | session. getAttribute (“username”); | ${ session Scope. username } |
程序作用域 | application. getAttribute (“count”); | ${ application Scope .count } |
页面作用域 | pageContext. getAttribute (" userNum "); | ${ page Scope .userNum } |
六、JSTL介绍
1。JSTL(JavaServerPages Standard Tag Library)
- JSP标准标签库
- 实现JSP页面中的逻辑控制
2.JSTL使用步骤
下载jstl.jar和standard.jar包
- http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
将这两个包复制到WEB-INF\lib目录
在JSP页面中添加指令
- <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
七、JSTL标签分类
标签库名称 | 资源标示符( uri ) | 前缀( prefix ) |
---|---|---|
核心标签库 | http://java.sun.com/jsp/jstl/core | c |
国际化 / 格式化标签库 | http://java.sun.com/jsp/jstl/fmt | fmt |
XML 标签库 | http://java.sun.com/jsp/jstl/xml | x |
数据库标签库 | http://java.sun.com/jsp/jstl/sql | sql |
函数标签库 | http://java.sun.com/jsp/jstl/functions | fn |
核心标签库
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
国际化/格式化标签库
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>
八、标签
标签名称 | 作用 |
---|---|
<c:out /> | 输出文本内容到 out 对象,常用于显示特殊字符,显示默认值 |
<c:set/> | 在作用域中设置变量或对象属性的值 |
<c:remove/> | 在作用域中移除变量的值 |
<c:if/> | 实现条件判断结构 |
<c:forEach/> | 实现循环结构 |
<c:url/> | 构造 url 地址 |
<c:param/> | 在 url 后附加参数 |
<c:import/> | 在页面中嵌入另一个资源内容 |
< fmt:formatDate /> | 格式化时间 |
< fmt:formatNumber /> | 格式化数字 |
<c:out value="value" default="default" escapeXml="true|false" />
value:需要输出显示的表达式
default:默认输出显示的值
escapeXml:是否对输出的内容进行转义
<c:forEach/>迭代标签
实现对集合的遍历
<c:forEach var="varName" items="items" varStatus="varStatus">
……
</c:forEach>
var:集合中元素的名称
items:集合对象
varStatus:当前循环的状态信息,例如循环的索引号
<c:if/>条件标签
实现条件的判断
<c:if test="condition" var="varName" scope="scope">
……
</c:if>
var:判断的结果
scope:判断结果存放的作用域
<c:url/>超链接标签
<c:url value="url" />
<c:param/>参数标签
<c:param name="name" value="value"/>
name:参数的名称
value:参数的值
<c:import/>导入标签
<c:import url="URL" />
<fmt:formatDate/>格式化标签
<fmt:formatDate value="date" pattern="yyyy-MM-dd HH:mm:ss"/>
value:事件对象
pattern:显示格式
<c:import/>导入标签
<c:import url=“URL” />
```java
<fmt:formatDate/>格式化标签
<fmt:formatDate value="date" pattern="yyyy-MM-dd HH:mm:ss"/>
value:事件对象
pattern:显示格式