使用EL和JSTL简化JSP

本文介绍EL表达式的基本概念与用法,包括语法特性、隐式对象及Empty前缀操作符,并详细讲解JSTL标签库的核心标签、条件标签与迭代标签的应用。

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

EL表达式

定义

  • Experssion Language 表达式语言,替代JSP页面中访问数据时的复杂代码,执行表达式。

特点

  • 使用简单

语法

${表达式}
点操作符,可以访问对象的某个属性
[]操作符,可以访问对象的某个属性及数组元素

EL表达式的隐式对象

1.作用域访问对象

  • pageScope对象

  • requestScope对象

  • sessionScope对象

  • applicationScope对象

每个作用域对象都和JSP的域对象一一关联。当访问的数据没有指定域时,会按照顺序从小到大找。

2.参数访问对象

  • param对象 获取参数

  • paramValues对象 返回数组,获取多个参数

3.JSP隐式访问对象

  • pageContext 可以访问jsp的内置对象

不能直接访问JSP内置对象: 通过pageContext去访问
如: pageContext.request.getAttribute("map")

4.首部访问对象

  • header

  • headerValue

  • cookie

用于访问请求头的数据。

5.初始化访问对象

  • initParam对象

Empty前缀操作符

Empty运算符是一个前缀操作符,用于检测一个变量是否为空

${empty username}   true
${not empty username} false
${! empty username}   false

JSTL标签库

定义

  • JSP标准标签库(JSP Standard Tag Library)

  • 包含一组开发JSP页面时常见功能的标准标签。

    核心标签库有
    通用标签库 set out remove
    条件标签库 if  choose
    迭代标签库 foreach 

优点

  • 不用嵌入java代码就可以实现JSP页面逻辑控制

  • 配合EL表达式,方便的实现JSP页面编码。

  • 代码简洁。

在idea中JSTL的引入

  1. 在项目中引入JSTL依赖的jar文件

  2. 使用taglib指令导入标签库

prefix 设置前缀名

uri 设置核心文件

通用标签库

out标签

  • 用于输出表达式的结果,比EL输出功能更加丰富。

语法

<c:out value="" default="" escapeXml="true|false"/>

value : 输出的结果,可通过EL表达式去获取

default: value的值为空时,输出默认值

escapeXml : 表示是否转换特殊字符, false 转换

set标签

  • 用于设置作用域变量的值或属性值

语法

<c:set var="变量名" value="值" target="对象名" property="属性" scope= "存储的作用域"/>

以变量的形式赋值

<c: set var="name" value="张三" scope="request"/>  //指定request作用域的name变量

以对象的形式赋值

<%
   Student stu=new Student();
   request.setAttribte("stu",stu);
%>
//通过EL表达式获取对象,给对象的name属性赋值
<c: set value="张三" target="${stu}" property="name"/> 

注意: 通过对象属性赋值时,无需指定作用域,因为在设置值之前,对象已经指定了作用域,再指定会冲突

remove标签

  • 用于移除指定作用域内的指定变量

语法

<c:remove var="<String>" scope="<String>"/>

条件标签库

if标签

  • 用于实现if语句的功能。

语法

<c:if test="条件" var ="存放表达式的执行结果" scope="变量的存储变量"/>

choose标签、when标签、otherwise标签

  • 这些标签配合实现互斥条件的执行,类似java语言的if-else if-else 语句或者switch。

语法

<c:choose>
    <c:when test="condition1">    //if 
        主体内容
    </c:when>
   <c:when test="condition2">    //else if
       主体内容
   </c:when>
    <c:otherwise>                //else
        主体内容
    </c:otherwise>
</c:choose>

如果第一个条件不符合,就会执行下面的,继续执行。

迭代标签库

forEach标签

  • 使用该标签可以很方便地实现迭代操作。

遍历两种语法格式

1.遍历集合

<c:forEach  var="引用成员的变量"  items="集合对象" varStatus="存储索引等成员相关信息"></c:forEach>

2.常规循环

<c:forEach  var="引用成员的变量"  varStatus="存储索引等成员相关信息" begin="beginIndex" end="endIndex" step="类似i++"></c:forEach>

常规循环一般用于决定循环的次数,就是普通for循环。

varStatus : 存放var属性的成员信息,如索引。

begin: 属性表示开始的位置

end: 属性表示结束的位置

step: 表示循环的步长,类似自增或自减

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值