JSP中 JSTL和EL标签的使用
使用JSTL前的准备
想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar).
JSTL简介
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
JSTL安装
导入jar包
Apache Tomcat安装JSTL 库步骤如下:
官方下载地址: http://tomcat.apache.org/taglibs/standard/
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
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>两个标签
标签主要有
<%--JSTL 核心标签--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--JSTL 格式化标签--%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%--JSTL SQL标签--%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%--JSTL XMLb标签--%> <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <%--JSTL 函数标签--%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
其他JSTL具体用法可以查看菜鸟教程地址:https://www.runoob.com/jsp/jsp-jstl.html
EL表达式介绍:
EL详细用法可以查看菜鸟教程地址:https://www.runoob.com/jsp/jsp-expression-language.html
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表达式的隐性变量,通过这些隐性变量可以让我们简便完成很多复杂的操作:
JSP EL隐含对象
JSP EL支持下表列出的隐含对象:
例:假设我们是想要session中的name值 那么我们可以使用:
${sessionScope.name}
再例:我们想要获得GET或则POST传递过来的name参数,在以前我们只能使用:
request.getParameter(name);
使用EL表达式可代替为:
${param.name}
同样,如果我们想要得到一个参数的数组,可以使用:
${paramValues.name}
当然,返回的是一个数组对象.
注意EL 表达式中空值的判定
对NuLL的判断 Empty 对于 null 和”” 都会返回true == null 则是对null 返回true 而对”” 则是返回false Not empty 不等于空,包括不等于null 和不等于”” <c:if test="${rdinfo.isProprietaryShop eq '0' or rdinfo.isProprietaryShop eq null }"> <c:if test =”${empty arraylist}”></if> // 判断对象是否为空对象
总结:
el(expression langauge):表达式语言 作用:获取对象 用法:1、${变量名} 2、${变量 运算符 变量} 使用el的条件:如果用的servlet-api.jar包低于javax.servlet-api-3.0.1版本,web版本必须是3.0之前的。
1、获取PageContext页面范围域的对象,${pageScope.user(或者是list)}
2、获取ServletRequest请求范围域的对象,${requestScope.user(或者是list)}
3、获取HttpSession会话范围域的对象,${sessionScope.user(或者是list)}
4、获取ServletContext应用范围域的对象,${applicationScope.user(或者是list)}
直接${user(或者是list)},也可以获取对象。仅有一个范围域对象时,获取的就是该范围域对象,
有多个对象时,获取的对象的优先顺序为:PageContext页面范围域的对象、获取ServletRequest请求范围域的对象、获取HttpSession会话范围域的对象、获取ServletContext应用范围域的对象。
jstl(java server page standard tag library):
jsp的标准标签库
作用:不让jsp页面出现java代码,实现简单的java程序语句,例如,表达式操作,流程控制,迭代操作,URL操作 使用jstl的条件:jstl.jar,standard.jar,<%@ taglib uri="http://java.sun.com/jsp/jstl.core" profix="c" %>
使用方法:(举一个最常用的迭代操作)
<c:foreach items="${list}" var="user"><tr> <td>${user.userId}</td> <td>${user.userName} </td> <td>${user.userAge} </td> </tr> </c:foreach>
转载于:https://www.cnblogs.com/2019wxw/p/10947699.html
JSP中 JSTL和EL标签的使用相关推荐
- 去除JSP页面中JSTL、EL生成的空行
前言 JSP 2.1+ tomcat 6.0+ JSP页面中JSTL.EL生成空行 JSP页面中,用到JSTL.EL时,会自动生成空行. 这个问题遇到循环时,情况会更严重. trimDirective ...
- java bean id_在 JSP中使用JavaBean的标签是 ,其中 id的用途是 __________________学小易找答案...
[多选题]Flash渐变动画分为().P22 [单选题]关于 JavaBean,下列的叙述哪一项是不正确的?( ) [填空题]用户在实际 Web应用开发中,编写Bean除了要使用 __________ ...
- 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&qu ...
- jsp中jstl标签的类似 if - else 语句 的语法
在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...
- jsp中无法识别EL表达式问题
今天在开发系统时需要在JSP中遍历List<javabean>,其中用到了EL表达式:${item.value} 页面死活不出数据,只显示表达式本身:${item.value}. 页面代码 ...
- js去el的map_JS中也可以使用JSTL和EL标签
//往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...
- jsp的jstl的foreach标签
jsp支持丰富的jstl标签语言(需要jar包支持),其中list循环(迭代)用的是<c:forEach></c:forEach>标签. 这个标签的作用就是迭代输出标签内部的内 ...
- jsp中写隐藏td标签_html中隐藏td
html|table|内容超出长度-隐藏|兼容IE和FF的写法. HTML中,一个表格,要达到二个条件: 1.内容多了不自动换行: 2.固定单元格宽度.如果内容超出,则隐藏: 如果在IE下,只是写成& ...
- HTML/JSP中一些单书名号标签的用途%-- --%!-- --%@ %%! %% %%= %
注释 <%-- --%>是(JSP)隐式注释,不会在页面显示的注释<!-- -->是(Html)显示注释,会在JSP页面显示关于注释还有单行隐式注释//和多行隐式注释/* */ ...
最新文章
- 【SpringCloud】Eureka工作原理
- Python Map 并行
- idea @Data 不起作用找不到 相关的注解
- leetcode面试题 16.04. 井字游戏
- 京东二面:MySQL 主从延迟、读写分离 7 种解决方案!
- null索引表键值_MySQL 的B+树索引
- dram和nand哪个难生产_空调哪个牌子好 推荐质量最好又省电的品牌
- python modbus类封装_如何避免从入门到放弃——python小组学习复盘
- JSPServlet相关
- ubuntu显卡驱动掉了重新装
- scratch python转化_从Scratch到Python——Python生成二维码
- window双开微信
- 基于三星6.0.1的Xposed模块安装以及模拟位置的安装
- 开源项目之魔兽争霸III外挂程序 Warkeys
- 【C语言程序】求直角三角形边长
- 拉卡拉支付开启生态化移动支付新趋势
- 迁移学习系列--领域泛化
- log4j2日志输出到控制台-Maven工程
- Quick bi是什么?
- 搜索控件SearchView的用法
热门文章
- python中的sys的概念和作用_Python(os和sys)理解
- fastq质量值_微生物组16S rRNA数据分析小结:从fastq测序数据到OTU table
- 最小二乘法多元线性回归_回归系列(二)| 最小二乘法真有那么复杂吗?
- Linux中如何使用mysql和php_hi 感恩节——Linux基础教程之mysql和php
- linux下的Tomact是什么
- Java可以跨平台的原因
- python【数据结构与算法】关于树和二叉树的探索与计算
- 【Applet编写应用小程序】Applet类APIの基本知识和第一个程序
- 【AWT编写图形用户界面】GUI编程之AWT讲解(看不懂你来打我)
- python socket通信 recv 丢包_关于socket网络传输数据的阿里云论坛用户知识和技术交流...