zoukankan      html  css  js  c++  java
  • javaweb开发之EL表达式

    一、EL简介
    EL全名为Expression Language,它主要用于替换JSP页面中的脚本表达式<%= %>,从各种类型的Web域中检索Java对象、获取数据。它可以很方便地访问JavaBean属性,访问数组,访问List集合和Map集合等。
    EL表达式借鉴了JavaScript多类型转换无关性的特点,在使用EL从scope中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。Web服务器对于request域中的属性是以Object类型来存储的,在得到该属性时使用的Java语言脚本就应该是(Object)request.getAttribute("xxx"),它对于实际应用还必须进行强制类型转换。而EL就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用EL表达式取得的值,而不用关心它是什么类型的。
    【注意】EL表达式是JSP2.0规范中的一门技术,所以,要想正确解析EL表达式,需要使用支持Servlet2.4/JSP2.0技术的WEB服务器。Tomcat6以上的服务器都可以解析EL表达式。
    二、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。点运算符(.)和"[ ]"都是表示获取变量的值。区别是[ ]可以显示非词类的变量。




    三、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
     例:要取得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}   取得主机端的服务信息
    四、条件标签
    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函数(functions)
    语法:ns:function( arg1, arg2, arg3 …. argN)
    其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置
    六、补充:
    如果EL表达式无法解析:– <%@ page isELIgnored="false" %>
    EL主要作用:
    •获取数据:
    EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
    •执行运算:
    利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
    •获取web开发常用对象
    EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
  • 相关阅读:
    Go语言使用grpc
    Go语言中使用protobuf
    proto3语法
    golang标准库io
    走近docker--容器生态系统
    编译技术图式(第四章 语义分析)
    计算机组成原理与结构图示(存储器设计)
    微机原理与汇编接口图式(第一章 数制)
    编译技术图式(第四章 语法分析)03自下而上的语法分析
    计算机组成原理和结构图式(第四章 存储器子系统)
  • 原文地址:https://www.cnblogs.com/kangsir/p/6653271.html
Copyright © 2011-2022 走看看