EL表达式

  • 传统JSP中用Java代码显示数据的弊端:类型转换,需要处理 null
  • 目的:消除jsp中的Java代码

语法:

${EL表达式}

  1. EL不需要导包
  2. 在EL中调用属性,其实是调用的getXxx()方法

${范围.对象.属性.属性的属性}

  1. . :使用方便
  2. [] :如果是常量属性,需要使用双引号/单引号引起来;比点操作符更加强大

[]优点:

  1. 可以容纳一些特殊符号 ". ? -"
  2. []可以容纳变量属性(可以动态赋值)

    String x = "a";
    ${requestScope.a}等价于${requestScope["a"]}等价于${${requestScope[x]}
  3. 可以处理数组
    ${requestScope.arr[0]}

EL隐含对象

Scope对象(EL域对象)

pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

  • 如果不指定域对象,则默认根据从小到大顺序依次取值。

param和paramValues对象

param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。
$(param.name)
$(paramValues.name[0])

pageContext对象

pageContext对象是JSP中pageContext对象的引用。通过pageContext对象,可以访问JSP中所有隐式对象。

${pageContext}
${pageContext.request}
${pageContext.sessoin}
${pageContext.request.serverPort}
  • 方法名去掉括号和get并且首字母小写

JSTL

  • 需要引入jar :jstl.jar
  • Maven配置

            <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            </dependency>
  • 引入tablib <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

在IDEA中配置Maven,在jsp前加上 <%@ page isELIgnored="false"%>才能正确解析EL表达式

核心标签
格式化标签
SQL 标签
XML 标签
JSTL 函数

核心标签

<c:set>赋值

I. 在某个作用域之中(4个范围对象),给某个变量赋值

    <%-- 
        request.setAttribute("name", "zhangsan") ;
    --%>
        <c:set var="name"    value="zhangsan"   scope="request"/>
        ${requestScope.name }

<c:set var="变量名" value="变量值" scope="4个范围对象的作用域"/>

II. 给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)

        <c:set target="${requestScope.student}" property="sname"  value="zxs" />

III. 给map对象赋值

        <c:set target="${requestScope.countries}" property="cn"  value="中国" />

<c:set target="对象" property="对象的属性" value="赋值" />

  • 注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)

<c:out>显示

true:<c:out value='<a href="https://www.baidu.com">百度</a>' default="当value为空的,显示的默认值" escapeXml="true" />

false:    <c:out value='<a href="https://www.baidu.com">百度</a>' escapeXml="false" />

显示如下:

<c:remove >删除属性

<c:remove var="a" scope="request"/>
删除request域中删除a变量

选择语句

<c:if test="${1>0}" scope="request" var="result">
    true
</c:if>

result存储判断的bool值

多重if:

<c:choose>
    <c:when test=""></c:when>
    <c:when test=""></c:when>
    <c:otherwise></c:otherwise>
</c:choose>
  • 在使用 test=""一定要注意后面是否有空格

迭代

<c:forEach begin="0" end="5" step="1" varStatus="status">
    ${status.index}
</c:forEach>
<c:forEach var="name" items="${集合}">
    ${name}
</c:forEach>

格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。

SQL 标签

JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。

XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。

JSTL 函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。


参考链接:




扫一扫在手机打开当前页