26、jstl和EL表达式

学习目标:

1、了解JSTL标签

2、了解EL表达式

学习过程:

这节课我们要学习两个内容: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、示例,下面的示例演示了条件判断,循环等。

第一步:先导入标签:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

第二步:我们直接看代码吧,标签样式和html一样,由开始和结束,但是提供了条件判断和循环等功能。

	<c:if test="${age==100 }">
  age小于100
  </c:if>

	<c:choose>
		<c:when test="${age==90 }">age等于90</c:when>
		<c:when test="${age==80 }">age等于80</c:when>
		<c:otherwise>其他值</c:otherwise>
	</c:choose>

	<c:forEach begin="1" end="100" step="1" var="bb">
	   ${bb }
	</c:forEach>
	<!-- for(User user:users) -->
	<c:forEach items="${users }" var="user">
	   ${user.username }、
	</c:forEach>

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

示例:

<c:forTokens items="abc,123,hhhh" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>

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

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

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

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

<tbody>

	<c:forEach items="${users }" var="user" varStatus="status">
		<tr>
			<th height="25">${status.index+1 }</th>

			<th>${user.userId }</th>
			<th>${user.username }</th>
			<th>
			   <c:choose>
			      <c:when test="${user.sex==1 }">男</c:when>
			      <c:otherwise>女</c:otherwise>
			   </c:choose>
			</th>
			<th>删除 修改</th>
		</tr>
	</c:forEach>
</tbody>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值