el表达式是JSP里标签库的一个重要的基础语言,是学好JSTL的基础,它简化了寻常获取页面数据的方式,如 request.getAttribute(); session.getAttribute() 等。用el表达式则直接调用setAttribute()方法中参数name值即可。其实说简单点,el表达式就是用来代替传统getAttribute方法来获取setAttribute中的值。
el表达式的语法非常简单,是$与{}的组合,具体如下
例子:
servlet中代码:request.setAttribute("hello", "hello world");
jsp中el代码:${hello}
注意:红色部分的名称必须匹配。
el表达式也同样可以获取类中属性的值。相似的还有map、数组、ArrayList等。
例子:
user类中有name属性和sex属性,并且有相应的getName()、setName()和getSex、setSex()方法。
servlet中代码:先实例化user对象,并为属性赋值,request.setAttribute("user", user);
jsp中el代码:${user.name} ${user.sex}
注意:红色部分的名称必须匹配,且黑色部分的属性不仅名称相同(el中属性首字母必须小写)还必须有相应的get、set方法。
另外要说明一点的就是el表达式隐含域的问题。默认顺序是PageScope→RequestScope→SessionScope→ApplicationScope。我们可以指定el表达式优先从那里获取数据。如${RequestScope.user.name},这样效率会高些,不过除非特殊情况需要明确指定范围,否则直接使用${user.name}就行啦。