• JSTL和EL


    为什么需要EL

    在jspy页面中嵌入大量的Java代码

    访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换

    EL表达式简介:

      Expression Language(表达式语言)

      功能:替代JSP页面中数据访问时的复杂编码

      特点:自动转换类型(EL得到某个数据时可以自动转换类型)

      使用简单

    EL语法:

    ${EL expression}

    通过变量名取值

    获取对象的属性值

    获取集合元素

    执行表达式

    按照page——request——session——application的作用域顺序依次查找,找到即返回,最终找不到返回null值。

    获取对象的属性值

    <%=((User) request.getAttribute("user")).getName()%>

    点操作符

    ${user.name}

    []操作符

    ${user["name"]}

    获取集合元素-List

    // 在Servlet或JSP中保存数据
    List names = new ArrayList();
    names.add(0, "LiYang");
    names.add(1,"WangHua");
    request.setAttribute("names",names);
    // 在JSP中访问数据
    姓名:${ names[0] }<br/>
    姓名:${ names[1] }<br/>

    获取集合元素 - Map

    // 在Servlet或JSP中保存数据
    Map names = new HashMap();
    names.put("one", "LiYang");
    names.put("two", "WangHua");
    request.setAttribute("names", names);
    // 在JSP中访问数据
    姓名:${ names.one }<br/>
    姓名:${ names["two"] }<br/>

    执行表达式

      关系操作符

       

    逻辑操作符

    empty操作符

    若变量 a为null,或长度为零的String,或size为零的集合 则${ empty a }返回的结果为true ${ not empty a }或${ ! empty a }返回的结果为false

    EL隐式对象

     EL隐式对象介绍:

    什么是JSTL

    JSP标准标签库;JSTL的优点:

    提供一组标准标签,可用于编写各种动态功能。

    JSTL通常会与EL表达式合作实现jsp页面的编码。

    为什么使用JSTL

    实现了jsp代码的可复用,基于标签库原理,重复率较高的代码可支持复用,提高效率。

    书写jsp页面可读性更强。

    使用JSTL的步骤:

    1.引入JSTL的jar文件和标签库描述符文件

    2.在JSP页面添加taglib指令

    <%@  taglib  uri="http://java.sun.com/jsp/jstl/core"  prefix="c"  %>

    3.使用JSTL标签

    JSTL标准标签库介绍

    JSTL标准标签库中的常用标签

    1.通用标签:

    set:设置指定范围内的变量值

    //将value值存储到范围为scope的变量variable中
    <c:set  var="variable"  value="value"  scope="scope" />
    //将value值设置到对象的属性中
    <c:set  target="target"  property="property"  value="value" />
    //示例
    //  在Servlet或JSP中设置JavaBean
    User  user = new  User(); 
    request.setAttribute("user",  user);
    //  在JSP中修改JavaBean的属性值
    <c:set target="${user}" property="name" value="defaultName" />

    out:计算表达式并将结果输出显示。

    //不指定默认值
    <c:out  value="value" />
    //指定默认值
    <c:out  value="value"  default="default" />
    //示//  在Servlet或JSP中设置JavaBean
    User  user = new  User(); 
    request.setAttribute("user",  user);
    //  在JSP中输出JavaBean的属性值
    <c:out  value="${user.name}"  default="No UserName" />

    remove:删除指定范围内的变量

    2.条件标签:

    if:实现Java语言if功能

    语法:

    <c:if   test="codition"   var="variable"  scope="scope" >
    </c:if>
    /*
    *test是判断条件表达式返回true/false
    *var用于保存返回true/false
    *scope指定var变量的作用域
    */

    choose:实现if - else if - else语句的功能

    语法:

    <c:choose>
        <c:when test="condition1">
        //    内容1
         </c:when>
        <c:when test="condition2">
        //    内容2
         </c:when>
        //  ……
        <c:otherwise>
        //    内容n
        </c:otherwise>
    </c:choose >

    3.迭代标签:

    forEach:实现对象集合的遍历

    语法:

    <c:forEach     items="collection"     var="varName"     begin="start"
                   end="end"   step="stepSize"    varStatus="status"  >
    </c:forEach>
    
    //items指定要遍历的集合对象.
    
    //begin指定从集合的第几位开始.
    
    //end指定迭代到集合的第几位结束.
    
    //step指定循环的步长.
    
    //varStatus属性用于存放var引用的成员的相关信息,如索引等.

    List集合和Map集合语法使用:

    List products = GoodsDao.getAllProducts();
    request.setAttribute("products", products);
    // 在JSP中展示数据
    //<!-- 循环输出商品信息 --> 
    <c:forEach  items="${requestScope.products}"  var="product" 
            varStatus="status">
    
        //<!-- 如果是偶数行,为该行换背景颜色 -->
        <tr <c:if test="${status.index % 2 == 1 }">
                style="background-color:rgb(219,241,212);"</c:if>>
    
            //调用工厂函数,输出商品
            <td>${product.name }</td>
            <td>${product.area }</td>
            <td>${product.price }</td>
        </tr>
    </c:forEach>
    
    //requestScope.products是循环遍历集合。
    //<c:if></c:if>判断奇偶行
         //通过迭代标签遍历Map
    
    // 在Servlet或JSP中准备数据
    Map<String, String> map = new HashMap<String, String>();
    map.put("tom",  "美国");
    map.put("lily",  "英国");
    map.put("jack", "中国");
    request.setAttribute("map",  map);
    // 在JSP中展示数据
    <c:forEach  items="${requestScope.map}" var="entry">
         ${ entry.key }
         ${ entry.value }<p>
    </c:forEach>
  • 相关阅读:
    QT学习——dialog、widget、mainwindow的区别和选择
    剑指offer——二叉树的深度
    位运算实现加减乘除四则运算
    剑指offer——求两个整数和
    C++常用设计模式
    从编程实现角度学习 Faster R-CNN(附极简实现)
    剑指offer——最小的k个数
    剑指offer——对称二叉树
    java 定时器
    rocketmq consumer接收到的MessageExt中各个字段的说明
  • 原文地址:https://www.cnblogs.com/zhrehe-11/p/13731999.html
Copyright © 2020-2023  润新知