一、EL和JSTL的地位
在JSP中使用脚本元素的主要需求:
1. 为JSP执行提供流程控制;
2. 设置JSP页面的局部变量,并在以后访问;
3. 提供复杂表达式(往往涉及Java对象)的值;
4. 访问对象的性质;
5. 调用JavaBean或其他Java对象的方法;
但是如今已经不提倡在JSP中使用脚本元素:
1. 如果使用Java代码,开发人员就可能用到整个API,这样就会很容易创建出不可移植的代码,而对某种机器或系统存在依赖性;
2. 由于能通过Java语言访问系统元素,可能会在Jsp中混入应用业务逻辑,这就会“污染”应用的表示层;
3. 嵌入到Jsp中的Java代码很难阅读和调试,因此很难维护;
引入EL和JSTL可以写出完全不含脚本的程序,前两项要求由JSTL处理,后三项由EL处理
二、EL简介
1. EL命名变量:附属到JSP作用域对象上的属性。${属性名}
2. EL表达式的使用
a) 内联放置在模板数据中;
b) 放在JSP动作的属性中;
3. “ . ” 和 “ [ ] “ 操作符访问对象的性质
4. EL表达式中可用的操作符
a) 算术操作符 :+、-、*或$、/或div、%或mod
b) 逻辑操作符 :&&或and、||或or、!或not
c) 比较操作符 :==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
i. EL进行比较时,总是会“合理地”转换所比较的数据类型。
d) 其他 :Empty运算符、条件运算符、()运算符
i. Empty测试条件
5. EL隐式对象
a) JSP隐式对象
i. pageContext
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之 参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
b) 作用域访问隐式对象
i. pageScope
ii. requestScope
iii. sessionScope
iv. applicationScope
c) 参数访问隐式对象
i. param
ii. paramValues
d) 首部访问隐式对象
i. header
${header["User-Agent"]} 获得浏览器版本
ii. headerValues
iii. cookie
e) 初始化参数访问隐式对象
i. InitParam
6. EL函数