JavaWeb学习之EL表达式和JSTL标签库

EL表达式和JSTL标签库

EL表达式

  • EL表达式的作用
    EL表达式的全称是Expression Language,即表达式语言。EL表达式主要代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。因为EL表达式在输出数据的时候,要比jsp的表达式脚本简洁很多。
    EL表达式的格式是:${表达式},EL表达式在输出null值的时候输出的是空串,jsp表达式脚本在输出null值的时候,输出的是null字符串
  • EL表达式搜索域数据的顺序
    EL表达式主要是在jsp页面中输出数据,而主要是输出域对象中保存的数据。当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
<% 
	request.setAttribute("key","request");
	session.setAttribute("key","session");
	pageContext.setAttribute("key","pageContext");
	application.setAttribute("key","application");
%>
${key}
  • EL表达式输出Bean的普通属性、数组属性、List属性和Map属性
<body>
输出Bean对象:${对象名}
输出Bean的普通属性:${对象名.属性名}
输出Bean的数组属性:${对象名.数组名[index]}
输出Bean的List集合元素值:${对象名.List名}
输出Bean的Map集合个别元素值:${对象名.Map名.key值}
</body>

需要注意的是,输出Bean对象中的属性是通过属性的get方法查询的,因此属性和get方法需要相互对应

  • EL表达式——运算
    EL表达式支持关系运算,逻辑运算和算数运算,基础规则和java中的运算类似。语法为${运算表达式}
    • 关系运算:
      在这里插入图片描述
    • 逻辑运算
      在这里插入图片描述
    • 算数运算
      在这里插入图片描述
    • empty运算
      empty运算可以判断一个数据是否为空,如果为空则输出true,否则为false
      ${empty 值}
      • 值为null时为空
      • 值为空串时为空
      • 值为Object类型的数组长度为0时为空
      • 值为list集合或者map集合,元素为0时为空
    • “.”点运算和[]中括号运算符
      点运算可以用于输出Bean对象中某个属性的值;中括号运算可以输出有序集合中某个元素的值;并且中括号运算还可以输出map集合中key里含有特殊字符的key的值
//当map中含有以下状态的值时
Map<String , Object> map = new HashMap<>();
map.put("a.a.a" , 1);
map.put("b+b+b" , 2);
map.put("c-c-c" , 3);
request.satAttribute("map",map);
//因此在使用EL表达式时,不可能使用${requestScope.map.a.a.a}或者${requestScope.map.b+b+b}的形式去获取数据
${requestScope.map[a.a.a]}
${requestScope.map[b+b+b]}
${requestScope.map[c-c-c]}
  • EL表达式的11个隐含对象
    EL表达式中隐含有11个内置对象,这是EL表达式中自己定义的,可以直接使用
    • pageContext:他可以获取jsp中的九大内置对象
    • pageScope:可以获取pageContext域中的数据
    • requestScope:可以获取request域中的数据(获取的数据相当于request.getAttribute)
    • sessionScope:可以获取Session域中的数据
    • applicationScope:可以获取application域中的数据
    • param:可以获取请求参数的值(这里相当于request.getParameter)
    • paramValues:可以获取请求参数的值(多个值时使用)
    • header:可以获取请求头的信息
    • headerValues:可以获取请求头的信息(多个值时使用)
    • cookie:可以获取当前请求的Cookie信息
    • initParam:可以获取在web.xml中配置的<context-param>上下文参数
      EL获取域中属性:${域对象名.key值},如${requestScope.key1}
      pageContext对象的使用
      • 获取协议:${pageContext.request.scheme}
      • 获取服务器IP:${pageContext.request.serverName}
      • 获取服务器端口:${pageContext.request.serverPort}
      • 获取工程路径:${pageContext.request.contextPath}
      • 获取请求方法:${pageContext.request.method}
      • 获取客户端ip地址:${pageContext.request.remoteHost}
      • 获取会话的id编号:${pageContext.session.id}

JSTL标签库

JSTL标签库全程是指JSP Standard Tag Library 。是一个不断完善的开放源代码的JSP标签库。主要是为了替换代码脚本,使得JSP页面更加简洁。
JSTL由五个不同功能的标签库组成:在这里插入图片描述
其中由于避免在web层与数据库进行一些交互,sql库和x库已经很少推荐使用了,其中核心标签库(c库)是JSTL使用的核心。
在jsp标签库中使用taglib指令引入标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

core核心库的使用
  • <c:set/>,set标签用于向域中保存数据,如<c:set scope="session" var="abc" value="value"/>
  • <c:if></c:if>,用于做if判断,test属性表示判断的条件,使用EL表达式输出,如:<c:if test="${12 == 12}"></c:if>
  • . <c:choose> <c:when> <c:otherwise>,用于做多路判断,和java中的switch-case-default非常接近
<c:choose>
	<c:when test=""></c:when>
	<c:when test=""></c:when>
	<c:otherwise test="">
		<!-- 当然在这些分支中也可以嵌套多路判断标签 -->
		<c:choose>
			<c:when test=""></c:when>
			<c:when test=""></c:when>
			<c:otherwise test="">
				<!-- 当然在这些分支中也可以嵌套多路判断标签 -->
			</c:otherwise>
		</c:choose>
	</c:otherwise>
</c:choose>
  • <c:foreach/>,用于遍历输出使用,可以用于遍历输出数组、List集合、Map集合等,使用Map集合为例说明
<%
	Map<String,Object> map = new HashMap<String, Object>(); 
	map.put("key1", "value1"); 
	map.put("key2", "value2"); 
	map.put("key3", "value3");

	request.setAttribute("map" , map);
%>

<c:foreach items="${requestScope.map}" var="item">
	map的内容:${item.key} = ${item.value}
</c:foreach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值