JSTL与EL表达式

初识EL表达式

全名为Expression Language。
基本语法: ${expression}
以上语句中,expression为有效的表达式。该表达式可以和静态文本混合,还可以与其他表达式结合成为更大的表达式。

EL的作用域对象:

一、EL 表达式内置四种 作用域对象:
二、忽略书写作用域对象时,el 则按作用域从小到大依次尝试获取;(建议还是写上,不然会降低程序效率)
1、pageScope —– 从当前页面取值;
2、requestScope —– 从当前请求中获取属性值;
3、sessionScope —— 从当前会话中获取属性值;
4、applicationScope —– 从当前应用获取全局属性值;

1
2
3
4
5
<h1>姓名:${requestScope.student.name}</h1>
<h2>手机:${requestScope.student.mobile}</h2>
<h2>评级:${requestScope.grade}</h2>
<h2>对象:${student}</h2>
<h2>教师:${param.teacher}</h2>

我们可以使用EL的内置对象param来简化获取url或者请求体中的数据
语法:${param.参数名}
例如url是https://class.imooc.com/lesson/mid=17331
在Servlet中,我们用request.getParamete(“mid”)h获取
而现在可以用${param.mid}获取了
其实,${param.参数名}就是request.getParameter(“参数名”);的简化形式

安装JSTL 标签库:

1、JSTL 两种安装方式:
1)将 Jar 文件复制到工程的 /WEB - INF / lib 目录(推荐);
2)将 Jar 文件复制到 Tomcat 安装目录的lib目录;

/WEB - INF / lib 目录:用于保存所有第三方jar包;

注:J2EE只定义了标准,具体的实现是由第三方厂商决定,在javaWEB中tomcat提供的jar包,就是标准的实现,对于理解j2ee非常重要

JSTL有五个标签库
分别是:核心标签库、格式标签库、函数标签库、SQL标签库、XML标签库。
主要用前两者。
<%@ taglib uri = “http://java.sun.com/jsp/jstl/core" prefix = “c” %>

当标签库的包导入工程后,我们要引入标签库,方法:
<%@ Taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>
prefix : 前缀。 就是让写上我们引入的标签库的前缀名,因为我们引入的是core标签库,所以prefix值是c。
uri后面的网址是怎么回事?
因为我们引入的jar包中有许多.tld文件(标签定义文件),其中有个文件c.tld里面定义了我们引用的库的内容,其中,有http://java.sun.com/jsp/jstl/core
这样我们就可以找到它了

JSTL判断标签

1、JSTL 核心库提供了两组判断的标签;
2、<c:if> – 单分支判断;
3、<c:choose> <c:when> <c:otherwise> — 多分支判断; // 跟java 的 if else if else 差不大

JSTL遍历集合

1
2
3
4
5
6
7
8
9
10
11
1、<c:forEach> 标签用于遍历集合(Collection) 中的每一个对象;
循环遍历 通常用于存放在request、session、Application 中的集合
例:
items:数据源,其中persons代表的是List或者是set集合;
varStatus:代表的是索引,从 0 开始;
<c:forEach var = "p" items = "${persons}" varStatus="idx">
第 ${idx.index + 1}位 <br/>
姓名:${p.name}
性别:${p.sex}
年龄:${p.age}
</c:forEach>

fmt格式化标签库——日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setAttribute("amt", "1898923.234");
request.setAttribute("now", new Date());
request.setAttribute("html", "<a href='index.html'>index</a>");
request.setAttribute("nothing", null);
%>
<!--
formatDate patttern
yyyy - 四位年
MM = 两位月
dd = 两位日
HH - 24小时制
hh - 12小时制
mm - 分钟
ss - 秒数
SSS - 毫秒
-->
<h2>
<fmt:formatDate value="${requestScope.now }" pattern="yyyy年MM月dd日HH时mm分ss秒SSS毫秒" />
</h2>
</body>
</html>
-------------本文结束感谢您的阅读-------------