EL&JSTL

EL表达式

1-1 EL表达式概述

(1)什么是EL表达式
EL:Expression Language表达式
(2)EL表达式的作用
a.获取数据
代替传统的getParameter
getAttribute
……
b.执行运算

1-2 EL表达式的语法

${数据或运算}
${key}

1-3使用EL来获取域中的数据

使用EL表达式来代替getAttribute,来取得域中的数据,是我们以后最常见的操作.
(1)xxxScope隐含对象的使用
${pageScope|requestScope|sessionScope|applicationScope.属性名}
(2)xxxScope的省略方式
在实际项目开发中,为了使用方便,xxxScope是可以省略掉的.
假设现在有一个el
${str1}
以上el表达式没有指定任何的隐含对象,默认是从最小的域开始搜索str1这个key,如果没有搜索到,到较大的一个域继续搜索,如果搜索到了,则显示key对应的value值,就不继续向上搜索了.如果一直搜索到上下文域,仍然搜索不到,则返回 空串 .

(3)EL表达式对于空串的处理
取值如果为null,显示的是空串,不影响用户体验,不让用户看到null

1-4 使用EL表达式取得其他常用类型的值
(1)获取数组值
	${域中的名称[index]}
	例如:${strArr[1]}需要接jstl才能遍历数组
(2)获取List值
	${域中的名称[index]}
	例如:${strList[1]}
(3)获取Map值
	${域中的名称.键名}
	例如:${strMap.m1}
(4)获取domain中的属性值
	${域中的名称.属性}
	例如:${p.name}
el表达式不用导包,自动识别
EL执行运算

(1)EL执行运算的方式及返回值
在这里插入图片描述
执行加法运算,如果两边遇到字符串,会将字符串格式化成数字,如果格式化失败,则报500
empty可以判断是否为空和长度是否为0

EL中的其他常用隐含对象

(1)pageContext
常用方式:${pageContext.request.contextPath}
想要在el表达式中用到request对象,但是没有request,用pageContext来取,但是 pageContext.request还原成java代码是pageContext.getRequest(),就象jsp的内置对象一样,可以取得request
(2)param
获取请求参数
${param.str}相当于request.getParameter(“str”);
(3)paramValues
获取请求参数数组,搭配jstl迭代来使用${paramValues.hobby[1]}
相当于request.getParameterValues(“str”); 一个key对应的多个value的情况下
(4)initParam
获取全局参数${initParam.encoding}
相当于request.getInitParameter(“str”);

JSTL

JSTL标签库概述

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x以上。在JSP 2.0中也是作为标准支持的。

JSTL标签库的作用

结合EL表达式来使用,代替jsp页面中的scriptlet。

JSTL的分类

core:核心类库
fmt:格式化|国际化(交给servlet处理)
xml:已过时
sql:已过时
函数库:平时很少使用

2-4 JSTL使用步骤
(1)导入jar包 (jstl.jar和standard.jar)

(2)在页面上导入标签库
<%@taglib prefix="" uri=""%>
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

(3)引用方式:
c标签:所需功能
2-5核心类库core需要掌握的内容
(1)c:if
使用方式:
<c:if test="${el表达式}">满足的时候输出的内容</c:if>
例如:
<c:if test="${5>3}">
5大于3
</c:if>

(2)c:forEach
	<!-- 
	items:取得需要遍历的集合
			需要搭配el表达式来从域中取得集合
	var:每次遍历出来的元素
			使用的时候需要搭配el表达式来使用
 	varStatus:当前元素的状态 常用属性:count 取得当前记录的序号
 			需要搭配el表达式来使用
 	begin:取值的起始下标
 	end:取值的结尾下标
 	step:取值的步长 表示设置隔几个值取一个值
 -->
 
<c:forEach items="${sList}" var="s" varStatus="vs">
	${s}---${vs.count}<br/>
</c:forEach>

(3)c:set 和 c:choose的使用(了解)
	<c:set var="count" value="4"/>
	<!-- 相当于 pageContext.setAttribute("count",4)  -->
	<c:choose>
		<c:when test="${ count ==1 }">
			计数1
		</c:when>
		<c:when test="${ count ==2}">
			计数2
		</c:when>
		<c:when test="${ count ==3 }">
			计数3
		</c:when>
		<c:otherwise>
			不在范围内
		</c:otherwise>
	</c:choose> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值