zoukankan      html  css  js  c++  java
  • (十)EL表达式和JSTL标签快速入门


    目录


    什么是 el 表达式

    EL表达式 用于获取数据;

    JSP 页面中可以使用 ${标识符} 的形式,通知 JSP引擎 调用 pageContext.findAttribute() 方法,标识符关键字从各个域对象中获取对象。 如果域对象中不存在 标识符 所对应的对象,则返回结果为""(空串),注意不是null

    返回 空串 而不是 null,是el表达式的一个迷人之处,我们可不希望在页面上显示null吧;它做了一个转换,因为pageContext.findAttribute() 方法,查不到对象,返回的是null

    el表达式 可以理解为是对pageContext.findAttribute() 方法的封装 ;


    示例:使用EL表达式获取pageContextrequestsessionapplication域中的数据;

    <%--模拟从四个域中,用el表达式取数据--%>
    <%--java 代码必须写在脚本片段里面--%>
    
    <%
    //    先分别将数据存进四个域中
    //    以键值对的形式向域中添加数据
    //    pageContext 域中存数据的时候,关键字不能用 pageContext,
    //    因为pageContext 是el表达式自己定义的一个隐式对象,这个在后面的博客(el表达式详细介绍里面)会讲到;
        pageContext.setAttribute("page", "我是pageContext中的数据");
        request.setAttribute("request", "我是request中的数据");
        session.setAttribute("session", "我是session中的数据");
        application.setAttribute("servletContext", "我是servletContext中的数据");
    %>
    
    //  在同一个JSP页面中,使用el表达式取值
    
    <%--el表达式,必须直接写在Jsp页面中,不能写在脚本片段里面--%>
    ${page}
    <br>
    ${request}
    <br>
    ${session}
    <br>
    ${servletContext}
    <br>
    
    ------------------------------------------------------
    // output:
    // 我是pageContext中的数据
    // 我是request中的数据
    // 我是session中的数据
    // 我是servletContext中的数据 
    

    示例:使用EL表达式获取Bean属性

    首先要知道 Javabean属性 这里说的属性可不是 Javabean 类的字段,而是 Javabean 类获取字段的 setXXXgetXXX 方法 ;

    EL表达式 中可以使用${标识符.字段} 的形式直接访问 JavaBean对象的属性,不需要再去调用方法。

    <%--先往request域里面,放进去一个对象--%>
    <jsp:useBean id="person" class="day09.Person" scope="request" ></jsp:useBean>
    <%--为对象的字段 赋值--%>
    <jsp:setProperty name="person" property="age" value="22"></jsp:setProperty>
    <jsp:setProperty name="person" property="name" value="狗蛋"></jsp:setProperty>
    
    <%--用el表达式取值--%>
    ${person.name} : ${person.age}
    
    ------------------------
    // output:
    // 狗蛋 : 22 

    获取当前WEB应用的名称

    ${pageContext.request.contextPath}

    获取到的地址,自带斜杠,千万不要再地址前面再加 /


    el表达式小结

    上面只是个 入门级el表达式 教程 ;

    千万不要以为 el表达式 只有这么点东西;el表达式 还是很有 、东西的

    关于 el表达式 的详细介绍,请查看博主博客 el 表达式详细介绍 (可点击)

    EL表达式也可以使用类如${1==1}的形式进行简单的逻辑判断;

    一般用EL表达式取数据,通常用 . 号,当 . 号取不出来的时候,就用[ ]取数据;

    例如,在取map中的数据的时候,键是数字的时候,.号就取不出来了,这时候该用[‘11’] 这样取 ;


    JSTL标签库

    JSTLSun 公司开发的一套标签库,使用 JSTL 可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码(这是标签库出现的目的,也符合 jsp 的规范,页面中不出现一句 java 代码)


    如何使用JSTL标签库

    在页面中使用JSTL标签需要完成以下2个步骤:

    1. 导入jstl.jarstanderd.jar这两个 JSTLjar 文件
    2. JSP 页面中使用<%@tablib url ="xxxx" prifix="xxx" %>元素导入标签库。
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

    JSTL标签库中常用标签

    <c:foreach var="" item="">
    <c:if test="">

    • <c:foreach var="" item=""> 标签事例
    // 创建一个list,并向其中添加数据
    <%
        List<Person> list = new ArrayList<>();
        list.add(new Person("小明"));
        list.add(new Person("小强"));
        list.add(new Person("狗蛋"));
        request.setAttribute("list", list);
    %>
    
    // 遍历list 取值
    <c:forEach var="person" items="${list}">
        ${person.name} <br>
    </c:forEach>

    <c:foreach > 标签,items属性的值,是一个el表达式,它表示从哪一个对象中遍历取值; var属性的值,是暂时保存每次的取值 ;

    在使用 foreach 标签进行迭代 Map 集合的时候,迭代的是 Map 集合进行entrySet返回 set<Map.entry> 集合


    • <c:if test=""> 标签事例
    <c:if test="${1==2}">
        <%
            out.write("你看不到我的");
        %>
    </c:if>

    <c:if > 标签中必须要有 test 属性,<c:if > 标签体的内容是否得到执行,取决于 test 属性中的表达式的值,为真,就执行;注意:test属性中的表达式,直接写普通的表达式不奏效,好像只能写 el表达式


    备注:

    当然了,上面介绍的都是el表达式和jstl标签库的简单用法;起个快速入门的作用 ;

    《over》

  • 相关阅读:
    PHP文件上传错误类型及说明
    PHP截取字符串 兼容utf-8 gb2312
    php根据日期获得星期
    js根据日期获得星期
    股票的趋势以及高效买入
    制定自己的选股原则
    股市生存法则
    JSP学习
    ANdroid URL
    Adroid 展开收起效果实现
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665717.html
Copyright © 2011-2022 走看看