Servlet-jsp从入门到精通(五)

表达式语言(Expression Language 简称EL)

EL最初是定义在JSTL1.0规范中,在JSP2.0中,EL从JSTL中剥离出来,放到JSP规范中成为了JSP2.0规范的一部分,并添加了新的特性。在JSP页面中,使用EL可以简化对变量和对象的访问。

语法 :${expr }

  • "[]"和"." 操作符用来操作符访问数据 ${user.name } ${user["name"]}
  • 算数操作符
  •     +        ${23+5}            28  
        -        ${23-5}            18  
        *        ${23*5}            115  
        /(div)     ${23/5} 或 ${23 div 5}    4.6  
        %(mod)    ${23%5} 或 ${23 mod 5}    3  
    
  • 关系表达式
  •     == (eq)    等于
        != (ne)    不等于
        <  (lt)    小于
        >  (gt)    大于
        <= (le)    小于等于
        >= (ge)    大于等于
    
  • 逻辑运算符
  •     && (and)    与
        || (or)    或
        !  (not)    非
    
  • Empty操作符
  •     ${empty A} 用于检测A是否为null,或者为empty
    
  • 条件操作符
  •     ${A ? B : C}
    
  • 圆括号
  •     用来改变执行的优先级 ${22*(3-1)}
    

内置对象

JSP
使用位置 : <% %> _jspService 变量
9种: request,response,session,application,config,out,page,exception,pageContext

EL表达式

使用位置 :${ }

11种

  1. pageContext: javax.servlet.jsp.PageContext对象
  2. pageScope :
    类型是Map,将页面范围内的属性名和它的值进行映射。主要用于获取页面范围内的属性的值
  3. requestScope:
    类型是Map,将请求范围内的属性名和它的值进行映射。主要用于获取请求范围内的属性的值,与request对象不同,要想获取request对象 ${requestContext.request}
  4. sessionScope:
    类型是Map,将会话范围内的属性名和它的值进行映射。主要用于获取会话范围内的属性的值,与session对象不同,要想获取session对象 ${requestContext.session}
  5. applicationScope:
    类型是Map,将应用程序范围内的属性名和它的值进行映射。主要用于获取应用程序范围内的属性的值。
  6. param:
    类型是Map,将请求中的参数的名字和单个的字符串值进行映射。主要用于获取请求中的参数值,等同于调用req.getParameter(name)
  7. paramValues:
    类型是Map,将请求中的参数的名字和一个包含了该参数所有值的String类型的数组进行映射。主要用于获取请求中的参数的值,等同于调用req.getParameteValues(name)
  8. header :
    类型为Map, 等同于调用req.getHeader(name)
  9. headerValues:
    类型为Map,等同于调用req.getHeaders(name)
  10. cookie :
    类型为Map,等同于调用getCookies(),从返回的数组中找到匹配名字的第一个cookie对象。
  11. initParam :
    类型为Map,等同于调用context.getInitParameter(name)
命名变量

${user} 命名变量: 通过PageContext.findAttribute(user)方法完成,该表达式按照page,request,session,application范围顺序查找命名的属性user,如果么有找到将返回Null.也可以使用 pageScope,requestScope,sessionScope,applicationScope.指定范围 ,${sessionScope.user}

JSP标准标签库 JSTL (JavaServer Pages Standard Tag Libary)

jsp提供的自定义标签的功能,扩展了JSP对标签的处理能力,很多开发人员都定制了自身应用的标签库,用于完成某些功能,为了统一标准,sun公司定制了一套标签库的规范,即JSTL。JSTL的目标是为了简化JSP页面的设计。

  1. JSTL标签库

     功能范围        URI                前缀
     core    http://java.sun.com/jsp/jstl/core    c
     I18N    http://java.sun.com/jsp/jstl/fmt    fmt
     SQL        http://java.sun.com/jsp/jstl/sql    sql
     XML        http://java.sun.com/jsp/jstl/xml    x
     Functions    http://java.sun.com/jsp/jstl/functions    fn
    
  2. 配置JSTL

  • jstl.jar : 包含的是JSTL规范中定义的接口和相关的类
  • standard.jar: 包含的是开发小组对JSTL的实现和JSTL中5个标签库的TLD文件。
  1. 核心标签库
    • 一般用途的标签

      • <c:out> 用于计算一个表达式,并将结果输出到当前的JswWriter对象类似于jsp表达式<%=expresesion %>或者El 中的 ${ }
        <c:out value="value">
      • <c:set> 用于设置范围变量的值
        <c:set value="value" var="var" [scope="{page|request| session|application}"]>
      • <c:remove>用于移除范围变量
        <c:remove var="var" [scope="{page|request|session| application}"]>
      • <c:catch> 用于捕获在其中嵌套的操作所抛出的异常对象。
        * <c:catch val="exception">
        <%
        int i = 5;
        int j = 0;
        int k = i/j;
        %>
        </c:catch>
      • <c:out value="${exception.message}">
    • 条件标签

       <c:if> 用于实现java语言中if语句的功能    
             <c:if test="测试条件" var="变量" scope="var的范围">   
             </c:if>    
       <c:choose> 只能包含<c:when><c:otherwise>    
         <c:when test="测试条件">        
         <c:otherwise>     
       判断<c:when>标签的测试条件是否为true,第一个测试条件为true的<c:when>标签体被JSP容器执行,如果没有满足条件的<c:when>标签,那么<c:otherwise>标签被执行     
      
    • 迭代标签

      • <c:forEach> 对于包含了多个对象的集合进行迭代,重复执行它的标签体。
        属性:
        var :变量
        items :迭代对象
        varStatus:被导出的保存了迭代状态的范围变量的名字
        begin :开始迭代的索引
        end :终止迭代的索引
        step :迭代的步长

      • <c:forTokens> 对于迭代字符串中由分隔符分隔的各成员
        属性:
        var :变量
        items :要迭代的String对象
        delims:指定分割字符串的分隔符
        varStatus:被导出的保存了迭代状态的范围变量的名字
        begin :开始迭代的索引
        end :结束迭代的索引
        step :迭代的步长

      • URL相关的标签

        • <c:import> 用于导入一个基于URL的资源。不仅可以在页面中导入同一个web应用程序下的资源,还可以导入不同web应用程序下的资源,甚至是其他网站的资源。

          属性:

          url :要导入的资源的URL
          context :当使用相对URL来访问一个外部资源时,指定其上下文名字
          var :被导出的保存了资源内容的范围变量的名字
          scope :var的jsp范围,默认为page
          charEncoding :导入的资源内容的字符编码

        • <c:url> 使用正确的URL重写规则构造一个URL
          属性
          value :要处理的URL
          context :当使用相对URL来访问一个外部资源时,指定其上下文名字
          var :被导出的保存了处理后的URL的范围变量的名字
          scope :var的JSP范围,默认page

          例如:
            <c:url value="login" var="myUrl">
                <c:param name="name" value="${param.name}"/>
                <c:param name="email" value="${param.email}"/>
            </c:url>
            <a href='<c:out value="${myUrl}">'></a>
          
        • <c:redirect> 将客户端的请求重定向到另一个资源。
          属性:
          url :重定向目标资源的URL
          context :当使用相对URL重定向到另一个外部资源的时候,指定其上下文名字

        • <c:param> 为一个URL添加请求参数
          属性:
          name :查询字符串参数的名字
          value :参数的值

  • I18N标签库
    主要用于编写国际化的web应用程序,它分为两部分,第一部分是国际化,第二部分是日期,时间和数字的格式化,在JSP页面中使用I18N标签库,要使用taglib指令,指定引用的标签库

      <%@ taglib url="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
      <fmt:formatDate> 按照区域或者定制的方式对日期和时间进行格式化
        value    要格式化的日期,时间
        type    指定value的日期部分还是时间部分要被格式化或者都要被格式化,默认date
        dateStyle日期的预定义格式化样式(java.text.DateFormat)
        timeStyle时间的预定义格式化样式(java.text.DateFormat)
          default    2005-5-27    9:38:21
          short    05-5-27        上午 9:39
          medium    2005-5-27    9:38:21
          long    2005年5月27日    上午09时38分21
          full    2005年5月27日星期五    上午09时38分21CST
        pattern    自定义格式化日期和时间样式,自定义样式必须使用在java.text.SimpleDateFormat类中定义的样式语法。一旦指定了pattern属性,type,dateStyle
        timeZone使用的时区. 参照java.util.TimeZone
        var    被导出的保存了格式化后的结果范围变量的名字
        scope    var的JSP范围  
    

serlvet-jsp从入门到精通(四)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容

  • JSP 基本结构JSP 页面组成:模板文本(HTML,XML,纯文本),JSP 元素;JSP 元素:脚本元素,指令...
    jslancer阅读 825评论 0 11
  • 一、JSP基础 1.1什么是JSP JSP(Java ServerPage)是Java服务器端动态页面技术。是su...
    晨星资源阅读 1,136评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,540评论 18 399
  • 第一部分简单讲解:jsp语法的规范,以及三大编译指令,七个动作指令和九大内置对象,生命周期讲解等。这章主要讲解el...
    伊豚wall阅读 391评论 0 3
  • 水果Fruit 这个词大家一定都很熟悉吧? 上学的时候就学过: What‘s your favorite frui...
    噗噗l阅读 3,798评论 0 1