EL表达式(Expression Language)

语法:

${Expression}

来取代难以维护的Java脚本元素,或笨拙的jsp:useBean和jsp:getProperty;

尤其重要的是,表达式语言支持下面的功能:

1.精确地访问存储对象;

要输出“作用域变量”(用setAttribute存储在PageCentext, HttpServletRequest,HttpSession或ServletCnntext中的对象)saleItem .我们使用${saleItem}。

2.bean属性的简略记法;

要输出作用域变量company的campanyName属性(即getCampanyName方法的结果),我们使用${company.companyName}。而要访问作用域变量company的president属性的firstName属性,我们使用${company.president.firstIVame}

3对集合元素的简单访问;

要访问数组、List或Map的元素,我们使用$ {variable[indexOrkey]}。如果索引或键所采用的形式可以满足合法java变量名的要求,则bean的点号记法可以和集合的括号记法互换。

4对请求参数、cookie和其他请求数据的简单访问;

如果要访问标准的请求数据,我们可以使用几个预定义隐式对象。

5一组为数不多但有效的简单运算符;

在EL表达式内操作对象时,可以使用任何算术、关系、逻辑或空值检查(empty-testing)运算符。

6条件性输出;

在进行有选择地输出时,我们可以不必借助于java脚本元素。取而代之,我们可以使用${test ? option1 : option2}来完成这一功能。


7自动类型转换;
表达式语言移除了大多数类型转换的需求,可以省略很多将字符串解析成数字的代码。


8.空值取代错误消息。
大多数情况下,没有相应的值或NullPointerExceptions异常都会导致空字符串的出现,而非抛出异常。

示例:

bean:

package cn.donghaua.bean;

public class Person {

private String name;
private int age;

public Person(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;
}

}

servlet:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Person p1 = new Person("zhangsan",25);
Person p2 = new Person("zhaoliu",29);
req.setAttribute("person1", p1);
HttpSession session = req.getSession();
session.setAttribute("person2", p2);
RequestDispatcher disp = req.getRequestDispatcher("/WEB-INF/forward2.jsp");
disp.forward(req, resp); }

forward2.jsp

<body>
Resqust peson name:
${person1.name} <br>
Resqust peson age:
${person1.age}<br>

Session peson name:
${person2.name} <br>
Session peson age:
${person2.age}<br>

</body>

访问输出结果:

Resqust peson name: zhangsan
Resqust peson age: 25
Session peson name: zhaoliu
Session peson age: 29

原文地址:https://www.cnblogs.com/daxiong225/p/4778914.html