`
zpball
  • 浏览: 915398 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EL表达式的用法小结

阅读更多
1.语法结构
    ${expression}
2.[]与 . 运算符
    EL 提供 . 和[]两种运算符来存取数据。
    当要存取的属性名称中包含一些特殊字符,如 . 或 ? 等并非字母或数字的符号,就一定要使用 []。例如:
        ${user.My-Name}应当改为${user["My-Name"] }
    如果要动态取值时,就可以用[]来做,而 . 无法做到动态取值。例如:
        ${sessionScope.user[data]}中data 是一个变量
    . 可以完成 ${sessionScope.user.name} 的取值,name是user的一个属性。
3.变量
    EL存取变量数据的方法很简单,例如:${requestScope.username},它的意思是取出某一范围中名称为username的变量。
    如果我们没有指定哪一个范围的username,那么它会依序从Page、Request、Session、Application范围查找。
    假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
    属性范围在EL中的名称
        Page    ————> pageScope
        Request ————> requestScope
        Session ————> sessionScope
        Application ——> applicationScope
       
4、EL隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。

例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
    session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
    ${sessionScope.username}


param 和 paramValues ,它们是EL中比较特别的隐含对象:
例如我们要取得用户的请求参数时,可以利用下列方法:
    request.getParameter(String name)
    request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
    ${param.name}
    ${paramValues.name}


其他隐含对象:
cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。

header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。

initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
    可以使用 ${initParam.userid}来取得名称为userid

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}   取得主机端的服务信息

5、EL运算符
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)}

----------------------------------------------------------------------------------------------------------------------------------
补充:

el表达式取 Map 的值:

Map m = new HashMap();

m.put("k1", "v1");

m.put("k2", "v2");

request.setAttribute("m", m);

那么:${m.k1}


el表达式取 数组 的值:

String[] str = new String[]{"aaa", "bbb"};

request.setAttribute("str", str);

那么:${str[0]} ${str[1]}


1,用来获取表单数据 param 和 paramValues

1.jsp 的有如下表单

<form action="sampleJsp.jsp" method="post">
   <input type="text" name="sampleValue" value="10" />
   <input type="text" name="sampleValue" value="11" />
   <input type="text" name="sampleValue" value="12" />
   <input type="text" name="sampleSingleValue" value="SingleValue"/>
   <input type="submit" value="提交"/>
</form>

sampleJsp.jsp 的 <body>中     有

   ${paramValues.sampleValue[2]}
    ${param.sampleSingleValue }

显示结果为12 SingleValue

第一个EL表达就相当于在servlet中使用request.getParameterValues("sampleValue");

第二个EL表达式就相当于在servlet中使用request.getParameter("sampleSingleValue");


2,用来从作用域中显示数据

假设 test.jsp中有 <% request.setAttribute("aaa","object");%>

用${aaa}可以将 object 显示在页面上.但最好使用 ${requestScope.aaa} 因为 EL 表达式在作用域中搜索值时

会从最小的 page 作用域开始搜索. 给定了作用域会使得显示的性能更好.

3, Empty 操作符

empty 操作符是一个前缀,用于检测一个值是否为null 或 empty . 假设 a 不存在 ,则 ${empty a }返回的结果为 true

4 条件操作符

${A?B:C } 如果A 为true 则返回B 否则返回 C

例如:

<select >

<option value="1" ${param.op==1 ? "selected" : ""}>选项一</option>

<option value="2" ${param.op==2 ? "selected" : "">选项二</option>

</select >

这个下拉列表是用于在修改数据的时候我们一般都要让它选中原始项 使用条件操作符就可以很轻松的实现这一点。
分享到:
评论

相关推荐

    JavaScript基本编码模式小结

    - 常用的默认值设定方法是使用短路运算符,如`var arg = arg || 'default';`。但这有时会导致意外的副作用,应谨慎使用。更好的方式是在函数参数中使用解构赋值或默认参数,如`function getX(a = 'default'){}`。 ...

    JBPM4工作流应用开始指南.rar

    183 8.1.2 值和方法表达式 184 8.1.3 隐式对象 187 8.1.4 运算符和保留字 188 8.1.5 一些经典EL表达式的例子 190 8.2 例程:用脚本去控制一个流程的运行 192 8.3 小结 194 第二篇 定制属于自己的流程——深入jBPM4...

    J2EE应用开发详解

    149 9.4 JSF的组成 152 9.4.1 UI组件 152 9.4.2 JSF标签 154 9.5 统一EL 156 9.5.1 表达式和函数 156 9.5.2 操作符 157 9.5.3 保留字 158 9.5.4 内置对象 158 9.6 Backing Bean 158 9.7 创建自定义组件 162 9.8 小结 ...

    JSP2_0技术手册.pdf

    - 支持EL表达式语言。 #### 六、后续学习方向 - **JavaServer Faces (JSF)**: 一种用于构建企业级Java Web应用程序的标准组件框架。 - **Java Web Services**: 使用Java技术构建Web服务的应用程序接口(API),支持...

    SAMBA 24学时教程

    1.5 课时小结 7 1.6 专家答疑 7 第2学时 Windows网络 8 2.1 NetBIOS 概述 8 2.1.1 名称服务 8 2.1.2 会话服务 13 2.1.3 数据报服务 13 2.2 CIFS概述 13 2.2.1 NBT上的SMB 14 2.2.2 面向连接 14 2.2.3 协议概述 15 ...

    jstl标签使用的总结心得

    JSTL的核心组成部分包括两个部分:标签库和EL(Expression Language)表达式语言。EL是一种轻量级的脚本语言,用于在JSP页面中便捷地访问和操作JavaBean或其他数据源中的数据。 JSTL的四个主要标签库是: 1. Core...

    jsp实验报告4-servlet.zip

    当用户提交表单时,Servlet会接收到字符串,然后使用`split()`方法将其分拆为一个整数数组。这个过程可能需要使用正则表达式来匹配数字并分割字符串。 分拆后的数组需要进行降序排序。在Java中,我们可以利用`...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    C#读取xml节点数据方法小结

    首先,我们来看第一种方法:使用XPath来读取XML节点数据。XPath是一种在XML文档中查找信息的语言,它可以方便地选取节点、属性等。在示例中,XML文件的结构如下: ```xml &lt;ID&gt;1111 &lt;DomainName&gt;aa &lt;ID&gt;...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    struts2基本知识

    - **在JSP中使用EL表达式**: 在JSP页面中可以直接使用EL表达式访问值栈中的数据。如`&lt;%= username %&gt;`或`${username}`,而无需通过类名和属性名的形式,提高了代码的简洁性和可读性。 ##### 2. Action接口与execute...

    vue+element项目中过滤输入框特殊字符小结

    例如,chineseOnly方法使用正则表达式`/[^\u4E00-\u9FA5]/g`来移除所有非汉字字符,而onlyPositiveInteger方法则使用`/[1-9]\d*/g`来匹配字符串中符合正整数的部分。 通过上述方法的使用,开发者可以根据项目需求,...

    JAVA面试题总汇:j2ee面试知识.pdf

    - **JSP与EL表达式:** JSP的内置对象、指令、脚本元素,EL表达式的使用场景和优势。 - **MVC设计模式:** 在J2EE中的实现,比如Spring MVC框架中各组件的角色和工作流程。 #### 5. J2EE安全机制 - **认证与授权:*...

    Vue.js基础知识小结

    在该示例中,通过`v-model`实现双向绑定,`v-for`实现列表渲染,`v-on`处理用户输入,同时使用了`v-on:keyup.enter`监听回车键触发事件。示例展示了如何创建一个待办事项列表,并通过输入框添加新的待办事项,以及...

    Vue.directive使用注意(小结)

    - `el`: 指令绑定的DOM元素,可以通过这个参数直接操作DOM。 - `binding`: 一个对象,包含了指令的相关信息: - `name`: 指令名称,不包括`v-`前缀。 - `value`: 指令的绑定值,通常是表达式的计算结果。 - `...

Global site tag (gtag.js) - Google Analytics