JSTL和EL的使用
JSTL和EL的使用
使用JSTL前的准备
想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar).
JSTL标签库
在JSTL中分为以下五个标签
- 核心标签
- 格式化标签
- SQL标签
- XML标签
- JSTL函数
使用不同的标签的时候需要在JSP中引入不同的库
核心标签(Core):
引入标签库
<%@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 那么它会以:
- Page
- Request
- Session
- 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}
当然,返回的是一个数组对象.
JSTL和EL的使用的更多相关文章
- JS中也可以使用JSTL和EL标签
//往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...
- JSTL和EL
JSTL和EL 1.EL表达式总是放在大括号里,而且前面有一个美元符前缀. person.name2.相似点:(1).都可以让我们在静态内蓉中插入动态信息.EL:室外温度是{emp}度 JSP:室外温 ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- JSTL、EL、ONGL、Struts标签的区别与使用
一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...
- <Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)
现在,我们的时钟显示了UTC时区的时间.我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好.为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用. 在我们深入了解 ...
- JSTL与EL之间的千丝万缕
一.关于JSTL和EL: 什么是JSTL? JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现. 什么是EL? EL(Expression Lang ...
- JSTL与EL常用标签(转)
JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...
- JAVA学习JSTL与EL
一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标 ...
- Java之旅(三)--- JSTL和EL表情
先给大家看一段JSP的代码.看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<Us ...
随机推荐
- Yapi部署说明
1.环境搭建 确保 node 版本=> 7.6,请运行 node -v 查看版本号 确保 mongodb 版本 => 2.6,请运行 mongo --version 查看版本号 确保安装了 ...
- ADOConnection断线重连
问题: ADOConnection断线重连问题描述: 使用ADOConnection连接oracle数据库,开始正常,当网络断开时数据库连接失败(此时查询ADOConnection.connected ...
- Win7 64位下安装64bit MS SQL Server2005时安装不了Reporting Services的处理办法
警告截图: 解决办法: 在cmd窗口运行如下脚本即可: "cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/A ...
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包
本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理 ...
- 注册表修改computer name
修改windows server的机器名的时候,发现change按钮是disable的. 手动修改不了,用注册表regedit来修改. HKEY_LOCAL_MACHINE\SYSTEM\Curren ...
- python_库学习_02_微信自动回复机器人
一.python发展的趋势日益庞大,微信也有对应的库itchat.这次的实例做做成可在任意电脑运行的微信自动回复机器人exe.文件. 二.完成这个小应用我们需要装一些库,, itchat:这个东东不出 ...
- .NET MVC全局异常处理(一)
目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关的配置,但没有实际做过,以为改下设定就 ...
- Python中的一些小技巧
1.Boolean值可以当做一个数值 a = [5,6,7,8,9] print(a[True]) #prints 6 print(a[False]) #prints 5 2.两种方法实现 a = 1 ...
- hashlib模块
老师博客:http://www.cnblogs.com/Eva-J/articles/7228075.html#_label12 摘要算法 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个 ...
- .NET CORE学习笔记系列(3)——ASP.NET CORE多环境标识
在开发项目的过程当中,生产环境与调试环境的配置是不一样的.比如连接字符串. ASP .NET CORE 支持利用环境变量来动态配置 JSON 文件.ASP.NET Core 引用了一个特定的环境变量 ...