EL表达式&JSTL标签

本文详细介绍了EL(Expression Language)表达式和JSTL(JavaServerPages Standard Tag Library)标签。EL表达式用于替代JSP页面中的复杂代码,具有自动类型转换和简洁的语法。文章讲解了EL的变量属性范围、运算符、案例及四大作用域的优先级。同时,还阐述了JSTL标签库的概念、优点,特别是核心标签库中的通用、条件和迭代标签的使用,通过实例展示了如何在JSP页面中应用这些标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EL表达式

概念

EL 就是Expression Language(表达式语言)

功能

替代JSP页面中的复杂代码

特点

  • 自动转换类型
  • 使用简单

语法

以 “ $ {”作为开始,以“}”作为结束直接使用变量名获取值。

变量属性范围名称

属性范围EL中的名称
pagepageScope
requestrequstScope
sessionsessionScope
applicationapplicationScope

运算符

  1. “[ ]” 获取对象属性
    栗子:${user.name} ——> ${user[name]}
  2. “ . ” 获取对象集合中的数据
    栗子:在Session中保存了一个(list)集合users(${sessionScope.user[1]} 获取集合中第二个值)在这里插入代码片

案例(输出姓名显示)

<body>
	 
	<%
		//request作用域
		request.setAttribute("request", "request苏衍珩");
		//session作用域
		session.setAttribute("session", "session苏衍珩");
		//application作用域
		application.setAttribute("application", "application苏衍珩");
		//page作用域
		pageContext.setAttribute("page", "page苏衍珩");
	%>
	
	<!-- 通过EL表达式获取作用域里面的值 -->
	${request}<br/>
	${session}<br/>
	${application}<br/>
	${page} 
</body>

效果图:
在这里插入图片描述

四大作用域

EL表达式是从四大作用域里面获取数据。在获取数据的时候,如果没有指定作用域,那直接根据作用域的优先级从高到低依次查找。

优先级

四大作用域的优先级:
在当前页面(页面没有发生跳转)
page>request>session>application
在当前页面(页面发生跳转)
request>session>application

隐式对象

  1. 作用域访问对象(pageScope、requestScope、sessionScope、applicationScope)
  2. 参数访问对象(param、paramValues)
  3. JSP隐式对象(pageContext)

介绍

对象名称说明
pageScope返回 页面范围 的变量名,这些名称已映射至相应的值
requestScope返回请求范围的变量名,这些名称已映射至相应的值
sessionScope返回会话范围 返回的变量名,这些名称已映射至相应的值
applicationScope返回应用范围内的变量,并将变量名映射至相应的值
param返回客户端的请求参数的字符串值
paramValues返回 映射至客户端的请求参数的一组值
pageContext提供对用户请求和页面信息的访问

JSTL标签

概念

JSTL(JavaServerPages Standard Tag Library),JSP标准标签库。

优点

提供一组标准标签、可用于编写各种动态 JSP 页面(ps:JSTL通常会与EL表达式合作实现JSP页面的编码)

核心标签库

通用标签

  • set:设置指定范围内的变量值
  • remove:计算表达式并将结果输出显示
  • out:删除指定范围内的变量

案例

插入使用核心标签的指令 :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<body>
set 标签用于给变量设置值和作用范围	scope= "page|request|session|application" 
<c:set var= "example" value="${100+1}" scope="session"  />	
out 标签在页面上显示信息或变量值 

<c:out value="${example}"/>

<c:remove var= "example" scope="session"/>
</body>

条件标签

if(if标签用于判断条件是否成立,与Java中的If语句作用相同)

语法

<c:if   test="codition"    var="name"    scope="application" >
<!-- test 判断条件表达式、返回true/false ;var变量名用于保存、返回的true/false ;scope指定var变量的作用域    -->

迭代标签

forEach(实现对集合中对象的遍历)

语法

<c:forEach  items=collection var=name begin=start   end=end  step=count>
		…循环体代码…
</forEach>
<!--ps:items指定要遍历的集合对象、var指定集合内数据的变量名称、begin指定从集合的第几位开始、end指定迭代到集合的第几位结束、Step指定迭代的增量。forEach是for循环语句的变体,实现集合对象(可以是list、数组等)的处理  -->

案例

<!-- 循环输出商品信息 -->
<c:forEach var="product" items="${requestScope.products}" varStatus="status">
<!-- 如果是偶数行,为该行换背景颜色 -->
    <tr <c:if test="${status.index % 2 == 1 }">style="background-color:rgb(219,241,212);"</c:if>>
        <td>${product.name }</td>
        <td>${product.area }</td>
        <td>${product.price }</td>
    </tr>
</c:forEach>

效果图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值