EL表达式jstl标签库
1:EL
1:el介绍
在jsp嵌入大量的java代码,这样java代码和html标签就在一个页面了,导致jsp页面维护成本非高。
后期开发的时候,我们经常会使用Servlet处理业务逻辑,然后把处理后的数据转发到jsp页面上,最终在jsp页面把处理后的结果显示出来即可。
在开发中:
使用Servlet程序接收用户的请求并处理数据,jsp页面仅仅只是显示数据,jsp页面中不写java代码。
要在jsp页面获取不同域中存放的数据,在jsp页面上还是需要嵌入Java代码。
怎么处理 ?
Sun公司也意识到了这个问题,于是伟大的EL表达式诞生了;
2:el是什么
EL:expression language: 表达式语言,一般称它为EL表达式
它的主要功能就是从不同的域中取出数据,执行某个运算,判断等业务逻辑。
格式为:${ key} = request.getAttribute(“key”) , key就是在域对象中存储数据时的 key 值,request.setAttribute(key,value)
注意:如果域中不存在某个key值的话,EL取出来的是一个空字符串
3:EL的使用
EL表达式语句在四个域对象中执行查询时,用key为关键字,
分别从page、request、session、application四个域中查找相应的对象,如果取到值就返回对应的value,如果没有则返回空字符串 “” ,不是null
从page开始找,找到就返回,找不到就返回空字符串
先从page里面找,如果找到就立即返回显示,如果没有找到就会去request中找,找到返回,没有找到就去session中找,找到返回,没有找到去servletContext中如果找到返回,如果没有,就返回“”;
4:EL表达式获取javabean - 简单的java对象,user,emp , stu 对象的数据
5:EL表达式获取复杂数据
获取集合,map的值




6:EL表达式执行运算
1:四则运算
2:比较运算
3:判断对象是否为空
7:EL的11个内置对象使用
pageContext 就是jsp中的pageContext
pageScope jsp中的内置对象page
requestScope jsp中的内置对象request
sessionScope jsp中的内置对象session
applicationScope jsp中的内置对象ServletContext
page ,request ,session ,application 类似于一个map集合,在el表达式中直接使用这个4个内置对象,然后 . 上key,就能够从不同的范围中取出数据。
如果不知道在那个范围,就直接书写key值。
param 是获取用户请求参数中的携带的数据,类似于request中的getParameter方法
paramValues 是获取用户请求参数中的携带的数据,类似于request中的getParameterValues方法 用于获取复选框中的数据
header 获取请求头中的信息,根据指定的头获取 referer
headerValues 根据某个头获取头对应的多个value值
cookie 直接获取cookie对象
initParam 获取初始化配置的参数
EL表达式可以在jsp页面简化我们的Java代码,甚至可以不用书写Java代码。但是EL结构简单,不能完成更加复杂的业务逻辑,以及不能完成在页面的循环判断等功能。
Html 标签也不能完成咱们的逻辑处理
Java代码可以完成逻辑处理,但是规定了呢,jsp只做显示,不能写Java代码
如果要在jsp页面做逻辑处理怎么办呢 ?
Sun公司也意识到这个问题,于是又诞生了JSTL
2:jstl
Jstl : JSP Standard Tag Library : JSP标准标签库
JSTL标签库的使用主要是为弥补html标签的不足和jsp页面处理逻辑的缺陷
在使用jstl之前需要将jsp的包导入,然后引入标签库<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Prefix - 前缀

1:jstl 标签库分类
core 核心标签库 (使用的最多)
fmt 完成国际化的 (很少使用)
functions jstl中的函数库 (基本不用)
sql 主要是在jsp页面上操作数据库 (基本不用)
xml 操作xml文件的(基本不用)
2:使用说明
JSTL的核心标签库标签共14个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
Jstl 的标签一般都会和EL表达式一起使用
c:out value=”” 输出语句 有个default 属性,如果value为空,则输出默认
c:set var="" value="" scope="" 给域对象设置值,scope可以省略,默认在本页有效
c:remove var="" scope="" 删除域对象中的某个值,scope可以省略
c:catch 捕获异常,不会使用
c:forTokens items="" delims="" 使用指定的分隔符切割字符串
c:import url="" 在当前页面上引入其他的页面内容 类似于 前面学习的jsp:include,注意不是导入
c:redirect 重定向
c:url 在页面上可以显示超链接等信息,完成页面的跳转
c:choose标签,c:when标签,c:otherwise标签,类似于switch
用的比较多的是:c:if标签,c:forEach标签
一般和el一起使用


浙公网安备 33010602011771号