el表达式

el表达式是什么?

sun制订的一种用于计算的一种规则,早期只能用于给标签的属性赋值,现在也可以直接输出。

el表达式的基本语法

${el表达式}
1) 第一种: 访问bean的属性
a. ${user.name}:
jsp引擎会依次从pageContext、request、session、application查找绑订名为"user" 的对 象,如果找到了,就丌再向下查找,否则,继续向下查找。 找到后,调用该对象的getName(),并输出其值;找丌到,则输出""(空)。
b. 或者也可以使用${user["name"]},效果相同
"name" 表示字符串
c. 或者是${user[propname]},注意propname没有引号,表示变量
d. 此外,[ ]里面还可以是0,1..这样的下标,作用是输出数组里的元素值。
e. 可以使用pageScope,requestScope,sessionScope,applicationScope四个关键字指定查找的范围。
f. ${requestScope.user.name}只到request中去找,丌再依次到4个范围查找了

2) 第二种: 获得请求参数值
a. ${param.username}
等价于 request.getParameter("username");
b. ${paramValues.interest}
等价于request.getParameterValues("interest");
3) 第三种: 计算一个表达式,将结果作为标签的属性值或者直接输出
a. 算术运算

"+" , "-" , "*" , "/" , "%" , 但是要注意,"+"号丌能连接字符串。
b. 关系运算
"==" , "!=" , ">" , "<" ,">=" , "<=" 可以使用对应的"eq","nq","lt","gt","le","ge"代替。
c. 逻辑运算
"&&","||","!",可以使用"and","or","not"代替。
d. empty运算
判断一个字符串是否为空,集合内容是否为空,以及绑订的对象是否存在。

第一种: 访问bean的属性
1) User.java

package bean;

public class User {
    private String name;
    private int age;
    private IdCard card;
    private String[] interest;
    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;
    }
    public IdCard getCard() {
        return card;
    }
    public void setCard(IdCard card) {
        this.card = card;
    }
    public String[] getInterest() {
        return interest;
    }
    public void setInterest(String[] interest) {
        this.interest = interest;
    }
    
}

2) IdCard.java

package bean;

public class IdCard {
    private String cardNo;

    public String getCardNo() {
        return cardNo;
    }

    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }
    
}

3)el.jsp

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@page import="bean.*"%>
<html>
    <!-- 访问bean的属性 -->
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size: 30px;">
        <%
            User user = new User();
            user.setName("abc");
            user.setAge(22);
            IdCard card = new IdCard();
            card.setCardNo("100");
            user.setCard(card);
            user.setInterest(new String[] { "fishing", "sleep" });
            request.setAttribute("user1", user);
        %>
        <!-- 1. Java代码 -->
        <%
            //User user1 = // (User)request.getAttribute("user1"); //out.println(user1.getName()); //out.println(user1.getAge());
        %>
        <!-- 2. EL表达式1 -->
        <!-- 2.1 基本类型 -->
        ${user1.name}
        <br />
        ${user1.age}
        <br />
        <!-- 2.2 引用类型 -->
        ${user1.card.cardNo}
        <br />
        <!-- 3. EL表达式2 -->
        <hr />
        <br />
        ${user1["name"]}
        <br />
        <!-- 4. EL表达式3 -->
        <%
            request.setAttribute("propname", "name");
        %>
        ${user1[propname]};
        <br />
        ${user1.interest[1]}
        <br />
        <!-- 5. 访问范围 -->
        <hr />
        <br />
        user's name:${requestScope.user1.name}
        </body>
        </html>

 

第二种: 获得请求参数值

el02.jsp

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
    <!-- 获得请求参数 -->
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size: 30px;">
        username:${param.username}
        <br />
        interest:${paramValues.interest[1]}
        interest:${paramValues.interest[0]}
    </body>
    </html>

第三种: 计算一个表达式,将结果作为标签的属性值或者直接输出

el03.jsp

<%@ page import="java.util.*" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
    <!-- 计算 -->
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size: 30px;">
        <!--1. 算术运算 -->
        ${1+2}
        <br />
        ${"123" + "567" }
        <br />
        <!-- ${"abc" + "123" } 会出异常-->
        <hr />
        <br />
        <!--2. 关系运算 -->
        ${"abc" == "abc"}
        <br />
        ${"abc" eq "abc"}
        <br />
        <hr />
        <br />
        <%
            pageContext.setAttribute("str", "abc");
        %>
        ${"abc" eq str }
        <br />
        <!--3. empty运算 -->
        <hr />
        <br />
        <%
            request.setAttribute("str1", "");
            List list = new ArrayList();
            request.setAttribute("list1", list);
            request.setAttribute("obj1", null);
        %>
        空字符结果为true:
        <br />
        ${empty str1}
        <br />
        找丌到绑订名对应的对象,结果是true:
        <br />
        ${empty obj}
        <br />
        集合内容为空,结果为true:
        <br />
        ${empty list1}
        <br />
        null,结果为true:
        <br />
        ${empty obj1}
        </body>
        </html>

posted on 2014-04-01 13:43  java界的奥特曼  阅读(377)  评论(0编辑  收藏  举报