EL表达式的简单使用

1EL简介

 

1)语法结构

    ${expression}


2[].运算符 

    EL 提供.[]两种运算符来存取数据。
    
  当要存取的属性名称中包含一些特殊字符,如.?等并非字母或数字的符号,就一定要使用 []
例如: ${user.my-name}应当改为${user["my-name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值,例如:${sessionScope.user[data]}data 是一个变量。


3)变量
     EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
    
因为我们并没有指定哪一个范围的username,所以它会依序从PageRequestSessionApplication范围查找。
    
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null
        
属性范围        EL中的名称                 解释
         page             pageScope              
表示页面范围的变量。
         request         requestScope         
表示请求对象的变量。
         session         sessionScope         
表示会话范围内的变量。
         application    applicationScope     
表示应用范围的变量。

注意:任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用双引号,则单引号不需要转义。


4)

1--EL表达式用${}表示,可用在所有的HTMLJSP标签中,作用是代替JSP页面中复杂的JAVA代码。


2--EL表达式可操作常量、变量和隐式对象。 最常用的隐式对象有${param}${paramValues}。其中${param}表示返回请求参数中单个字符串的值。${paramValues}表示返回请求参数的一组值。


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  

点运算符(.)"[ ]"都是表示获取变量的值,区别是[ ]可以显示非词类的变量。

 

2EL隐含对象
1)
与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下4个:pageScoperequestScopesessionScope applicationScope;它们基本上就和JSPpageContextrequestsessionapplication一样;在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
     session.getAttribute("username")
取得username的值,
EL中则使用下列方法
     ${sessionScope.username}
2)与输入有关的隐含对象
与输入有关的隐含对象有2个:paramparamValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
     request.getParameter(String name)
     request.getParameterValues(String name)
EL中则可以使用paramparamValues两者来取得数据。
     ${param.name}
     ${paramValues.name[index]}

 

3.其他隐含对象
1)
cookie
JSTL
并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为username的值,可以使用${cookie.username} 来取得它。
2)headerheaderValues
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 的方法(GETPOST)
     ${pageContext.request.protocol}        
取得使用的协议(HTTP/1.1HTTP/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)}

 

5JSP2.0EL扩展表达式语言的设置
有了JSP2.0,就可以使用EL扩展表达式了。对于一个单个JSP页面,你可以使用定义page指令来设置jsp页面是否支持EL。默认是支持EL(如果要页面不支持EL,请设置为isELIgnored=true;

< %@ page isELIgnored"true|false"%> 
对于整个JSP应用程序,要修改WEB.XML配置(tomcat5.0.16默认是支持EL);

<jsp-property-group>
<description>property group for JSPConfiguration.</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>/jsp/*</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>GB2312</page-encoding>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/include/prelude.jspf</include-prelude>
<include-coda>/include/coda.jspf</include-coda>
</jsp-property-group>

 
6JSP2.0中定义和使用函数

 1

表达式语言允许你定义可在表达式中调用的函数。函数必须作为public类中的public static方法编写。同时要将文件映射到TLD标志库文件中。
     为了说明函数的使用,我们举一个简单的例子,把两个数相加。首先要编写求两数之和的Java方法代码,如代码示例所示,这里定义了一个静态方法,它接收两个字符串参数,把它们解析成整数并返回它们的和。

示例文件:Compute.java

package com.itttop.test;  

import java.util.*;  

public class Compute {  

    public static int add(String x, String y) {  

        int a = 0;  

        int b = 0;  

    try {  

        a = Integer.parseInt(x);  

        b = Integer.parseInt(y);  

      }catch(Exception e) {}  

        return a + b;  

      }  

   


javac把这段代码编译成功后,下一步就要把函数的签名映射到标签库。

2)将方法映射到TLD表中
配置标记库描述文件,函数描述符

< function>  

    < description>add x and y< /description>  

    < name>add< /name>  

    < function-class>com.itttop.test.Compute < /function-class>  

    < function-signature>int add(java.lang.String,java.lang.String) < /function-signature>  

< /function>  

现在我们就可以编写一个JSP页面来使用这个函数。下面的代码示例是包含两个字段的一个表单,用户输入两个数字并按下求和按钮,就会调用上面的函数并把两个数相加,结果在同一个页面中显示出来。

3)在JSP页面中调用要引用的Taglib标记,然后就可以在jsp页面中访问了。

代码示例: math.jsp

< %@ taglib prefix="my"  uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>  

< HTML> 

    < HEAD>  

        < TITLE>Functions< /TITLE>  

    < /HEAD>  

    < BODY>  

        < H3>Add Numbers< /H3>  

        < P>  

        < FORM action="math.jsp" method="GET">  

        X = < input type="text" name="x" value="${param['x']}">  

        < BR>  

        Y = < input type="text" name="y" value="${param['y']}">  

        < input type="submit" value="Add Numbers">  

        < /FORM>  

        < P>  

        The sum is: ${my:add(param['x'],param['y'])}  

    < /BODY>  

< /HTML> 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值