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}

                                        

      

    安静男孩
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/xishaohui/p/8926655.html
Copyright © 2011-2022 走看看