EL表达式
EL(Expression Language)表达式语言,用于简化JSP的输出。
EL表达式的基本语法:${表达式}
示例:<h1>${student.name}</h1>
<h1>姓名:${requestScope.student.name }</h1>
<h2>手机:${requestScope.student.mobile }</h2>
<h2>评级:${requestScope.grade }</h2>
在EL表达式中既不用考虑字符串拼接的问题,也不用考虑包的导入问题。
–requestScope 是EL表达式的作用域对象
EL表达式内置四种作用域对象
作用域对象 | 描述 |
---|---|
pageScope | 从当前页面取值 |
requestScope | 从当前请求中获取属性值 |
sessionScope | 从当前会话中获取属性值 |
applicationScope | 从当前应用获取全局属性值 |
EL表达式内置四种作用域对象
忽略书写作用域对象时,el则按作用域从小到大依次尝试获取。
建议:虽然可以不写作用域对象,但是为了程序的严谨性,应该要写上
EL表达式的输出
语法: [ 作 用 域 . ] 属 性 名 [ . 子 属 性 ] / / [ ] 为 可 选 项 E L 表 达 式 支 持 将 运 算 结 果 进 行 输 出 。 例 如 : {[作用域.]属性名[.子属性]} //[ ]为可选项 EL表达式支持将运算结果进行输出。例如: [作用域.]属性名[.子属性]//[]为可选项EL表达式支持将运算结果进行输出。例如:{emp.salary + 300 } ,${ 1<=3&&2>4 }
EL支持绝大多数对象输出,本质是执行toString()方法
EL输出参数值
EL表达式内置param对象来简化参数的输出
语法:${param.参数名}
JSTL标签库
JSTL (JSP Standard Tag Library),JSP标准标签库
JSTL用于简化JSP开发,提高代码的可读性与可维护性
JSTL由SUN定义规范,由Apache Tomcat团队实现。
JSTL需要自己下载,自己安装。
点击下载jstl标签库(只需下载spec和impl即可)
安装JSTL标签库
将Jar文件复制到工程的/WEB-INF/lib目录(推荐)
将jar文件复制到Tomcat安装目录的lib目录
J2EE它只定义了标准,具体的实现是由厂商决定的。
JSTL的标签库种类
JSTL按功能划分可分为鹉类标签库
类别
- 核心标签库 -core (重要)
- 格式化输出标签库 -fmt (重要)
- SQL操作标签库 -sql
- XML操作标签库 -xml
- 函数标签库 -functions //前两种非常重要,后面三种现在不常用
核心标签库:是JSTL最重要的标签库,提供了JSTL的基础功能
如何引用? 在JSP页面中,在首行添加
<%@ taglib prefix = "c" uri="http://java.sun.com/jsp/jstl/core" %>
用于说明我们需要在JSP中使用核心标签库。 上面的指令是写死的,不能更改。
JSTL核心标签库在taglibs-standard-impl.jar由META-INF/c.tld定义。
判断标签
JSTL核心库提供了两组判断的标签
<c:if> -单分支判断
<c:choose>、<c:when>、<c:otherwise> -多分支判断。
<c:if test = "${ 2>3 }"> //core库中的标签,test为测试属性,EL表达式的值必须为布尔表达式 content1.... //if条件为真,则执行相关操作。
</c:if>
多分枝判断
<c:choose>
<c:when test = "${ 布尔表达式 }">
<条件成立时执行的内容>
</c:when test>
<c:when test ="${布尔表达式}">
<条件成立时执行的内容>
</c:when test>
<c:otherwise>
<当所有的条件都不成立时,输出此标签中的内容>
</c:otherwise>
</c:choose>
JSTL遍历集合
<c:forEach>标签用于遍历集合(Collection)中的每一个对象。
<c:forEach var='p' items = "${persons}" varStatus = "idx" >
第${idx.index + 1}位 <br/>
姓名:${p.name} 性别:${p.sex} 年龄:${p.age}
</c:forEach>
fmt格式化标签库
fmt格式化标签库URI:http://java.sun.com/jsp/jstl/fmt
<fmt:formatDate value = " " pattern = "" >
格式化日期标签
<fmt:formatNumber value = " " pattern = " " >
格式化数字标签
日期格式化
<!--
formatDate pattern
yyyy - 四位年
MM - 两位月
dd - 两位日
hh - 12小时制
HH - 24小时制
mm - 分钟数
ss - 秒数
SSS - 毫秒
-->
</h2>
<h2>
<fmt:formatDate value="${requestScope.now }" pattern="yyyy年MM月dd日HH时mm分ss秒 SSS毫秒"/>
</h2>
数字格式化:引用数字格式化标准库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:formatNumber value="${amt }" pattern="0,000.00"></fmt:formatNumber>元
<!-- 数字格式设置位 000,000,000.00的格式-->
空值的格式化:空值在jsp当中不产生输出效果,若想要产生输出效果吗,则需要实现核心库当中的标签
使用的示例如下:<h2>null默认值:<c:out value="${nothing }" default="无"></c:out></h2>
//当nothing 的值为null时,默认显示为:无
空值格式输出还有一个作用,就是可以对html的源码进行转义,这样就能避免被浏览器解析成页面
具体做法是:
String html = "<h2>这是一段文字</h2>"
<c:out value=html escapeXml = "true" > </c:out> //escapeXml = "true" >
这样将会是源代码原封不动的输出,而浏览器不会对其进行解析。