使用JSTL前的准备

想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar).

JSTL标签库

在JSTL中分为以下五个标签

  1. 核心标签
  2. 格式化标签
  3. SQL标签
  4. XML标签
  5. JSTL函数

使用不同的标签的时候需要在JSP中引入不同的库

核心标签(Core):

引入标签库

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

<c:set>

<c:set> 等同于JSP中的 session的setAttribute() 方法

使用方法:

1.<c:set var=”名字” value=”值”/>

2.<c:set var=”名字”>值</c:set>

<c:out>

<c:out> 等同于 JSP中的 <%= %>

使用方法:

<c:out value=”需要输出的值”>

在这里可以用EL表达式来进行输出session中的Attrbute

例:

<c:set var=”test” value=”这是一个测试”>

<c:out value=”${test}”>

输出结果: 这是一个测试

<c:remove>

<c:remove> 和c:set标签正好相反,c:set标签是设置setAttrbute 这个标签则是 删除 Attrbute中设置的值 等同于 session中的removeAttrbute()方法

使用方法:

<c:remove var=”名字”/>

<c:if>

<c:if> 等同于 java 中的 if 语句

使用方法:

<c:if test=”条件”>满足条件执行的JSP代码</c:if>

<c:catch>

<c:catch> 类似于 java 中的 try

使用方法:

<c:catch var=”名字”>JSP代码</c:catch>

如果在执行过程中,JSP代码发生了错误,那么将会复制给名字,因此我们可以通过判断名字是否为NULL 来进行判断是否有异常发生

例:

<c:catch var=”testException”>

<% int i = 5/0; %>

</c:catch>

<c:if test=”${testException != null}”>

    上面的代码有错误发生

 </c:if>

输出结果: 上面的代码有错误发生

如果将 上面的 0 改为 3 则没有任何输出结果

<c:choose> 和 <c:when>

<c:choose> 和 <c:when> 类似于 java 中的 switch 和 case

使用方法:(c:choose中可以有多个c:when标签)

<c:choose>

<c:when test=”条件”>处理</c:when>

<c:when test=”条件”>处理</c:when>

</c:choose>

例:

<c:set var=”test” value=”10”/>

<c:choose>

<c:when test=”${test > 5}”>test 大于5</c:when>

<c:when test=”${test < 5}”>test小于5</c:when>

</c:choose>

输出结果: test大于5

<c:otherwise>

<c:otherwise> 等同于 java switch 中的 default

使用方法

<c:choose>

<c:otherwise>处理</c:otherwise>

</c:choose>

当choose 中的 when 没有满足条件的时候 会执行 otherwise 中的内容

注意: choose 和 when 和 otherwise 是一组 when 和 otherwise 必须写在choose中

<c:import>

使用方法:

<c:import var=”date” url=”http://www.baidu.com” />

通过上面的写法会将 百度 的源代码返回到 date 变量中,使用

<c:out value=”${date}”>

输出

<c:forEach> 和 <c:forTokens>

类似于JAVA中的 FOR循环 和 FOREACH循环

使用方法:

<c:forEach var=”名字(i)” begin=”开始数字(1)” end=”结束数字(5)”>

${i}

</c:forEach>

输出结果是1 2 3 4 5

使用方法:

<c:forTokens items=”a,b,c,d,e” delims=”,” var=”name”>

${name}

</c:forTokens>

输出结果 a b c d e

forEach类似于JAVA中 for 循环 设置一个开始数字 begin 设置一个结束数字 end 然后每次循环都会将值赋值给 var   另外还有个 setp参数 里面可以设置值 意思是每次增加几个数

forTokens类似于JAVA中的foreach 在items中放一个组 然后 delims设置以什么分割 然后 将分割后循环的值赋值给 var  如果 items中存放的是一个集合 那么可以不用写delims 这样每循环一次 就会取出集合中的一个放在 var中

<c:redirect>

类似于service中的重定向

使用方法:

<c:redirect url=”http://www.baidu.com”/>

重定向到百度去

另外还有<c:url> 和 <c:param>两个标签

EL表达式介绍:

EL表达式定义规则:以 $ 开头 内容写在 {} 中 例: ${test}

当然,因为EL表达式所有的代码都是写在{}中的,所以我们也可以在里面写运算

比如:

${test+100}

最终输出的结果就是test这个变量加上数字100后的值了

再比如

${test != null} 

最终输出的结果就是一个true  通过这种方式  我们可以很好的和JSTL结合起来一起使用.

EL中的运算符分为  .  和  []  两种

如果要动态取值 可以使用[]  比如:

${session.user[date]}

其中的date是一个变量

上面代码的意思是 取出 session.user这个数组里面的第 date 个元素

需要注意的是,EL表达式限制了我们调用JAVA方法,如果想要调用,可以自定义一个TAG

EL表达式查找顺序(都是针对Attrbute()):

如果使用类似于 ${username} 的时候没有在哪一个范围查找username 那么它会以:

  1. Page
  2. Request
  3. Session
  4. Application

为顺序来进行查找,加入中途找到了 username 那么就会返回值  如果一路没找到 返回 null

EL表达式的隐性变量:

从这里开始就是介绍EL表达式的隐性变量,通过这些隐性变量可以让我们简便完成很多复杂的操作:

pageContext  用来访问JSP的隐性对象
pageScope page对象的MAP
requestScope  request对象的MAP
requestScope  request对象的MAP
sessionScope  session对象的MAP
applicationScope  application对象的MAP
param  包含请求参数字符串的MAP
paramValues  包含请求参数字符串数组的MAP
header  包含请求头字符串的MAP
headerValues  包含请求头字符串数组的MAP
cookie  按名称存储请求附带的cookie的MAP

例:假设我们是想要session中的name值 那么我们可以使用:

${sessionScope.name}

再例:我们想要获得GET或则POST传递过来的name参数,在以前我们只能使用:

request.getParameter(name);

使用EL表达式可代替为:

${param.name}

同样,如果我们想要得到一个参数的数组,可以使用:

${paramValues.name}

当然,返回的是一个数组对象.

I love you

【转载】JSTL和EL的使用的更多相关文章

  1. Java之旅(三)--- JSTL和EL表情

     先给大家看一段JSP的代码.看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<Us ...

  2. JS中也可以使用JSTL和EL标签

    //往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...

  3. JSTL和EL

    JSTL和EL 1.EL表达式总是放在大括号里,而且前面有一个美元符前缀. person.name2.相似点:(1).都可以让我们在静态内蓉中插入动态信息.EL:室外温度是{emp}度 JSP:室外温 ...

  4. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  5. JSTL、EL、ONGL、Struts标签的区别与使用

     一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...

  6. <Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)

    现在,我们的时钟显示了UTC时区的时间.我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好.为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用. 在我们深入了解 ...

  7. JSTL与EL之间的千丝万缕

    一.关于JSTL和EL: 什么是JSTL? JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现. 什么是EL? EL(Expression Lang ...

  8. JSTL与EL常用标签(转)

    JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...

  9. JAVA学习JSTL与EL

    一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标 ...

  10. JSTL和EL的使用

    JSTL和EL的使用 使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格 ...

随机推荐

  1. 1393 0和1相等串 51nod

    1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...

  2. linux sh 脚本调用外部命令

    参考:http://blog.csdn.net/lhb_blog/article/details/22083649 ------------------------------------------ ...

  3. Zend_Form 创建、校验和解析表单的基础--(手冊)

    1.  创建表单对象 创建表单对象很easy:仅仅要实现 Zend_Form: <?php $form = newZend_Form; ? > 对于高级用例.须要创建 Zend_Form ...

  4. BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机 DP

    题意:链接 方法: DP 解析: 第一眼搜索题,复杂度不同意dfs,并且牛的数量太多不能bfs,迭代更不可能,A*不会估价.可能记忆化? 等等记忆化我还搜个毛线- 直接改成DP就好了. 状态非常好想非 ...

  5. 计算几何 二维凸包问题 Andrew算法

    凸包:把给定点包围在内部的.面积最小的凸多边形. Andrew算法是Graham算法的变种,速度更快稳定性也更好. 首先把全部点排序.依照第一keywordx第二keywordy从小到大排序,删除反复 ...

  6. hibernate实战笔记1---初探

    因为在学习Spring的时候学到有关数据库的章节的时候,提及到了hibernate的集成,可是我对hibernate技术差点儿是一点不了解.仅仅是知道它是一个orm对象映射框架,所以在初探的章节做一下 ...

  7. samba笔记

    ############ 1.安装网络yum ############ 2.安装createrepo [root@localhost ~]# yum install createrepo-0.9.8- ...

  8. OTA制作及升级过程笔记【转】

    本文转载自:http://www.it610.com/article/5752570.htm 1.概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理 ...

  9. SQL排他锁的解决方案

    SQL排他锁的解决方案 分类: 事务与锁 数据库管理维护2009-04-28 22:41 680人阅读 评论(0) 收藏 举报 sql数据库database服务器killdisk 问题描述: 我有一个 ...

  10. Nightmare --- 炸弹时间复位

    题目大意: 该题为走迷宫,其条件有如下6个: 1, 迷宫用二维数组来表示: 2, 人走动时不能越界,不能在墙上走: 3, 当走到出口时,若剩余时间恰好为0,则失败: 4, 找到炸弹复位装置,若剩余时间 ...