上一篇文章我们讲解了动态页面技术——JSP
https://blog.youkuaiyun.com/weixin_44007447/article/details/104565596
这我们再来讲解两门技术,它们的出现极大的减少了JSP脚本代码的书写,使得页面动态技术更加的成熟。
一、EL技术
1、EL表达式简介
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。(摘自百度百科)
2、EL表达式作用
EL表达式的最重要的作用就是从域中取对象,比如
jsp脚本 :<%=request.getAttribute(String key)%>
EL表达式: ${requestScope.key}
通过上面的简单对比,我们可以发现通过EL表达式获取域中数据十分的方便。
3、EL获取四大域中的数据
格式:${EL 表达式}
- EL获取pageContext域中的值 :
${pageScope.key}
- EL获取request域中的值:
${request.key}
- EL获取session域中的值:
${session.key}
- EL获取application域中的值:
${application.key}
- EL从四个域中获取某个值 :
${key}
-----值会依次在 pageContext域、request域、session域、application域 中获取,在某个域中获取了以后就不再向后寻找。
4、EL的内置对象
EL中共有11个内置对象,但是随着技术的发展,现在很多的对象在开发中很少或基本不在使用了。
- pageScope,requestScope,sessionScope,applicationScope —获取JSP中域中的数据。
- param,paramValues ----接收参数。
- header,headerValues ---- 获取请求头信息,相当于request.getHeader(name)。
- initParam ----获取全局初始化参数。相当于this.getServletContext().getInitParameter(name)
- cookie ---- WEB开发中cookie,相当于request.getCookies()—cookie.getName()—cookie.getValue()。
- pageContext - WEB开发中的pageContext,pageContext获得其他八大对象
其中使用最多的是 pageContext对象,它可以获取JSP中其他的八大隐式对象。
比如:${pageContext.request.contextPath}
,在EL表达式中可以省略get。
二、JSTL技术
1、JSTL概述
JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。
- Core ---------- http://java.sun.com/jsp/jstl/core 前缀 :c
- l18N -----------http://java.sun.com/jsp/jstl/fmt 前缀 :fmt
- SQL -----------http://java.sun.com/jsp/jstl/sql 前缀 :sql
- XML ----------- http://java.sun.com/jsp/jstl/xml 前缀 :x
- Function ------- http://java.sun.com/jsp/jstl/functions 前缀 :fn
2.JSTL下载与导入
JSTL下载:
从Apache的网站下载JSTL的JAR包。进入 “http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载 JSTL的安装包。jakarta-taglibs-standard-1.1.2.zip,然后将下载好的JSTL安装包 进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。 其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于 实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)
将两个jar包导入我们工程的lib中。
使用jsp的taglib指令导入核心标签库
3、JSTL核心库的常用标签
JSTL的标签有很多种,我们在这里之讲解下我们常用的两种。
1、<c:if test=" " > 标签
属性:
- test :返回值是boolean的条件
- var : 用于存储条件结果的变量
- scope:var 属性的作用域 默认值为 page
2、<c:forEach> 标签
属性:
-
items:被循环的信息
-
begin : 开始的元素(0=第一元素,1=第二元素) 默认值 :0
-
end : 最后一个元素(0=第一元素,1=第二元素) 默认值 :Last element
-
step : 每一次迭代的步数 默认值为 1
-
var :代表当前条目的变量名称 无默认值
-
varStatus : 代表循环状态的变量名称
由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。该类包含了一系列的特性,它们描述了迭代的当前状态,如下这些属性的含义如下所示:current:当前这次迭代的(集合中的)项。 index:当前这次迭代从0开始的迭代索引。 count:当前这次迭代从1开始的迭代计数。 first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。 last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。 begin:begin属性的值。 end:end属性的值 step:step属性的值