EL表达式1
EL(Expression Language)表达式语言是Java服务器页面(JSP)技术中的一种强大的表达式语法,主要用于在JSP页面中方便地访问和显示数据。它提供了简洁的语法来访问JavaBeans或其他域对象中的属性和方法。EL表达式通常被包含在`${}`之中,允许开发者直接在视图层操作数据。 ### 一、EL表达式语法 EL表达式的典型形式是`${expression}`,例如 `${sessionScope.customer.age}`,这将尝试从session域中获取名为`customer`的对象,然后访问其`age`属性。如果属性名包含特殊字符,如`.`或`-`,可以使用中括号[]来替代点操作符,如`${sessionScope["customer"].age}`。 EL表达式可以访问任意深度的属性,只要该属性链上的每个对象都有对应的getter方法。比如,如果`customer`有一个`address`属性,可以写成`${sessionScope.customer.address.city}`。EL表达式只能读取属性值,而不能直接设置属性值,即它们是只读的。 ### 二、EL名称对照表 在JSP中,EL表达式可以引用不同的范围内的对象: - `pageScope`:表示PageContext对象的page作用域,用于存放局部变量。 - `requestScope`:表示HttpServletRequest对象的request作用域,用于存放一次请求生命周期内的变量。 - `sessionScope`:表示HttpSession对象的session作用域,用于存放用户会话期间的变量。 - `applicationScope`:表示ServletContext对象的application作用域,用于存放整个Web应用生命周期内的变量。 此外,还有几个隐含对象,如: - `param`:用于获取请求参数的单个值。 - `paramValues`:用于获取请求参数的多个值。 - `cookies`:用于访问HTTP请求中的Cookie。 - `header`、`headerValues`:用于获取请求头信息。 - `initParam`:用于获取Servlet初始化参数。 ### 三、EL的特性与功能 - **类型转换**:EL会自动进行类型转换。例如,`param.age`的值为字符串"19",而`${param.age+11}`将得到整数30,而不是"1911"。 - **`empty`关键字**:`empty`可以用来检测集合或属性是否为空。如`${empty request.names}`将判断`request.names`集合是否为空。 - **EL函数**:可以通过引入函数库来扩展EL的功能。例如,引入`<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>`后,可以使用`fn:length()`函数获取字符串或集合的长度,如`${fn:length(param.name)}`。 ### 四、自定义EL函数 虽然自定义EL函数的流程相对复杂,包括创建函数类和在`.tld`文件中声明函数,但在实际应用中,开发者更倾向于使用已有的函数库,如JSTL中的`<c:out>`、`<c:set>`等标签,它们提供了丰富的字符串处理、数组和集合操作等功能。 常用的函数库URI,例如`http://java.sun.com/jsp/jstl/functions`,提供了类似于Java `String`类的方法,如`trim()`、`indexOf()`等,使得在EL表达式中处理字符串变得更加便捷。 EL表达式语言是JSP开发中不可或缺的一部分,它简化了页面逻辑,提高了代码的可读性和可维护性。通过理解EL的语法、名称对照表以及其特性和功能,开发者可以更高效地在JSP页面中操作和展示数据。