JAVA

EL 表达式

1.语法结构
 EL表达式用${表达式}表示

 

2.<%@ page isELIgnored="true"%> 表示是否禁用EL语言,
 TRUE表示禁止.
 FALSE表示不禁止.JSP2.0中默认的启用EL语言.


3.[]与.运算符
     EL 提供.和[]两种运算符来存取数据。
  1.当存取的属性名称不是全数字或者全字母的只能用[]
  例如:
   ${user.My-Name}应当改为${user["My-Name"] }
  2.当存取的属性名称要动态操作时只能用[]
  例如:
   ${sessionScope.user[data]}中data 是一个变量  
   3.其他的用方括号[]或者.都可以  

 

 

 

4.EL表达式可操作
 4.1.常量
 4.2.变量
 4.3.隐式对象. 最常用的隐式对象有:(其中的user是一个对象,username是user的属性)
  4.3.1.与输入有关的隐含对象
   ${param}   表示返回请求参数中单个字符串的值
    例:${param.username}
   ${paramValues}  表示返回请求参数的一组值
    例:${paramValues.username[0]}
  4.3.2.与范围有关的隐含对象 (这四个隐含对象只能用来取得范围属性值,即JSP中的     getAttribute(String name),却不能取得其他相关信息)
   4.3.2.1.pageScope   表示页面范围的变量(放入page中不会)
    例:
     ${pageScope.username}
     ${pageScope.user.username}
     ${pageScope.user[username]}
   4.3.2.2.requestScope  表示请求对象的变量(声明和Java代码一样)
    例:
     ${requestScope.username}
   4.3.2.3.sessionScope  表示会话范围内的变量
    例:
     ${sessionScope.username}
   4.3.2.4.applicationScope 表示应用范围的变量.
    例:
     在servlet中声明application对象
      HttpSession s=request.getSession();
      ServletContext  application=s.getServletContext();
     jsp中:
      ${applicationScope.user.username}
      或者
      ${applicationScope.user["username"]}
  4.3.3.其他的隐式对象
    4.3.3.1.cookie
     例:
      在cookie中设定一个名称为userCountry的值,取值:
       ${cookie.userCountry}
    4.3.3.2.header
     例:
      要取得用户浏览器的版本
       单一值:${header["User-Agent"]}
       多值取一个:${headerValues["属性名"][哪一个值]}
    4.3.3.3.initParam:自行设定 web 站台的环境参数(Context),当我们想取得这些数时,可以        使用 initParam 隐含对象去取得它
     例:
      取得在web.xml 中设定的参数值如下:
      <?xml version="1.0" encoding="ISO-8859-1"?> 
      <web-app xmlns="
http://java.sun.com/xml/ns/j2ee"
       xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
       version="2.4">
      <context-param>
        <param-name>userid</param-name>
        <param-value>mike</param-value>
      </context-param>
      </web-app>
      要取得userid属性的值mike;
       之前的做法:
        String userid = (String)application.getInitParameter("userid");
       EL表达式:
        ${initParam.userid}

    4.3.3.4.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是否为新的,所谓新的session,表示刚由server产生而client尚未使用
     ${pageContext.session.id}  取得session的ID
     ${pageContext.servletContext.serverInfo}  取得主机端的服务信息
    注解:要在jsp中显示${}改成\${},因为${}在JSP 2.0 中是特殊字符,JSP 容器会自动将它当做       EL 来执行
 4.4.自动类型转换
  4.4.1.表达式中的值是非boolean的值,在类型转换原则可以的基础上可以互相转化,但是不可以转成        boolean 类型
  4.4.2.表达式中是boolean类型的值,只能返回false 或者true,如果为null 或 "" 返回false;

 

5.EL 的保留字: (命名时避免用保留字)
 And    eq  gt  true
 Or    ne  le  false
 No    lt  ge  null
 instanceof  empty div  mod

 

6.EL运算符
 6.1.EL 算术运算符
  算术运算符  说明 范例       结果
   +   加  ${ 17 + 5 }      22
   -   减  ${ 17 - 5 }     12
   *   乘  ${ 17 * 5 }      85
   / 或 div 除  ${ 17 / 5 } 或  ${ 17 div 5 }    3
   % 或 mod 余数 ${ 17 % 5 } 或  ${ 17 mod 5 }    2

 6.2.EL 关系运算符
   关系运算符   说 明  范 例       结果
   = = 或 eq  等于  ${ 5 = = 5 }或  ${ 5 eq 5 }     true
   !=  或 ne  不等于  ${ 5 != 5 } 或  ${ 5 ne 5 }  false
   <   或 lt  小于  ${ 3 < 5 }  或  ${ 3 lt 5 }  true
   >   或 gt  大于  ${ 3 > 5 }  或  ${ 3 gt 5 }  false
   <=  或 le  小于等于 ${ 3 <= 5 } 或  ${ 3 le 5 }  true
   >=  或 ge  大于等于 ${ 3 >= 5 } 或  ${ 3 ge 5 }  false

 6.3.EL逻辑运算符
   逻辑运算符    说  明  范 例        结 果
   && 或 and  交集   ${ A && B } 或  ${ A and B }  true / false
   || 或 or   并集   ${ A || B } 或  ${ A or B }   true / false
   !  或 not   非   ${ !A }  或  ${ not A }    true / false

 6.4.EL 其他运算符
  (1) Empty 运算符 :判断值是否为 null 或空的,返回true 或者false
   例:${ empty param.name }
  (2) 条件运算符
   例:
    ${ A ? B : C}
    意思是说,当 A 为 true 时,执行 B;而 A 为 false 时,则执行 C。
  (3) ( )  括号运算符 :括号运算符主要用来改变执行优先权

 

7.自定义EL函数 
 Tomcat 的 EL 函数范例,主要分为四个部分:
  web.xml        设定taglib的TLD文件位置
  functions.jsp      使用EL函数的范例程序
  jsp2-example-taglib.tld    EL函数、标签库的设定文件
  jsp2.examples.el.Functions.java  EL函数主要程序逻辑处理部分
 自定义EL函数:
  7.1.函数的书写(函数必须是公开的静态方法,函数写在类文件里)
  7.2.tld书写:
   <function>
     <description>函数描述</description>
     <name>函数名称</name>
     <function-class>上面的函数在那个类里面</function-class>
     <function-signature> 传入值和返回值类型  </function-signature>
   </function>
  7.3.web中设置
   <jsp-config>
    <taglib>   用来设定标签的 TLD 文件位置
     <taglib-uri> 用来指定 TLD 的uri 位置(类路径)</taglib-uri>
     <taglib-location> 用来指定 TLD 文件的位置</taglib-location>
    </taglib>
   </jsp-config>
   
  7.4.在程序中,一开始定义taglib,设置前置名(prefix),任意起名。
   调用EL函数必须在开头加入:
  <% @ taglib prefix="my" 
     uri="用来指定 TLD 的uri 位置(类路径)" %>

你可能感兴趣的:(java,tomcat,xml,Web,jsp)