JSTL和EL
Posted 57容杰龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL和EL相关的知识,希望对你有一定的参考价值。
本文JSTL的core部分引用博客来源于(很详细)
http://www.cnblogs.com/xdp-gacl/p/3943390.html
1.JSTL
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL简化了JSP和WEB应用程序的开发。JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的。使用JSTL标签的目的就是不希望在jsp页面中出现java逻辑代码。
2.添加依赖包:JSTL和standard
3.分类
- 核心标签(用得最多)
- 格式化标签(I18N国际化格式化标签)
- SQL标签(数据库标签,很少使用)
- XML标签(几乎不用)
- JSTL函数(EL函数)
使用不同的标签的时候需要在JSP中引入不同的库
如:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
4.核心标签库
JSTL的核心标签库标签共14个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签、param标签。
<c:out>标签的功能:
<c:out>标签主要是用来输出数据对象(字符串、表达式)的内容或结果。
<c:out value=”字符串”> <c:out value=”EL表达式”>
JSTL的使用是和EL表达式分不开的,EL表达式虽然可以直接将结果返回给页面,但有时得到的结果为空,<c:out>有特定的结果处理功能,EL的单独使用会降低程序的易读性,建议把EL的结果输入放入<c:out>标签中。
<c:out value="容杰龙"></c:out> <c:out value="57"></c:out> <% request.setAttribute("number", 57); %> <c:out value="${requestScope.number }"></c:out> <c:out value="${name }" escapeXml="true" default="rjl"></c:out> <c:out value="${number }" escapeXml="false" >60</c:out>
<li><c:out value="<未使用字符转义>" /></li> <li><c:out value="<使用字符转义>" escapeXml="false"></c:out></li>
<c:out value="<a href=\'http://www.baidu.com/\'>百度搜索</a>" escapeXml="false"/>
<c:set>标签
<c:remove>标签主要用来从指定的JSP范围内移除指定的变量
<c:remove var=”变量名” [scope=”page|request|session|application”]/>
其中var属性是必须的,scope可以以省略。
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常。
其语法格式如下:<c:catch [var="varName"]>容易产生异常的代码</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<c:if>标签
<c:choose>、<c:when>和<c:otherwise>标签
<c:forEach>标签
forTokens标签
该标签用于浏览字符串,并根据指定的字符将字符串截取。
<c:import>标签
该标签可以把其他静态或动态文件包含到本JSP页面,与<jsp:include>的区别为:<jsp:include>只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
该语句应该放在<c:catch></c:catch>语句块中捕获
<c:import url="https://www.baidu.com" charEncoding="UTF-8"></c:import>
<c:url>标签
<c:redirect>标签
<c:param>标签
5.格式化标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
12个标签
6.JSTL函数functions(EL函数)
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
16个标签
7.EL表达式
EL 全名为Expression Language
EL表达式定义规则:以 $ 开头 内容写在 {} 中
由于EL表达式所有的代码都是写在{}中的,所以也可以在里面写运算
EL中的运算符分为 . 和 [] 两种
EL表达式查找顺序(都是针对Attrbute()):
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””
若使用 ${user} 没有在哪一个范围查找user那么它会以以下顺序来进行查找,没有则返回空字符串
- Page
- Request
- Session
- Application
EL表达式的隐性变量
JSP有9个隐含对象,而EL也有自己的隐含对象。EL隐含对象总共有11 个
request.setAttribute("list",list);
${list[1].name}
<c:forEach var="person" items="${list}">
${person.name}
</c:forEach>
3、empty运算符:检查对象是否为null(空)
${!empty(list)
${user == null} ${user eq null}
4、二元表达式:${user!=null?user.name :""}
5、[ ] 和 . 号运算符
以上是关于JSTL和EL的主要内容,如果未能解决你的问题,请参考以下文章