EL表达式属性介绍

(26)一篇掌握EL表达式如何代替 jsp 页面中的表达式脚本(EL表达式的运算、EL表达式的11 个隐含对象) 这里写目录标题一、请求转发的使用说明:二、EL 表达式1.什么是 EL表达式,EL 表达式的作用?2.EL 表达式搜索域数据的顺序3.EL 表达式输出 Bean 的普通属性,数组属性。List 集合属性,map 集合属性4.EL表达式中的运算:5.EL 表达式的 11 个隐含对象: 一、请求转发的使用说明: 1.请求转发只有一次请求, 2.不能直接访问jsp页面,必须先访问Servlet程序才能将信息保存到request域中。 3.xml配置文件必须重启服务器之后才能生效。 二、EL 表达式 1.什么是 阅读详情
EL表达式相关属性介绍:
 1、EL简介
 1)语法结构
        ${expression}
 2)[]与.运算符
      EL 提供.和[]两种运算符来存取数据。
      当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。
 例如:
          ${user.My-Name}应当改为${user["My-Name"] }
      如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
          ${sessionScope.user[data]}中data 是一个变量
 3)变量
      EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为
 username的变量。
      因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、
 Application范围查找。
      假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,
 就回传null。
      属性范围在EL中的名称
          Page PageScope
          Request RequestScope
          Session SessionScope
          Application ApplicationScope
 4) 1--EL表达式用${}表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码.
 2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}.
 ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组
 值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话
 范围内的变量.applicationScope表示应用范围的变量.
 3 --<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
 止.JSP2.0中默认的启用EL语言.
              4-- EL语言可显示 逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结
 果是false 算术表达式如 ${5+5} 结果是10
              5--EL中的变量搜索范围是:page request session application 点运算符(.)和"[ ]"都是
 表示获取变量的值.区别是[ ]可以显示非词类的变量
 
 2、EL隐含对象
 1)与范围有关的隐含对象
 与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和
 applicationScope;
 它们基本上就和JSP的pageContext、request、session和application一样;
 在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得
 其他相关信息。
 例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
      session.getAttribute("username") 取得username的值,
 在EL中则使用下列方法
      ${sessionScope.username}
 2)与输入有关的隐含对象
 与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
 例如我们要取得用户的请求参数时,可以利用下列方法:
      request.getParameter(String name)
      request.getParameterValues(String name)
 在EL中则可以使用param和paramValues两者来取得数据。
      ${param.name}
      ${paramValues.name}
 
 3.其他隐含对象
 1)cookie
 JSTL并没有提供设定cookie的动作,
 例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry} 来
 取得它。
 2)header和headerValues
 header 储存用户浏览器和服务端用来沟通的数据
 例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
 另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得
 这些值。
 3)initParam
 initParam取得设定web站点的环境参数(Context)
 例:一般的方法String userid = (String)application.getInitParameter("userid");
      可以使用 ${initParam.userid}来取得名称为userid
 4)pageContext
 pageContext取得其他有关用户要求或页面的详细信息。
      ${pageContext.request.queryString} 取得请求的参数字符串
      ${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
      ${pageContext.request.contextPath} 服务的web application 的名称
      ${pageContext.request.method} 取得HTTP 的方法(GET、POST)
      ${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
      ${pageContext.request.remoteUser} 取得用户名称
      ${pageContext.request.remoteAddr } 取得用户的IP 地址
      ${pageContext.session.new} 判断session 是否为新的
      ${pageContext.session.id} 取得session 的ID
      ${pageContext.servletContext.serverInfo} 取得主机端的服务信息
    4) 条件标签>
 1.算术运算符有五个:+、-、*或$、/或div、%或mod
 2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
 3.逻辑运算符有三个:&&或and、||或or、!或not
 4.其它运算符有三个:Empty运算符、条件运算符、()运算符
      例:${empty param.name}、${A?B:C}、${A*(B+C)}
 5) EL函数(functions)
 语法:ns:function( arg1, arg2, arg3 …. argN)
 其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置
        6) 补充:
 <%@ taglib prefix="c" http://java.sun.com/jstl/core_rt">http://java.sun.com/jstl/core_rt" %>
 FOREACH:
 <c:forEach items="${messages}"
 var="item"
 begin="0"
 end="9"
 step="1"
 varStatus="var">
 ……
 </c:forEach>
 OUT:
 <c:out value="/${logininfo.username}"/>
 c:out>将value 中的内容输出到当前位置,这里也就是把logininfo 对象的
 username属性值输出到页面当前位置。
 ${……}是JSP2.0 中的Expression Language(EL)的语法。它定义了一个表达式,
 其中的表达式可以是一个常量(如上),也可以是一个具体的表达语句(如forEach循环体中
 的情况)。典型案例如下:
 ? ${logininfo.username}
 这表明引用logininfo 对象的username 属性。我们可以通过“.”操作符引
 用对象的属性,也可以用“[]”引用对象属性,如${logininfo[username]}
 与${logininfo.username}达到了同样的效果。
 “[]”引用方式的意义在于,如果属性名中出现了特殊字符,如“.”或者“-”,
 此时就必须使用“[]”获取属性值以避免语法上的冲突(系统开发时应尽量避免
 这一现象的出现)。
 与之等同的JSP Script大致如下:
 LoginInfo logininfo =
 (LoginInfo)session.getAttribute(“logininfo”);
 String username = logininfo.getUsername();
 可以看到,EL大大节省了编码量。
 这里引出的另外一个问题就是,EL 将从哪里找到logininfo 对象,对于
 ${logininfo.username}这样的表达式而言,首先会从当前页面中寻找之前是
 否定义了变量logininfo,如果没有找到则依次到Request、Session、
 Application 范围内寻找,直到找到为止。如果直到最后依然没有找到匹配的
 变量,则返回null.
 如果我们需要指定变量的寻找范围,可以在EL表达式中指定搜寻范围:
 ${pageScope.logininfo.username}
 ${requestScope.logininfo.username}
 ${sessionScope.logininfo.username}
 ${applicationScope.logininfo.username}
 在Spring 中,所有逻辑处理单元返回的结果数据,都将作为Attribute 被放
 置到HttpServletRequest 对象中返回(具体实现可参见Spring 源码中
 org.springframework.web.servlet.view.InternalResourceView.
 exposeModelAsRequestAttributes方法的实现代码),也就是说Spring
 MVC 中,结果数据对象默认都是requestScope。因此,在Spring MVC 中,
 以下寻址方法应慎用:
 ${sessionScope.logininfo.username}
 ${applicationScope.logininfo.username}
 ? ${1+2}
 结果为表达式计算结果,即整数值3。
 ? ${i>1}
 如果变量值i>1的话,将返回bool类型true。与上例比较,可以发现EL会自
 动根据表达式计算结果返回不同的数据类型。
 表达式的写法与java代码中的表达式编写方式大致相同。
 IF / CHOOSE:
 <c:if test="${var.index % 2 == 0}">
 *
 </c:if>
 判定条件一般为一个EL表达式。
 <c:if>并没有提供else子句,使用的时候可能有些不便,此时我们可以通过<c:choose>
 tag来达到类似的目的:
 <c:choose>
 <c:when test="${var.index % 2 == 0}">
 *
 </c:when>
 <c:otherwise>
 !
 </c:otherwise>
 </c:choose>
 类似Java 中的switch 语句,<c:choose>提供了复杂判定条件下的简化处理手法。其
 中<c:when>子句类似case子句,可以出现多次。上面的代码,在奇数行时输出“*”号,
 而偶数行时输出“!”。
 经验:1、如果EL表达式无法解析:– <%@ page isELIgnored="false" %>
 
 一、 JSTL
 
 1、EL运算符>;
        2)var指定变量,并把EL运算结果赋值给该变量值为true/false;
        3)scope:指定 var变量的范围;
 
 
 6、迭代标签
 语法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“
 end=”int” step=“int” >
            //循环体
            </c:forEach>
      说明:1)items:是集合,用EL表达式;
        2)var:变量名,存放items
        3)varStatus: 显示循环状态的变量
 ①index:从0开始;
                      ②count:元素位置,从1开始;
                      ③first:如果是第一个元素则显示true;
                      ④last:如果是最后一个元素则显示true;
        4)begin:循环的初始值(整型);
        5)end: 循环结束 ;
        6)step:步长,循环间隔的数值;
 7、<c:otherwise>标签
      例:
 如果user.wealthy值true,则显示user.wealthy is true.
 <c:choose>
 <c:when test="">
 user.generous is true.
 </c:when>
 <c:when test="">
 user.stingy is true.
 </c:when>
 <c:otherwise>
 user.generous and user.stingy are false.
 </c:otherwise>
 </c:choose>
 说明:只有当条件user.generous返回值是true时,才显示user.generous is true.
 只有当条件user.stingy返回值是true时,才显示user.stingy is true.
 其它所有的情况(即user.generous和user.stingy的值都不为true)全部显示user.generous and
 user.stingy are false.
 由于JSTL没有形如if (){…} else {…}的条件语句,所以这种形式的语句只能用<c:choose>、
 <c:when>和<c:otherwise>标签共同来完成了。
 8、c:forTokens>标签
 说明:
 items 进行循环的项目 是 无
 delims 分割符 是 无
 begin 开始条件 否 0
 end 结束条件 否 集合中的最后一个项目
 step 步长 否 1
 var 代表当前项目的变量名 否 无
 varStatus 显示循环状态的变量 否 无
 例子:
 <c:forTokens items="a:b:c:d" delims=":" var="token">
 <c:out value=""/>
 </c:forTokens>
 这个标签的使用相当于java.util.StringTokenizer类。在这里将字符串a:b:c:d以:分开循环四次,
 token是循环到当前分割到的字符串。
 9、<c:redirect>标签
      说明:标签将请求重新定向到另外一个页面,它有以下属性 属性 描 述 是否必须 缺省值
 url url地址 是 无
 context /后跟本地web应用程序的名字 否 当前应用程序
 例子:
 <c:redirect /'>http://www.yourname.com/login.jsp"/>
 将请求重新定向到http://www.yourname.com/login.jsp页,相当于response.setRedirect
 ("http://www.yourname.com/login.jsp");
 10、<c:param>标签
      说明:<c:param>标签用来传递参数给一个重定向或包含页面,它有以下属性属 性 描 述 是否
 必须 缺省值
 name 在request参数中设置的变量名 是 无
 value 在request参数中设置的变量值 否 无
 例子:
 <c:redirect url="login.jsp">
 <c:param name="id" value="888"/>
 </c:redirect>
 将参数888以id为名字传递到login.jsp页面,相当于login.jsp?id=888
 11、<fmt:>格式化标签
      说明:需要导入 <%@ taglib prefix="fmt" http://java.sun.com/jsp/jstl/fmt">http://java.sun.com/jsp/jstl/fmt" %>
       1)格式化日期<fmt:formatDate value=“” pattern=“yyyy-MM-dd HH:mm:ss”/>
                Value:通过EL表达式或<%new Date() %> 取的日期值;
                Pattern:输出的日期格式;

     2) 格式化数字<fmt:formatNumber
 value="${n}" pattern="###,###.##" />
保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试 本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。 阅读详情

相关推荐

贝塞尔曲线在机器人路径平滑中的实战应用与优化

本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。

weixin_29051811的博客 307

简单说说vue中的el属性

每个vue2.x项目中我们都会看到入口文件(即main.js)中,在生成根实例时会配置el属性,而我们自己创建的组件中则不能配置该属性,下面引用了官方文档中对el属性的说明: el 类型:string | Element 限制:只在用 new 创建实例时生效。 详细: 提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。可以是 CSS 选择器,也可以是一个 HTMLElement 实例。 在实例挂载之后,元素可以用 vm.el访问。如果在实例化时存在这个选项,实例将立即进入编译过程,否则,

树上骑个猴的博客 1万+

Matlab PolySpace 静态分析实战:从零搭建嵌入式代码安全防线

本文详细介绍了如何使用Matlab PolySpace进行嵌入式代码静态分析,从环境搭建到实战配置,帮助开发者提前发现内存溢出、未初始化变量等潜在缺陷。通过案例分享和进阶技巧,展示如何提升代码安全性和可靠性,特别适合汽车ECU、医疗设备等安全关键系统开发。

weixin_33701617的博客 602

Vue-$el属性

Vue.js自定义指令可以用于扩展HTML元素功能,其中用到了$el属性。el.focus();});$el提供了一种在Vue中直接操作DOM元素的途径。但实际开发中,要谨慎使用$el属性,避免过度依赖$el破坏Vue.js数据驱动的优势。充分利用$el属性的强大功能,结合Vue.js其他API,构建更加灵活高效的Vue.js应用程序。

qq_37581764的博客 2701

通达信【雷霆尊者排序】实战指南:高胜率竞价指标解析与优化策略

本文详细解析了通达信【雷霆尊者排序】指标在集合竞价阶段的应用,提供从基础设置到实战解码的完整指南。文章重点剖析了‘雷霆’、‘使者’、‘精选’等核心信号的逻辑与共振策略,并分享了如何结合K线、市场情绪进行综合研判与风险控制,旨在帮助短线交易者提升早盘选股效率与胜率。

pear55的博客 953

UFS Link Startup全流程解析:从硬件初始化到链路稳定的5个关键阶段

本文详细解析了UFS Link Startup的全流程,从硬件初始化到链路稳定的5个关键阶段,包括初始化阶段、数据通道发现、数据通道重新对齐、链路启动收尾和能力交换阶段。通过时序分析、代码实现和实际案例,帮助开发者掌握UFS协议链路启动的技术细节,确保设备与主机之间的可靠通信。

weixin_30687051的博客 431

深入 Vue.js 的心脏:全面剖析 $el 属性

el。

weixin_63490470的博客 1763

Marin说PCB之LPDDR5的布线注意事项--03

这个规则中是把每个字节中的WCK to RDQS 以及DM / DQ to WCK等长规则都加到了DM / DQ这个等长规则中去了,因为芯片手册上的设计要求中的DM / DQ这个group的等长误差是+-50MIL, WCK to RDQS的等长group的规则是62.5MIL,DM / DQ to WCK等长group的规则是相对松一些是150MIL。其实上面的等长规则还是建少了一些的,例如手册上要求的每个channel的WCK0:1,WCK2:3等长误差在+-488MIL,这个规则建议还是补上去吧。

weixin_45223454的博客 1230

关于vue中的el属性

el是vue中的一个重要属性,存在于根实例或者需要被挂载的父组件中,用于指定vue实例将要管理的DOM元素。这意味着当我们创建vue的根实例时,我们可以通过el属性来告诉vue哪个DOM元素应该被实例接管。

moon_zq的博客 747

CAPL实战:从零构建HEX文件解析器,赋能UDS刷写

本文详细介绍了如何使用CAPL从零构建HEX文件解析器,以支持UDS刷写操作。通过解析HEX文件格式、设计状态机、优化数据结构与算法,实现高效准确的固件数据处理,并提供了与UDS刷写流程对接的工程化实践建议。

weixin_28726391的博客 444

芒果YOLO11改进145:Loss损失函数KLD:即插即用 NeurIPS顶会论文,独家首发原创新颖|通过 Kullback-Leibler 散度学习用于目标检测的高精度边界框

旋转检测Loss损失函数KLD:即插即用 NeurIPS顶会论文,独家首发原创新颖|通过 Kullback-Leibler 散度学习用于目标检测的高精度边界框

包括YOLOv5、YOLOv7、YOLOv8等模型改进 567

EL表达式

文章目录EL表达式什么是EL表达式EL表达式搜索域数据的顺序EL表达式输出Bean的普通属性,数组属性、List集合属性、map集合属性。EL表达式--运算关系运算逻辑运算算数运算empty运算三元运算“.”运算与“[]”运算EL表达式中的11个隐含对象EL获取四个特定域中的属性Scope与域的使用param与paramValues的使用header与headerValues的使用cookie与initParam使用 EL表达式 什么是EL表达式 EL表达式全称是Expreetion Language,是表

weixin_46245201的博客 162

AI测试干货:让大语言模型稳定输出 JSON 的四种实现方案

用大语言模型做测试用例生成、数据提取时,最头疼的就是让它老老实实返回 JSON。你以为它会给你 `{"name":"张三"}`,结果它来一句"好的,这是生成结果:```json...",或者干脆在 JSON 里加注释,直接把你的 `json.loads()` 干崩溃。 模型本质上是个话痨,天生爱解释。但我们要的是结构化数据,不是聊天记录。我整理了四种实战方案,从最简单的提示词技巧到工程化框架,覆盖了从快速验证到生产环境的各种场景。

blues_C的博客 957

jsp——EL表达式

1. 什么是EL表达式,有什么作用。 EL表达式全称:Expression Language ,是表达式语言。 EL表达式的作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。因为EL表达式在输出数据的时候,要比jsp的表达式简洁很多。 <%-- Created by IntelliJ IDEA. User: Administrator Date: 2021/12/13 Time: 20:03 To chang...

PengK_aha的博客 3132

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JSF 的el表达式语言

至此,你已经见过一些JSF表达式语言(EL)的例子——你知道的,即所有位于#号之后的一对花括号之中的字符串("#{...}")。EL的主要用途是使你可以引用和更新bean的属性,或者执行简单的语句,而不用写完整的Java 代码。在JSF中,表达式通常用来关联UI组件属性至后台bean或者应用中的模型对象。它们在运行时求解(通常是视图被显示时),而不是在应用被编译时。 JSF EL基于JSP

笔墨伺候的专栏 3329

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

EL表达式获取对象属性的原理

以表达式${user.name}为例EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。其实你要了解EL表达式的运行原理,它其实后台也对应的Java代码,它会先将你EL表达式...

全场梦游c的博客 1644

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Web项目中的EL表达式

EL表达式,利用EL表达式替代jsp表达式

wangligong的博客 2760

EL使用介绍

EL全称:Expression Language.表达式语言 作用:主要用来输出域对象中的属性值 EL表达式的查询规则:  先从page域中开始查找,找到后直接返回,不再向其他域中查找,如果找不到再去request域中查找,以此类推…  如果在application域中仍找不到则返回空串 EL给我们提供了四个Scope对象,用来精确获取指定域中的属性值  pageScope   获取page域中的...

欢迎来到明月&清风的博客! 407

java jsp el表达式报错_JavaWeb学习之JSP(三) EL表达式

EL表达式什么是EL表达式EL,Expression Language,表达式语言,是一种在JSP页面中获取数据的简单方式,通过${变量名}的方式可以获取到值,需要注意的是EL只能从 pageConext、request、session、application 四大域属性空间中获取数据。使用EL表达式获取数据下面不能成功取值${sum }可以将这个值存放到四大域属性空间中的任意一个中。然后访问其存...

weixin_39946355的博客 642
上一篇: hibernate 配置参数详解
下一篇: 技术人员,为什么会苦逼
dw_java08
博客等级 码龄15年 122粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值