EL(Expression Language表达式语言)详解(下)

博客目录

  • 一、EL表达式介绍
  • 二、EL获取数据
  • 三、EL中的内置对象
  • 四、EL访问Bean的属性
  • 五、EL访问数组中的数据
  • 六、EL获取list中数据
  • 七、EL访问Map
  • 八、EL中的运算符(empty)
  • 九、自定义EL函数
  • 十、总结

 

                                                                         接着上一篇博文  从四开始

四、EL访问Bean的属性

   4.1 java Bean是什么?

  JavaBean是公共Java类,但是为了编辑工具识别,需要满足至少三个条件

  • 有一个public默认构造器(例如无参构造器)
  • 属性使用public 的get,set方法访问,也就是说设置成private同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
  • 需要序列化。这个是框架,工具跨平台反映状态必须的
     

 4.2、EL访问Bean属性

  • EL可以通过${key.属性}的方式获取到指定值,其底层实际调用的是该对象的相应属性的get方法
package linjie.com;
/*
 *Bean 
 */
public class Demo {
    private String name;
    private int age;
    public Demo(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return super.toString();
    }

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="linjie.com.Demo"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        Demo test=new Demo("linjie",12);
        request.setAttribute("ELttt", test);
    %>
    name=${requestScope.ELttt.name }
age=${requestScope.ELttt.age }
names=${requestScope.ELtttxx.name }

è¿éåå¾çæè¿°

五、EL访问数组中的数据

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here
     

    <%
        String[] names={"xlj","lucy","king"};
        pageContext.setAttribute("names", names);
    %>
    name[1]=${names[1] }
names[5]=${names[5] }
package linjie.com;
/*
 *Bean 
 */
public class Stu {
    private String sname;
    private String address;
    public Stu() {
        super();
    }

    public Stu(String sname, String address) {
        super();
        this.sname = sname;
        this.address = address;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return super.toString();
    }


}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="linjie.com.*"
    pageEncoding="UTF-8"%>




Insert title here



    <%
        Stu[] stus=new Stu[3];
        stus[0]=new Stu("xlj","A");
        stus[1]=new Stu("lucy","B");
        stus[2]=new Stu("kingA","C");
        pageContext.setAttribute("stus",stus);
    %>
    stus[1].Sname=${stus[1].sname }


è¿éåå¾çæè¿°

 

六、EL获取list中数据

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        List names=new ArrayList();
        names.add("xlj");
        names.add("lucy");
        pageContext.setAttribute("names", names);
    %>

    
    names[1]=${names[1] }

è¿éåå¾çæè¿°

注意:

EL可以通过索引访问List,但无法访问Set。因为Set中没有索引概念

七、EL访问Map

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        Map map=new HashMap();
        map.put("age", 20);
        map.put("name", "xlj");
        pageContext.setAttribute("map", map);
    %>
    name=${map.name }
age=${map.age }

è¿éåå¾çæè¿°

八、EL中的运算符(empty)

1、先说说几个常用运算符

  • 算术运算符:+、-、*、/、%(不支持++、–)
  • 关系运算符:==、!=、>、>=、<、<=
  • 逻辑运算符:!、&&、||、not、and、or
  • 条件运算符:?:
  • 取值运算符:[]、点号

 2、empty运算符

  • 用法为${empty 变量},结果为布尔值
<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
        String name1=null;
        String name2="";
        List name3=new ArrayList();

        pageContext.setAttribute("name1", name1);
        pageContext.setAttribute("name2", name2);
        pageContext.setAttribute("name3", name3);
    %>
    empty对于没有定义的变量,运算结果为true:
    empty namex=${empty namex }
empty对于null的引用,运算结果为true: empty name1=${empty name1 }
empty对于为空串的String引用,运算结果为true: empty name2=${empty name2 }
empty对于没有元素的数组或集合,运算结果为true: empty name3=${empty name3 }

è¿éåå¾çæè¿°

九、自定义EL函数

  具体可以看引用的博文 讲述 ,我现在还没有用到自定义EL函数 ,所以暂时不写这里, 等用的时候写在这里, 会更加有印象

十、EL总结

  • EL表达式不能出现在Java代码块、表达式块等JSP动态代码部分
  • EL只能从四大域属性空间中获取数据(pageContext、request、session、application)
  • EL不会抛出空指针异常,只会不显示
  • EL不会抛出数组越界异常,只会不显示
  • EL不具有对字符串进行处理的能力(可以使用JSTL的EL或者自定义EL函数)
     

 

你可能感兴趣的:(JSP,jstl,el,jsp)