zoukankan      html  css  js  c++  java
  • el和jstl

    1、什么是el以及特性是什么?

         1)el:即为表达式语言。

       2)格式:${ ...}

      3)作用:用来获取jsp四大作用域对象中的属性值并显示[赋值]在jsp的节点上。它实质上就是 <%= 表达式 %> 简洁式。另外, 它还可以获取 实        体内容。同时,可以实现表达式的计算与判断。

      底层利用的反射机制:

      A)可以利用如下方式直接进行属性的访问,

      格式:对象.属性。例如有一个user对象。取里面的age属性。

      就可以表达为${user.age};  可以进行判断后自动根据真假取值:${dog.sex? ’公’:’母’}

      注意:age等书写的方式一定的第一个单词的首字母小写然后遵循驼峰型格式。

      B)获取容器中的值使用容器.key获取其中的value。

      C)从JSP的四大作用域对象中获取属性的值。

       pageContext ---->  pageScope    ${pageScope.属性名}  或  ${属性名}

          request ---->  requestScope    ${requestScope.属性名}  或  ${属性名}

          session ---->  sessionScope    ${sessionScope.属性名}  或  ${属性名}

          application ---->  applicationScope    ${applicationScope.属性名}  或  ${属性名}

        注意: 当不写 XXXScope 前缀时,而直接 ${属性名} 去获取四大作用域中的值,则会从小到大去找,找到,则结束。即作用域越小优先级越高;

      D)从JSP的请求实体中获取参数的值:

                                param ----> ${param.参数名}

            paramValues ---> ${paramValues.参数名[索引号] }  或  ${paramValues.参数名['索引号'] 

      E)EL表达式中可以进行运算。

           算术运算, 关系运算, 逻辑运算:

           关系运算  ${ "5" > 3 }得到结果为true;

           注意: 在运算前,若数据类型不一致,则会发生类型的自动转换。  如:  ${'123' + 100};

           注意: EL 表达式中不能进行字符串的连接运算。  ${"Beijing" + 2008}  //报错

      4)特有的运算符。

      A) . 和 []  ;//此处.为成员运算符;[]为偏移运算符号;

      EL为了获取实体内容。为此,提供了专门的关键字  param 或 paramValues

                 例如: 早期, 获取请求时的实体内容: <%= request.getParameter("uname") %>

                       现在, 获取请求时的实体内容: ${param.uname}                         

                       早期, 获取请求时的同名不同值的实体内容中:

                            <%

                                  String[] favs = request.getParameterValues("fav");

                                   for(int i = 0; i < favs.length; i++ ){

                                            out.print( favs[i] + "  ");

                                   }

                            %>

                            

                       现在, 获取请求时的同名不同值的实体内容中

              [其中第一个参数是]: ${paramValues.fav[0] }

                       [第二个参数是: ]  ${paramValues.fav['1'] }

         b) empty  判断运算符

       当属性值为空值,EL中如何判断?

         案例如下:    

                 <%

                           //String name = null;

                           String name = "";

                           request.setAttribute("name", name);

                          

                           Map<String,Integer> dogs = new HashMap<String,Integer>();

                           session.setAttribute("dogs", dogs);

                           Set<String> cats = new TreeSet<String>();

                           List<String> cars = new LinkedList<String>();

                           pageContext.setAttribute("cats", cats);

                           pageContext.setAttribute("cars", cars);

                 %>

                 在EL表达式中,对属性值进行空值判断

                 例如: 对request对象的name属性值进行判断,其结果为:   ${ empty requestScope.name}

                 例如: 对session对象的dogs属性值进行判断,其结果为:   ${ empty sessionScope.dogs } ----- ${empty dogs }        

                 例如: 对pageContext对象的cats属性值进行判断,其结果为:   ${ empty cats } 

                 例如: 对pageContext对象的cars属性值进行判断,其结果为:   ${ empty cars } 

                 特别注意:  EL表达式中的变量必须是 四大作用域的属性或请求实体中的参数。

    2 、 什么是JSTL? ----jsp standard  tag lib;

        它是 JSP 的标准标签库。

          它主要是将 java的流程控制语句简化或优化成一个 JSP页面上可直接使用的标签。

     3、JSTL的基本格式?

       格式:

              <c:标签>

                    输出的信息

              </c:标签>

    注意: 在使用 JSTL标签之前,必须在JSP页面使用 taglib 指令将用到的标签库导入过来。

    4、导入标签库的taglib指令,其使用方式如下:

       <%@ taglib prefix="前缀" uri="标签库的地址及库名" %> 。。。//一般前缀使用字母c。

    5、常用的标签库及其标签?

             a) http://java.sun.com/jstl/core_rt 核心标签库  

    ---> [ <c:if> | <c:choose><c:when><c:otherwise> | <c:forEach> ]

         另外了解: <c:url> | <c:param> | <c:import> | <c:redirect> 

         而 请求转发:<jsp:forward page=” xxx.jsp”> </jsp:forward> 形式称之为JSP的页面元素或页面标签,它是JSP内置的。

         重定向<c:redirect url=”xxx.jsp ”></c:redirect>

         b) http://java.sun.com/jstl/fmt_rt  格式化标签 --->[ <fmt:formatDate> | <fmt:formatNumber> ] 

    6、<c:if> 标签的应用

           a) 形式一

                  <c:if test="${条件表达式}" var="存放结果的变量"> 

                           结果表现体 

                  </c:if>         

        b) 形式二

                 <c:if test="${条件表达式 }" var="存放结果的变量" scope="作用域对象">

                           结果表现体

                 </c:if>

     注意: 在JSP的 jstl标签库中 <c:if>只是单向的,没有双向的。 那问: 如何实现双向的if语句功能?

    例如:

    <c:if test=”${dog.sex==true}”> 公</c:if>

    <c:if test=”${dog.sex==false}”> 母</c:if> 

    7、<c:choose><c:when><c:otherwise> 标签的应用

             <c:choose>

                 <c:when test="${条件表达式}"> 结果表现体  </c:when>

                 <c:when test="${条件表达式}"> 结果表现体  </c:when>

                 ......

                 <c:otherwise> 结果表现体  </c:otherwise>

        </c:choose>

    8、<c:forEach>标签的应用形式

             a) 形式一 

                 <c:forEach begin="起始值" end="终止值" var="存放每次循环的结果变量">

                           ${表示式 }

                 </c:forEach>

                注意: 它相当于java中的标准for循环语句  for(int i=1; i<=10; i++) { ... }

             b) 形式二

                        <c:forEach begin="起始值" end="终止值" var="存放每次循环的结果变量" step="增量" >

                           ${表示式 }

                     </c:forEach>            

                注意: 它相当于java中的标准for循环语句  for(int i=1; i<=10; i+=增量) { ... }

             c) 形式三

                   <c:forEach items="${容器}" var="存放每次循环的值" varStatus="状态变量">

                            结果表现体

                   </c:forEach> 

         注意: 状态变量中有一个  index 属性,表示每种状态的索引号。

             注意: 这种形式最常用

             例如: 若有 List<Person>  ps = new ArrayList<Person>();

                            则对 List 的 ps 容器进行遍历如下:<br/>

                            <c:forEach items="${ps}" var="person" varStatus="id">

                                      ${id.index + 1} ---- ${person.name} --- ${person.sex ? "男":"女" } --- ${person.age }  <br/>

                            </c:forEach>

    9、<fmt:formatDate> 和 <fmt:formatNumber>格式化标签的应用

             一、日期的格式化:

                1) 固有格式:

                     <fmt:formatDate value="${d1 }" type="date" dateStyle="short"/> <br/>

                     其中 type="date" 时, 有: dateStyle="short"/"long"/"full"

                2) 自定义格式

                            <fmt:formatDate value="${d1 }" pattern="yyyy-MM-dd"/> <br/>

                            <fmt:formatDate value="${d1 }" pattern="||^_^yyyy年MM月dd日^_^||"/> <br/>

         二、时间的格式化:

                1) 固有格式:

                      <fmt:formatDate value="${d1 }" type="time" dateStyle="short"/> <br/>

                     其中 type="time" 时, 有: dateStyle="short"/"long"/"full"

                2) 自定义格式:

                       <fmt:formatDate value="${d1 }" pattern="HH:mm:ss"/> <br/>

                       <fmt:formatDate value="${d1 }" pattern="北京时间>>>HH时mm分ss秒"/> <br/>

         三、格式化数值型数据

                 <fmt:formatNumber value="${data }" pattern="########.##" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="##,###,###.##" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="##,###,###" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="##,###,###.0" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="00,000,000.0" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="$00,000,000.0" /> <br/>

                 <fmt:formatNumber value="${data }" pattern="¥00,000,000.0" />

    10.Jsp的EL与JSTL对两种容器进行操作:

             1)存放对象(javaBean)的容器

                       在<c:forEach>中可以直接通过EL访问属性

                       Obj.getXXX()--->${obj.属性}

       2)存放Map容器的List容器

                       在<c:forEach>中可以直接通过EL去访问属性;

                       Map.get(key)------>${map.key}

                                        

      

    安静男孩
  • 相关阅读:
    IIS6.0中,使用其它用户运行IIS
    c++构造函数详解
    Java创建文件夹及文件
    三大范式及存储方式
    对新型软件程序语言及架构的一点讨论
    C++虚函数解析
    验收测试驱动开发:ATDD实例详解
    什么是父路径及开启的方法
    note:全局配置visual studio 2010 头文件目录
    怎么把二级域名重定向到主域名
  • 原文地址:https://www.cnblogs.com/xishaohui/p/8926655.html
Copyright © 2011-2022 走看看