[学习笔记] JSP/Servlet技术之JSTL和EL

# 学习 # · 2020-09-24

EL表达式

1、EL表达式(Expression Language):定义了一系列的隐藏对象和操作符,使开发人员能很方便访问页面上下文,以及不同作用域内的对象。

2、EL表达式的作用:配合JSTL标签库使用,替代JSP页面中复杂的代码,简化JSP的输出。

3、EL表达式的特点:自动转换类型、使用简单。

4、EL表达式的语法:

${表达式}

(1)点操作符:访问对象的某个属性。

(2)[]操作符:

  ①当属姓名中包含特殊字符,只能使用[]操作符。

  ②访问数组时可以根据索引值来访问其中的元素。

  ③[]操作符中可以使用变量实现动态访问。

(3)关系操作符:

  ①==或eq:表示等于,结果返回false或true。

  ②!=或ne:表示不等于,结果返回true。

  ③<或lt:表示小于,结果返回false。

  ④>或gt:表示大于,结果返回true。

  ⑤<=或le:表示小于等于,结果返回false。

  ⑥>=或ge:表示大于等于,结果返回true。

(4)逻辑操作符:

  ①&&或and:表示逻辑与,结果返回false。

  ②||或or:表示逻辑或,结果返回true。

  ③!或not:表示逻辑非,结果返回false。

5、EL表达式隐式对象:

(1)作用域访问对象:

  ①pageScope:与页面作用域(page)中的属性相关联的Map类。

  ②requestScope:与请求作用域(request)中的属性相关联的Map类。

  ③sessionScope:与会话作用域(session)中的属性相关联的Map类。

  ④applicationScope:与应用程序作用域(application)中的属性相关联的Map类。

(2)参数访问对象:

  ①param:按照参数名称访问单一请求值的Map对象。

  ②paramValues:按照参数名称访问数组请求值的Map对象。

(3)JSP隐式对象:

  ①pageContext:提供对页面信息和JSP内置对象的访问,语法如${pageContext.request.contextPath}。


JSTL标签

1、JSTL(JSP Standard Tag Library):即JSP标准标签库,包含了在开发JSP页面时经常用到的一组标准标签。

2、JSTL的作用:简化JSP页面,提高代码的可读性和可维护性。

3、使用JSTL:

(1)下载两个JAR文件(taglibs-standard-spec-1.2.5.jar标准库定义包和taglibs-standard-spec-1.2.5.jar标准库实现包):https://tomcat.apache.org/download-taglibs.cgi

(2)在工程中引用两个jar文件和标签库描述符文件(.tld)。

(3)在需要使用JSTL的JSP页面中使用taglib指令导入标签库描述符文件。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
//通过uri属性引用某个标签库的配置文件
//通过prefix指定前缀。语法如<c:标签名>

JSTL核心标签库

1、通用标签库:

(1)<c:set>标签:设置作用域变量的值或者作用域变量的属性值。

//语法1:将value的值存储到范围为scope的变量variable中
<c:set var="变量名" value="值" scope="作用域">

//语法2:将value值设置到对象的属性中
<c:set value="赋予JavaBean对象属性的值" target="操作的JavaBean对象" property="JavaBean对象的属性名">

(2)<c:out>标签:用于将计算的表达式结果输出显示。

//语法1:不指定默认值
<c:out value="value">

//语法2:指定默认值
<c:out value="value" default="默认值">

(3)<c:remove>标签:用于移除指定作用域内的指定变量。

//语法1:移除指定变量,默认作用域为page
<c:remove var="变量名称" scope="作用域">

2、条件标签库:

(1)<c:if>标签:if语句功能。

//语法1:
<c:if test="判断条件" var="定义变量(可以省略)" scope="定义变量的储存范围">
    主体内容
</c:if>

(2)<c:choose>标签:与<c:when><c:otherwise>标签一起实现互斥条件的执行。

//语法1:
<c:choose var="定义变量" scope="定义变量的储存范围">
    <c:when test="判断条件">
        主体内容(如果真执行)
    </c:when>
    <c:otherwise>
        主体内容(否则执行)
    </c:otherwise>
</c:choose>

3、迭代标签库:<c:forEach>

(1)遍历集合对象的成员:

<c:forEach var="varName" items="collectionName" varStatus="varStatusName" begin="index1" end="index2" step="step">
    主体内容
</c:forEach>

//var属性:对当前成员的引用,即如果当循环到第一个成员,var就引用第一个成员,以此类推。
//items属性:被迭代的集合对象。
//varStatus属性:用于存放var引用的成员的相关信息,如索引等。
//begin属性:开始位置,默认为0。
//end属性:结束位置。
//step属性:循环步长,默认为1。

(2)指定语句的执行次数。

<c:forEach var="varName" varStatus="varStatusName" begin="index1" end="index2" step="step">
    主体内容
</c:forEach>

//var属性:对当前成员的引用。
//varStatus属性:用于存放var引用的成员的相关信息,如索引等。
//begin属性:开始位置,默认为0。
//end属性:结束位置。
//step属性:循环步长,默认为1。
如无特殊说明,本博所有文章均为博主原创。

如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/122/

评论