zoukankan      html  css  js  c++  java
  • EL表达式

    *EL表达式介绍及作用

    获取数据

      EXpression Language(表达式语言),主要是替换JSP页面中的脚本表达式,以从各种类型的web域中检索Java对象、获取数据。(某个web域中的对象、访问JavaBean的属性、访问list集合、访问map集合、访问数组)

    获取web开发常用对象

      # EL表达式定义了一些隐式的对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

    调用Java方法

      # EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

    *EL表达式语法:

      ${变量名}

    EL用法

    1.EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应的对象,找不到则返回""(注意,不是null,而是空字符串)。EL表达式${XXX}会先看XXX是不是EL表达式的隐式对象,是就直接返回隐式对象的引用,不是就翻译成pageContext.findAttribute("XXX")。

    2.EL表达式也可以很轻松获取JavaBean的属性,或获取数组,Collection、Map类型集合的数据,例如:

      ${user.address.city}

      ${user.list[0] }:访问有序集合某个位置的元素。

      ${map.key}:获得map集合中指定key的值。

    3.集合JSTL的foreach标签,使用EL表达式也可以很轻松迭代各种类型的数组或集合,示例:

      #迭代数组

      #迭代Collection类型集合

      #迭代map类型集合

    <%@page import="com.yyz.Address"%>
    <%@page import="com.yyz.Person"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>el表达式获取数据示例</title> 
      </head>
      <body>
         <% 
            request.setAttribute("name","aaa");
        %>
         ${name }  <%--pageContext.findAttribute("name") --%>
        
        <br/><hr><br/>
         <!-- 在jsp页面中,使用el表达式可以获取bean的属性 -->
        <% 
            Person p = new Person();
            p.setAge(12);
            request.setAttribute("person",p);
        %>
        ${person.age }
    
        <br/><hr><br/>
        <!-- 在jsp页面中,使用el表达式可以获取bean中的bean(中的bean。。。)的属性 -->
        <% 
            Person person = new Person();
            Address address = new Address();
            person.setAddress(address);
            request.setAttribute("person",person);
        %>
       ${person.address.name }
        
        <br/><hr><br/>
        <!-- 在jsp页面中,使用el表达式获取list集合中指定位置的数据 -->
        <% 
            Person p1 = new Person();
            p1.setName("aa111");
            Person p2 = new Person();
            p2.setName("bb");
            List list = new ArrayList();
            list.add(p1);
            list.add(p2);
            request.setAttribute("list",list);
        %>
        ${list[1].name }  <!-- 取list指定位置的数据 -->
         <!-- 迭代集合 -->
        <c:forEach var="person" items="${list}">
            ${person.name }
        </c:forEach>
        
       <br/><hr><br/>
       <!-- 在jsp页面中,使用el表达式获取map集合的数据 -->
        <% 
            Map map = new HashMap();
            map.put("a","aaaaxxx");
            map.put("b","bbbb");
            map.put("c","cccc");
            map.put("1","aaaa1111");
            request.setAttribute("map",map);
        %>
        ${map.c }  <!-- 根据关键字取map集合的数据 -->
          ${map["1"] }<!-- 如果Map的关键字是一个数字,则用点运算符搞不定,点运算符搞不定的用中括号运算符 -->
        <c:forEach var="me" items="${map}">
              ${me.key }=${me.value }<br/>
          </c:forEach>
        <br/><hr><br/>
       </body>
    </html>
    

      

  • 相关阅读:
    700.二叉搜索树中的搜索
    645.错误的集合
    567.字符串的排列
    560.和为K的子数组
    518.零钱兑换 II
    516.最长回文子序列
    509.斐波那契数
    503.下一个更大元素 II
    496.下一个更大元素 I
    leetcode 1171 Remove Zero Sum Consecutive Nodes from Linked List
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10914244.html
Copyright © 2011-2022 走看看