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.分类

  1. 核心标签(用得最多)
  2. 格式化标签(I18N国际化格式化标签)
  3. SQL标签(数据库标签,很少使用)
  4. XML标签(几乎不用)
  5. 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="&lt未使用字符转义&gt" /></li>
        <li><c:out value="&lt使用字符转义&gt" 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那么它会以以下顺序来进行查找,没有则返回空字符串

  1. Page
  2. Request
  3. Session
  4. 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的主要内容,如果未能解决你的问题,请参考以下文章

JSTL

servlet-el-jstl

Ognl 和 EL 和jstl区别

JSTL和EL

El表达式详解

JSP常用标签——JSTL标签和EL表达式