EL 表达式

本文详细介绍了EL(Expression Language)表达式在JSP文件中的使用,包括其简化命令格式、作用域对象别名、数据读取路径及运算表达式。EL表达式简化了传统JSP中的Java代码,使得数据获取和运算更加简洁。同时,文章还提到了EL表达式的内置对象,如`param`,用于读取请求参数。通过EL表达式,开发者可以更高效地处理页面数据和逻辑。
摘要由CSDN通过智能技术生成

EL表达式

  • 命令格式:${作用域对象别名.共享数据}
<!--传统写法:-->
<%
	Student stu = (Student)request.getAttribute("key");
 %>
    学院编号:<%=stu.getSid()%>
<!--用EL表达式之后 -->
     学院编号:${requestScope.key.sid}
  • 命令作用:

    1. EL 表达式是 EL 工具包提供的一种特殊的命令格式
    2. EL 表达式在 JSP 文件上使用
    3. 负责在 JSP 文件上从作用域对象读取指定的共享数据并输出到响应体
  • 作用域对象别名

  1. JSP文件可以使用的作用域对象
作用域对象作用域对象的别名俗称EL表达式提供的作用域别名
ServletContextapplication全局作用域对象${applicationScope.共享数据名}
HttpSessionsession会话作用域对象${sessionScope.共享数据名}
HttpServletRequestrequest请求作用域对象${requestScope.共享数据名}
PageContextpageContext当前页作用域对象${pageScope.共享数据名}

注:其中当前页作用域对象,是JSP文件独有的作用域对象Servlet中不存在,在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用,不能共享给其他Servlet或则其他JSP文件,主要用于JSTL标签与JSP文件之间数据共享数据

EL 表达式简化版

  • 命令格式 :${共享数据名}

  • 命令作用: EL表达式允许开发人员开发时省略作用域对象别名

  • 工作原理:
    EL表达式简化版由于没有指定作用域对象,所以在执行时采用【猜】的算法。
    首先到【pageContext】定位共享数据,如果存在直接读取输出并结束执行,如果【pageContext】没有定位成功,到【request】定位共享数据,如果存在直接读取输出并结束执行,如果在【request】没有定位成功,到【session】定位共享数据,如果存在直接读取输出并结束执行,如果在【session】没有定位成功,到【application】定位共享数据,如果存在直接读取输出并结束执行,如【application】没有定位成功,返回null

      	**pageContext--->request--->session--->application**
    

EL 表达式-支持运算表达式

  1. 数学运算

  2. 关系运算: > >= == < <= != 对应的 gt ge eq lt le !=

  3. 逻辑运算: && || !

<%
    String num1 = (String)request.getAttribute("key1");
    Integer num2 = (Integer)request.getAttribute("key2");
    int sum = Integer.valueOf(num1) + num2 ;
%>
计算结果是 : <%=sum%>
<hr>
EL 表达式计算结果 : ${key1 + key2}
<!--传统java命令方式实现关系运算输出-->
<%
    String age = (String)request.getAttribute("age");
    if(Integer.valueOf(age) >= 18){
%>
    欢迎欢迎
<%
    }else {
%>
    谢绝入内
<%
    }
%>
<hr>
EL 表达式做  :  ${age>=18 ? "欢迎欢迎" : "谢绝入内"}

EL 表达式提供内置对象

  1. 命令格式: ${param.请求参数名}

  2. 命令作用: 通过请求对象读取当前请求包中请求参数内容,并将请求参数内容写入到响应体

e.g:

<!--
    地址栏输入: http://localhost:8888/myWeb/index_1.jsp?userName=mike&password=123
-->
传统方法:
<%
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");
%>
用户名 : <%=userName%><br>
密码 :  <%=password%>
<hr>

EL表达式内置对象 param 输出  
            用户名:${param.userName}<br>
             密码 : ${param.password}
<!--
    http://localhost:8888/myWeb/index_2.jsp?pageNo=1&pageNo=2&pageNo=3
       (浏览器里边携带了多少个请求参数呢? 不是3个 是1个 叫做pageNo 而这个pageNo关联了3个值)
        此时 pageNo 请求参数在请求包以数组的形式存在
            pageNo : [1,2,3]
-->
<%
    String arr[] = request.getParameterValues("pageNo");
%>
第一个值<%=arr[0]%><br>
第一个值<%=arr[1]%><br>
第一个值<%=arr[2]%>

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值