el 表达式以及JSTL详解

简介: JavaEE中的el 表达式以及JSTL详解

el表达式介绍:

(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让JSP 的代码更加简化。

el表达式的语法:

    ${表达式}
    注意:自带响应功能(相当于jsp中<%=表达式%>)

el表达式的使用:

el表达式获取请求数据

获取用户请求数据(请求实体)
            ${param.键名}  :获取请求实体中一个键一个值的数据
            ${paramValues.键名} :获取请求实体中同键不同值的数据,返回的是String数组,可以使用角标直接获取 
            

在这里插入图片描述
在这里插入图片描述

获取请求头数据

${header} : 返回所有的请求头数据,键值对形式
            ${header["键名"]} :返回指定的键的请求头数据
            ${headerValues["键名"]}:获取请求头数据相关对象的值
            

在这里插入图片描述

获取Cookie数据

${cookie} 获取所有的Cookie对象 键值对
            ${cookie.Cookie对象的键名}: 获取存储了指定Cookie数据的Cookie对象
            ${cookie.Cookie对象的键名.name} :获取存储了指定Cookie数据的Cookie对象的存储的键
            ${cookie.Cookie对象的键名.value}:获取存储了指定Cookie数据的Cookie对象的存储的值
            

在这里插入图片描述

java中的四大作用域

一、pageContext

1、生命周期:当对JSP的请求时开始,当响应结束时销毁。
2、作用范围:整个JSP页面,是四大作用域中最小的一个,即超过这个页面就不能够使用了。(所以使用pageContext对象向其它页面传递参数是不可能的.)

二、request

1、生命周期:在service 方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
2、作用范围:整个请求链(请求转发也存在)。
3、作用: 在整个请求链中共享数据。最常用到:在Servlet 中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去

三、session

HttpSession 在服务器中,为浏览器创建独一无二的内存空间,在其中保存会话相关的信息。
1、生命周期:在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存 中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。
如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。
如果调用session提供的invalidate(),可以立即销毁session。
2、作用范围:一次会话。
注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session不存在。如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。

四、application

1、生命周期:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。
2、作用范围:整个Web应用。

EL表达式获取作用域数据

作用域对象:pageContext request session application
        作用域数据:我们使用setAttribute方法存储的数据
        获取:
            1、普通字符串数据: ${键名}
            2、对象数据: ${键名.属性名}
            集合数据
            1、list集合: ${键名[角标]}
            2、Map集合: ${map集合作用域存储的键名.map集合存储的数据的键名}

在这里插入图片描述

作用域数据查找顺序

先后顺序:pageContext-->request-->session-->application

注:如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个作用域中都没有则什么都不显示

获取指定作用域数据

    ${pageScope.键名}           指明获取pageContext作用域中的数据
    ${requestScope.键名}        指明获取request作用域中的数据
    ${sessionScope.键名}        指明获取session作用域中的数据
    ${applicationScope.键名}    指明获取application作用域中的数据

在这里插入图片描述

EL表达式逻辑运算

算术运算:

+,-,*,/ 在EL表达式中可以直接进行算术运算

  ${算术表达式} 例如 :${1+2}
        注意:+表示算术运算,不能进行字符串连接
                逻辑运算:&&  || !
                    ${逻辑表达式}
                注意:没有单& 和单|
                比较运算:== != >,>=,<,<=
                    ${比较表达式}
                三目运算:
                    ${条件?值:值}

在这里插入图片描述

注意(技能点出没):

尤其关注三目运算符的使用,列如通过对el的使用,实现用户年龄小于20所在行显示为灰色,大于20显示绿色的效果。

在这里插入图片描述
在这里插入图片描述

el表达式的empty判断

格式:${empty 键名}        
作用:判断该键是否有存储有效数据

JSTL介绍

JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库

JSTL学习

作用:在jsp页面使用其可以非常方便的进行数据的处理。与使用java代码块方法相比,更加的简单,代码更加的简洁易读。
使用:
    核心标签库
流程:
    导入jar包,如果是myeclipse则自动导入,否则需要导入 jstl 1.2.jar
    引入标签库:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

基本标签:

c:out标签

作用:结合EL表达式将数据响应给浏览器,如果EL表达式没有取到数据则可以使用default属性声明默认值。
格式:out标签:<c:out value="${表达式}" default="默认值"></c:out>

在这里插入图片描述

c:set标签

作用:在jsp中将一些数据放到指定作用域里,默认pageContext
格式:set标签: <c:set value="数据" var="键名" scope="作用域名"></c:set>

在这里插入图片描述

c:remove标签

格式:<c:remove var="要删除数据的键名" scope="作用域名"/>
作用:将数据从指定的作用域中移除,默认是pageContext作用域,但是可以通过scope属性指明要删除的作用域数据。
注意:
     scope的值为:page  request  session  application
       remove标签:<c:remove var="要删除数据的键名" scope="作用域名"/>

在这里插入图片描述

注意(jsp方式实现数据的删除):

       使用pageContext.removeAttriute("键名"),                 此方法会将四个作用域中的符合要求的数据全部删除
       使用pageContext.removeAttriute(String name,int scope)  指明要删除的作用域中的数据 scope的值为 1pageContext,2request ,3 session,4 application
       使用request.removeAttibute("键名")                      删除当前作用域符合要求的数据
       使用session.removeAttibute("键名")                       删除当前作用域符合要求的数据
       使用application.removeAttibute("键名")                 删除当前作用域符合要求的数据

逻辑标签:

### 单分支判断标签
#### c:if标签

 格式: <c:if test="${表达式}">数据</c:if>
 作用:可以根据el表达式进行一定程度的单分支逻辑判断。

在这里插入图片描述

注:1、test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理

多分支判断标签:

c:choose标签

    格式:
        <c:choose>
                <c:when test="${表达式}"></c:when>
                <c:when test="${表达式}"></c:when>
                ..
                <c:otherwise></c:otherwise>
        </c:choose>
    作用:相当于java中的多分至选择语句if…else if…else if…else

在这里插入图片描述

注意:符合条件后只会执行一个分支,其他分支不会执行。

循环标签:

c:foreach标签

    格式:            
                <c:foreach>
                      循环体
                </c:foreach>
    作用:类似java整的foreach语句

在这里插入图片描述
属性:

begin:声明循环的开始位置
                    end:声明循环的结束位置
                    step:声明循环的步长
                    varStatus:声明变量记录循环状态 ,例如变量名:i
注意:记录的数据存储到了作用域中可以直接使用El表达式进行获取
                        示例:   ${i.index}  获取当次循环的下标
                              ${i.count}  获取当次循环的次数
                              ${i.first}  判断是否是第一次循环
                              ${i.last}         判断是否是最后一次循环
                              

在这里插入图片描述

items:声明要遍历的数据,可以是集合和数组等
    注意:要使用EL表达式来获取
var:声明变量记录每次遍历的结果。可以做循环体中使用使用EL表达式获取遍历出来的数据
                    

通过items、var属性遍历list、map集合

在这里插入图片描述
在这里插入图片描述

相关文章
|
6月前
EL表达式和Jstl常见的用法
EL表达式和Jstl常见的用法
|
XML SQL Java
EL表达式和JSTL
EL表达式和JSTL
104 0
|
6月前
|
Java 数据库
el表达式与jstl的用法
el表达式与jstl的用法
el表达式/jstl保留两位小数
el表达式/jstl保留两位小数
|
Java
JavaWeb|认识表达式语言(EL)
JavaWeb|认识表达式语言(EL)
106 0
QGS
|
存储 SQL XML
浅谈EL表达式和JSTL常用标签
EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。
QGS
96 0
|
存储 Java 编译器
JSP表达式语言(EL)
JSP表达式语言(EL)
97 0
|
存储 Java
EL和JSTL
EL和JSTL
134 0
EL和JSTL
|
XML SQL JavaScript
JavaWeb - JSTL、EL 表达式
JavaWeb - JSTL、EL 表达式
205 0
JavaWeb - JSTL、EL 表达式