EL & JSTL (简介)
1.EL简介
1.1概述
- EL (Expression Language) 是 jsp内置的表达式语言
- EL表达式出现目的是为了使jsp写起来更加简单 , 让jsp的代码更佳简化
- EL表达式 仅仅用来读取数据, 而不能对数据进行修改
1.2 作用
- 用以访问页面的上下文以及不同作用域中的对象 , 取得对象属性的值
- 执行简单的运算或判断操作
1.3特点
- EL在得到某个数据时 , 会自动进行数据类型的转换
- 使用El表达式输出数据时 , 如果有则输出数据 , 如果为null 则什么也不输出
2.EL基本使用
-
基本语法
- ${标识符} : 默认从小到大域进行检索数据 , 如始终为检索到数据 , 则什么也不显示 .
- ${域对象.标识符} : 从指定域中取数据 .
-
EL获取 对象及对象中的属性
-
${域对象.对象名.属性}
-
${域对象.对象名[“属性”]}
<% Map<String,Object> map = new HashMap<>(); map.put("a.a.a","aaaVAlue"); map.put("b+b+b","bbbVAlue"); map.put("c-c-c","cccVAlue"); request.setAttribute("map",map); %> ${ map["a.a.a"] } <br> ${ map['b+b+b'] } <br> ${ map["c-c-c"] } <br>
-
-
属性
- 属性 : 封装后的全局变量
- ${域对象.对象名.属性} 相当于调用对象中的getxxx()方法
3.EL 运算符
-
empty 运算符 : 判断空值的运算符 , 主要支持三种空
- “”
- null
- 数组或聚合的长度为 0
-
语法
- ${empty 标识符} : 判断元素是否为空 , true
- ${not empty 标识符} : 判断元素非空 , true : 非空
4.El中11个隐式对象
-
4个域对象
称呼 page 域 请求域 会话域 web域 jsp pageContext request session application el pageScope requestScope sessionScope applicationScope
-
其他对象
- pageContext : 获取jsp中其他8个对象
- param: 获取请求参数 , 与其jsp中request.getParameter() 作用一致
- paramValues : 获取多个同名的请求参数
- header : 获取请求头信息 , 与jsp中request.getHeader()作用一致
- headerValues : 获取多个请求头信息
- cookie : 获取cookie信息
- initParam : 获取初始化参数 与 jsp中的servletContext.getInitParameter()作用一致
-
总结
- jsp中的pageContext = el中的pageScope + pageContext
- jsp中的request = el中requestScope [域对象] + param [获取请求参数] + header [获取请求头]
- 扩展 : 如在el中需要jsp request对象的其他功能 ? [获取url , 转发]
- 答 : ${pageContext.request.contextPath}
JSTL
1.JSTL简介
-
什么是JSTL标签库
JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面中代码变得更佳简洁。
-
2 core核心库的使用
-
set
保存之前输出 : ${pageScope.abc} <br> <c:set var="abc" value="scope" scope="page"></c:set> 保存之后输出: ${pageScope.abc}
-
choose
<%-- choose开始多路判断 when 就是其中一种判断 test就是判断的表达式(EL表达式) otherwise 表示剩下的情况 choose,when,otherwise标签使用时需要注意的几个点: 1 标签里不能使用html注释 2 when标签的父标签一定是choose标签 --%> <c:choose> <c:when test="${requestScope.height > 190}">巨人</c:when> <c:when test="${requestScope.height > 180}">高人</c:when> <c:otherwise> <c:choose> <c:when test="${requestScope.height > 170}">刚好</c:when> <c:when test="${requestScope.height > 160}">你懂的</c:when> </c:choose> </c:otherwise> </c:choose>
-
forEach
<%--1.遍历1到10,输出 begin是遍历的开始索引 end 是遍历的结束索引 var 是当前正在遍历到的数据 --%> <c:forEach begin="1" end="10" var="i"> <span>${i}</span> </c:forEach>
-