Java Web学习(24): JSTL学习(二)

       在进行深入JSTL的学习之前,有必要先来学习一下EL表达式。

       一EL表达式

       EL表达式的全名为Expression language,经常与JSTL配合使用,使得JSP页面更直观,写法更简单。

       在EL表达式出现之前,开发Java Web应用程序时,经常需要将大量的Java代码片段嵌入JSP页面中,这会使得页

面看起来很乱,而使用EL表达式则比较简洁。

       示例:

       在页面中显示保存在session中的变量username,并将其输出到页面中,代码如下:

<%
if(session.getAttribute("username") != null){
out.println(session.getAttribute("username").toString());
}
%>

       如果使用EL,则只需一句代码即可实现:

${sessionScope.username}

        因此,EL在Web开发中比较常用,通常与JSTL一起使用。

        EL表达式除了具有语法简单、使用方便的特点,还有以下特点:

       1)EL表达式可以与JSTL结合使用,也可以也JavaScript语句结合使用;

       2)EL表达式L中会自动进行类型转换,如果想通过EL输入两个字符串数值(如n1和n2)的和,可以直接通过"+"进

行连接(如${n1+n2});

       3)EL表达式不仅可以访问一般变量,还可以访问JavaBean中的属性及嵌套属性和集合对象;

       4)EL表达式中可以执行算术运算、逻辑运算、关系运算和条件运算等操作;

       5)EL表达式中可以获取命名空间(PageContext对象,他是页面中所有其他内置对象的最大范围的继承对象,通过

他可以访问其他内置对象);

       6)在EL表达式中可以访问JSP的作用域(request、session、application、page);

       7)在使用EL表达式进行除法运算的时候,如果0作为除数,则返回无穷大Infinity,而不是返回错误;

       8)扩展函数可以与Java类的静态方法进行映射;

        二EL表达式用法

        (1)语法结构

        EL表达式的语法格式用美元符号$定界,内容包括在花括号{}中。以${开头,以}结束,中间为合法的表达式,具

体语法格式如下:

${expression}

       参数说明:

       expression:指定要输出的内容,可以是字符串,也可以是由EL运算符组成的表达式。

       需要注意的是:

       由于EL表达式的语法是以${开头,所以如果在JSP页面中要显示字符串S{,则必须在前面加上"${"或者写

成"${'${'}"。

       示例:

       在页面中输出字符串“JSP学习”,代码如下:

 ${'JSP学习'}

       (2)保留的关键字

       同Java一样,EL也有自己的保留关键字,在变量命名时,应避免这些关键字,包括使用EL输出已经保存在作用域

范围内的变量,也不能使用关键字,如果已经定义了,那么需要修改为其他的变量名。EL表达式中的保留关键字如

下:

      
       如果EL中使用了保留的关键字,那么在Eclipse中,将给出错误提示。如果忽略该提示,直接运行程序,将会出

错。

       (3)EL变量

       EL表达式存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变

量。

       因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查

找。

       假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。

       属性范围在EL表达式中的名称:

       

       (4)[ ]与.操作符

       EL表达式提供"."和"[]"两种操作符来存取数据。两者通常情况是通用的:${user.sex}或者${user["sex"]}都是允许

的。此外,"[]"还可以用来进行集合元素中的定位:${booklist[0].price}。

       以下两种情况是不可以通用的:

       1)包含特殊字符

       当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用"[ ]"。例如:

${ user. My-Name}应当改为${user["My-Name"]}

       2)通过变量动态取值:

       如果要动态取值时,就可以用"[ ]"来做,而"."无法做到动态取值。例如:

${sessionScope.user[data]}中data 是一个变量。

       (5)EL表达式自动类型转换

       要取得文本框中的输入,我们需要做类型转换:

 String str_count = request.getParameter("count");
 int count = Integer.parseInt(str_count);
 count = count + 20;

       EL表达式会进行自动类型转换,只需要这样写:

${param.count + 20}

       (6)EL运算符

       运算符允许对数据和文字进行组合以及比较。

       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隐含对象 

       隐含对象列表:

       

       JSP表达式语言定义了一组隐式对象,pageContext取得其他有关用户要求或页面的详细信息。其中许多对象在

 JSP scriplet和表达式中可用:

       

       

       此外,还提供几个隐式对象,允许对以下对象进行简易访问:

       

       与输入有关的隐含对象有两个:param和paramValues,它们是EL表达式中比较特别的隐含对象。

       例如我们要取得用户的请求参数时,可以利用下列方法:

request.getParameter(String name)
request.getParameterValues(String name)

      在EL表达式中则可以使用param和paramValues两者来取得数据。

${param.name}

${paramValues.name}

       其他隐含对象的具体用法可以参考手册。

       除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页

面:

       

       在EL表达式中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相

关信息。

       例如:我们要取得session中储存一个属性username的值,可以利用下列方法:

session.getAttribute("username") 
       在EL表达式中则使用下列方法:

${sessionScope.username}

        四EL函数

        EL函数的语法如下:ns:function( arg1, arg2, arg3 …. argN)

        其中ns为前置名称(prefix),它必须和taglib指令的前置名称一样。前置名称都为my,至于function为EL函数的

名称,而arg1、arg2等等,都是function的传入值。

       EL函数主要分为四个部分

      1)web.xml配置文件:设定taglib的TLD文件位置

      2)JSP页面:使用EL函数的JSP页面

      3)tld文档:EL函数、标签库的设定文件

      4)Java源文件:EL函数主要程序逻辑处理部分

      这四个部分环环相扣,都互有关系。我们将在范例中详细描述这四个部分的制作过程。

      由于目前还没有使用到过,就不再进行举例说明了。

     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值