zoukankan      html  css  js  c++  java
  • 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、[ ] 和 . 号运算符

  • 相关阅读:
    javaScript -- touch事件详解(touchstart、touchmove和touchend)
    PHP 报错--Array to string conversion,请用print_r() 来输出数组
    PHP微信商户支付
    解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
    写毕业设计论文或写书关于参考文献的一些原则
    分享腾讯云的Linux服务器连接速度很慢的解决心得(原创)
    Linux 实时性能测试工具——Cyclictest【转】
    Linux Kernel中获取当前目录方法(undone)【转】
    Linux kernel 绝对路径之d_path篇【转】
    linux内核获取进程的全路径3种方法【转】
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/7923788.html
Copyright © 2011-2022 走看看