• 我的学习之路_第三十五章_EL&JSTL


    回顾:JSP:JavaServerPage=servlet
    三种脚本:
    <% %>
    <%= %>
    <%! %>
    三种注释:
    <%-- --%>
    <% // /**/ %>
    <!-- -->
    三个编译指令:
    <%@ page %>
    contentType
    pageEncoding
    import
    errorPage
    isErrorPage
    <%@ include %>
    file
    <%@ taglib %>
    七个动作指令:
    <jsp:include page=" "/>
    <jsp: forward>
    <jsp: taglin>
    九个内置对象:
    page object
    request
    session
    applocation
    response
    config
    out jspWriter(printWriter)
    pageContext pageContext
    取得其他内置对象
    操作所有四个域
    exception

    JSP模式:EL&JSTL

    软件的结构:MVC
    M:Model:模型 模式
    V:View:视图
    C:Controller:控制器

    EL : Expression Language 表达式语言
    作用:计算表达式的值并替换到页面的当前位置。替代的<%= %>
    语法:${表达式}
    注意:
    EL只能在JSP中用,(HTML不能用)
    EL只能访问域中的数据,不能访问页面中的局部变量
    如果EL表达式在当前页面中不能生效(直接把表达式显示出来,没有进行计算),在page指令中设置isElgnored="false"

    内置对象:(EL的内置对象,和JSP的内置对象不是一回事)
    域对象:注意此四个内置对象代表的是四个域,并不代表四个JSP内置对象
    pageScope
    requestScope
    sessionScope
    applicationScope
    注意:在使用EL表达式的这四个域对象指定取得数据的域范围时,如果指定了,则只在指定的
    域中查询找数据,如果没找到,则返回空(不是null,就是空字符串),如果没有指定域,直接在EL表达式
    中给出变量名,则由小到大在四个域中进行查询,找到为止.
    请求参数对象:
    请求头对象
    Cookie对象
    上下文对象
    初始化参数对象

    JSTL : JSP Standard Target Lib : JSP标准标签库
    是一些由Java语言实现的标签,可以在JSP页面中使用的标签.
    所以这种标签是内服务器运行的,浏览器并不能识别这些标签.
    JSTL是JSP官方开发的一些标签.(任何人都可以开发标签库)

    如何使用JSTL:
    导包(JSTL.jar standard.jar)
    在页面中声明引用标签库:
    <%@ taglib uri=" " prefix=" " %>

    uri:当前引入标签库的唯一标识(开发标签库的开发者自定义的)
    prefix:使用当前标签库的标签时,使用的前缀.自定义(只在当前页面有效)

    总结:

    EL:表达式语言
    ${表达式}
    注意:表达式中的数据除常量必须来自于域
    内置对象:
    pageScope
    requestScope
    sessionScope
    applocationScope
    param/paramValues
    pageContext: pageContext.request.contextPath 取得项目名
    header/headerValues
    initParam
    cookie
    empty:
    数值:是否为0
    字符串:是否为空“”
    对象:是否为null
    集合:否为长度为0

    JSTL:
    使用方式:
    导包:jstl.jar standard.jar
    在页面中引用标签库: <%@ taglib uri=" " prefix=" " %>

    uri:开发标签库中开发者自定义
    prefix:当前页面自定义的(每个页面都可以不一样)
    使用自定义的前缀引用标签: <c:if > </c:if>

    if
    属性:test : 属性值的一个结果为布尔值的表达式,根据此表达式的结果决定是否运行if标签的内容
    没有else,想要实现else只能是在if标签的后面跟一个反条件的if
    forEach
    List:<c:forEach var="p" items=" ${list} " >
    Map:<c:forEach var = "m" items=" ${map} ">
    var所定义的m是一个键值对,可以通过m.key/m.value 得到键和值

    计数型循环:
    var 循环控制变量
    begin 起始值(闭区间)
    end 结束值(闭区间)
    step 步长

    varStatus 属性 : 代表的是当前本次循环的状态
    index:从0开始
    count:从1开始
    first : 是否是第一个
    last:是否是最后一个

    --------------------------------------------------------------------------------------------------------------
    EL不能直接访问局部变量,只有被保存在域中,才能被EL表达式访问到
    在${}前面加反斜杠,代表转义,此EL表达式就不再进行运算了,而是原样显示
    --------------------------------------------------------------------------------------------------------------
    <%--包含特殊字符的名字,用方括号和引号括起来 --%>
    例如: ${header['User-Agent'] } : ${header['User-Agent'] }
    --------------------------------------------------------------------------------------------------------------
    ${pageContext.request.contextPath } 获取当前项目名
    --------------------------------------------------------------------------------------------------------------
    <%--判断对象时,对象为空,则返回true --%>
    <%--判断集合对象时,对象为空,返回true,对象不为空,但集合中没有元素,返回true --%>
    ${ empty list } : ${ empty list }<br/>
    --------------------------------------------------------------------------------------------------------------

    <%--JSTL中的if标签,运算test属性中的表达式,如果结果为true,则运算if标签中的内容,否则不运行
    JSTL没有提供ELSE,所以想要实现if else 的结构,之恩能在if标签后面再跟上一个if标签
    在test属性中设置完全相反的条件
    --%>
    例题:<c:if test="${3>2 }">
    <font>条件成立</font>
    </c:if>
    --------------------------------------------------------------------------------------------------------------
    <%--
    实现计数型循环:
    for( int i = 0 ; i < 10 ; i++ )
    begin:起始值
    end:结束值 闭区间
    step:步长(默认为1)
    --%>
    <c:forEach var="i" begin="1" end="10" step="1" >
    ${i }<br/>
    </c:forEach>
    --------------------------------------------------------------------------------------------------------------
    <%--varStatus是一个可选属性,设置代表当前循环状态的一个对象
    对象属性:
    index:整数,当前循环的索引,从零开始
    count:整数,当前循环的次数,从一开始
    first:布尔值,当前循环是否是第一次
    last:布尔值,当前循环是否是最后一次
    --%>
    --------------------------------------------------------------------------------------------------------------
    <c:forEach > </c:forEach>标签中 (var 表示:变量名 items 表示要遍历的元素)增强for
    {begin:起始值 end:结束值 step:步长(默认为1)} 普通for
    --------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    php Date()函数输出中文年月日时分秒
    jQuery动态添加删除与添加表行代码
    sql随机查询数据语句(NewID(),Rnd,Rand(),random())
    asp.net 逻辑操作符与(&&),或(||),非(!)
    php static 变量的例子
    asp.net C# int 类型在32/64位环境下取值范围无变化
    js保留小数点后N位的方法介绍
    [Java] LinkedHashMap 源码简要分析
    [Java] HashMap 源码简要分析
    [Java] Hashtable 源码简要分析
  • 原文地址:https://www.cnblogs.com/jia-/p/7297413.html
Copyright © 2020-2023  润新知