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

作者: 清枫_小天 | 来源:发表于2016-07-12 20:58 被阅读374次

    表达式语言(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从入门到精通(四)

    相关文章

      网友评论

        本文标题:Servlet-jsp从入门到精通(五)

        本文链接:https://www.haomeiwen.com/subject/zzrsjttx.html