zoukankan      html  css  js  c++  java
  • JSP_EL的回顾

    在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现。鉴于此,出现了 JSTL ( JSP Standard Tag Library )。
    Sun 发布的标准 JSTL1.1 标签库有以下几个标签:
    核心标签库:包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
    国际化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
    数据库标签库:可以做访问数据库的工作。
    XML 标签库:用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。
    函数标签库:用来读取已经定义的某个函数。
    此外, JSTL 还提供了 EL 表达式语言( Expression Language )来进行辅助的工作。
    说明:在 JSTL 1.1 规范中, JSP2.0 容器已经能够独立的理解任何 EL 表达式。 EL 可以独立出现在 JSP 页面的任何角落。
      JSTL EL表达式语言简介
    EL基本语法——${expression}
    EL使用场景通常如下:
    1、 通常在servet中调用request.setAttribute(“varName”, “varValue”)
    2、 然后在JSP中使用${varName}
    3、 简化方式使用了EL,依次从PageContext,HttpServletRequest,HttpSession,servletContext中查找varName的属性对应值。若没有则返回空字符串,若具有同名属性,取得的是靠前对象中的属性值。
    说明:也可以指定访问域。如${sessionScope.sampleValue}、${pageScope.color}。
    使用EL访问JavaBean——${beanName.beanVar}
    若beanVar是一个引用数据类型,假设beanVar有一个属性varAttr,则用${beanName.beanVar.varAttr}
    说明:
    1:为了实现对应用程序的数据的存取,EL提供了两种操作:.和[]操作
    使用.操作符来获得有名字的属性。例如表达式${user.username}表明对象user的username属性
    使用[]操作符来获得有名字或按数字排列的属性。表达式${user["username"]}和表达式${user. username }含义相同;表达式${row[0]} 表明row集合的第一个条目。
    2: .和[]操作符可以出现在同一个EL表达式中
    ${bookBean[“blish”].publisherName}
    注意:当存取的属性名称中包含一些特殊字符,如.或-等并非字母或数字的符号,一定要用[]而不能使用. 动态取值的情况,用[]而不是.
    使用EL访问集合对象——${collection[elementName]},其中若collection是数组或List,则elementName是整数,若collection是Map,则elementName是键值。
    禁用 EL 计算的语法为:<%@ page isELIgnored ="true|false" %> true表示禁用。
     
      EL隐含对象
    pageContext:提供对页面属性的访问
    param:返回客户端的请求参数的字符串值
    paramValues:返回映射至客户端的请求参数的一组值
    header:返回一个请求标题名称,然后将该值映射至单个字符串值
    headerValues:返回映射至请求标题的一组值
    cookie:返回映射至单个 Cookie 对象的 Cookie 名称
    initParam:返回映射至单个值的上下文初始化参数名称
    pageScope:返回页面范围的变量名,这些名称已映射至相应的值
    requestScope:返回对请求对象的属性的访问权限
    sessionScope:返回会话范围的变量名,这些名称已映射至相应的值
    applicationScope:返回应用范围内的变量,并将变量名映射至相应的值
    说明:11 个隐含对像几乎包含了 Web 应用的所有基本操作,若一个表达式不使用这些变量而直接使用参数名,那么就采用就近原则。该表达式将使用最近取得的参数值。
     
    三.EL表达式的操作符
    EL 表达式中还有许多操作符可以帮助完成各种所需的操作,之前的示例中“ . ”、“ [] ”就是其中的两个,下面将用表 9.1 来展示所有操作符及它们各自的功能。
    表 9.1  EL 表达式的操作符
    操作符
    功能和作用
    .
    访问一个 bean 属性或者 Map entry
    []
    访问一个数组或者链表元素
    ()
    对子表达式分组,用来改变赋值顺序
    ? :
    条件语句,比如:条件 ?ifTrue:ifFalse
    如果条件为真,表达式值为前者,反之为后者
    +
    数学运算符,加操作
    -
    数学运算符,减操作或者对一个值取反
    *
    数学运算符,乘操作
    / 或 div
    数学运算符,除操作
    % 或 mod
    数学运算符,模操作 ( 取余 )
    == 或 eq
    逻辑运算符,判断符号左右两端是否相等,如果相等返回 true ,否则返回 false
    != 或 ne
    逻辑运算符,判断符号左右两端是否不相等,如果不相等返回 true ,否则返回 false
    < 或 lt
    逻辑运算符,判断符号左边是否小于右边,如果小于返回 true ,否则返回 false
    > 或 gt
    逻辑运算符,判断符号左边是否大于右边,如果大于返回 true ,否则返回 false
    <= 或 le
    逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回 true ,否则返回 false
    >= 或 ge
    逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回 true ,否则返回 false
    && 或 and
    逻辑运算符,与操作赋。如果左右两边同为 true 返回 true ,否则返回 false
    || 或 or
    逻辑运算符,或操作赋。如果左右两边有任何一边为 true 返回 true ,否则返回 false
    ! 或 not
    逻辑运算符,非操作赋。如果对 true 取运算返回 false ,否则返回 true
    empty
    用来对一个空变量值进行判断 : null 、一个空 String 、空数组、 空 Map 、没有条目的 Collection 集合
    func(args)
    调用方法 , func 是方法名, args 是参数,可以没有,或者有一个、多个参数 . 参数间用逗号隔开
    四.EL表达式在JSTL中应用
    在JSTL的属性值中使用表达式有三种方式。
    1、 value属性包含一个表达式
    <some:tag value="${expr}"/>
    在这种情况下,表达式值被计算出来并根据类型转换规则赋值给value属性。比如:<c:out value="${username}" />中的${username}就是一个EL,它相当于JSP语句<%=request.getAttribute(“username”)%>或<%=session.getAttribute(“username”)%>
    2、 value属性包含一个或多个属性,这些属性被文本分割或围绕
    <some:tag value="some${expr}${expr}text${expr}"/>
    在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性
    3、value属性仅仅包含文本
    <some:tag value="sometext"/>
    在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类型。
     
  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/yangkai-cn/p/4017222.html
Copyright © 2011-2022 走看看