jstl和EL表达式

发表时间:2017-05-15 16:26:48 浏览量( 17 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

这节课我们要学习两个内容:jstl和EL表达式。这两个内容一般都是一起配合使用了,所以我们就放在一起讲解了,这两个内容使用起来都是非常简单的。它可以简化我们在jsp中嵌入java代码。我们先看看在昨天我们做的用户列表的例子:

>
    <>

我们讲过mvc三层框架中,虽然在jsp中不会直接访问数据库访问层了,但是还是会在这里嵌入java代码,感觉不是很美观,今天我们将会使用jstl和EL表达式对其进行改写。

一、EL表达式

E L(Expression Language) 目的:为了使JSP写起来更加简单。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。EL使用起来非常简单,语法结构:

${expression}

1、[ ]与.运算符

EL 提供“.“和“[ ]“两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如:

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

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

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

2、变量

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

 ${username }

3、操作符

EL 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:

  • 算术型:+、-(二元)、*、/、div、%、mod、-(一元)

  • 逻辑型:and、&&、or、||、!、not

  • 关系型:==、eq、!=、ne、lt、gt、

  • 条件型:A ?B :C。根据 A 赋值的结果来赋值 B 或 C。 

如:

${age+100 },${age>100 },${age mod 5 }

二、JSTL

JSTL(JavaServer Pages Standard Tag Library )是一个标准的已制定好的标签库,主要由Apache 组织的Jakarta Project 所实现。目前的最新版本是JSTL1.2。可以应用于各种领域,如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。JSTL所提供的标签函数库主要分为五大类:

  1)核心标签库 (Core tag library)

   2)I18N 格式标签库 (I18N-capable formatting tag library)

   3)SQL 标签库 (SQL tag library)

   4)XML 标签库 (XML tag library)

   5)函数标签库 (Functions tag library)

需要我们学习的其实就是核心标签库 (Core tag library)、I18N 格式标签库 (I18N-capable formatting tag library)和函数标签库 (Functions tag library),至于SQL 标签库 (SQL tag library)大家就不要学习了,尽管它提供了这样的功能,但是不符合MVC三层框架的思想。这里我们先重点学习核心标签库 (Core tag library)

1、

示例:


2、

示例:


3、

示例:

:choose>

4、

示例:

:forEach>

或者循环一个列表

:forEach>

5、比如有字符串students=liu:bao:zhang,delims属性的作用是指定分隔符

示例:

:forTokens>

三、改写上面的用户列表的展示

1、要使用jstl标签,首先要导入这个标签,一般会在页面的最前面导入,prefix是前缀,可以是任意字符串,但是一般使用核心标签库,习惯上使用字符c。然后uri就写上导入的是那个标签库,这里当然就是jstl的核心库。

2、使用标签,代码如下:

>
    <>
    <:forEach items="${users }" var=>
        <>
            <>${user.uname }
            <>${user.pass }
        tr>
    c:forEach>
table>