1.EL表达式
1.1 概念:Expression Language的简称,意为表达式语言,是JSP2.0中引入的一种计算和输出Java对象的简单语言。需Web服务器能够支持Servlet2.4/JSP2.0。
1.2 基本语法:以“${”开头,以"}"结束,中间为合法的表达式。语法格式为${expression}
1.3 EL表达式的禁用
1.3.1 使用"\"符号禁用EL表达式:\${expression}
1.3.2 使用page指令禁用EL表达式:<%@page isELIgnored="false" %>
1.3.3 在web.xml文件中配置
1.4.EL表达式中使用的变量范围前缀
范围 |
前缀 |
说明 |
page |
pageScope |
例如,${pageScope.username}表示在page范围内查找username变量,若查无变量则返回null |
request |
requestScope |
例如,${requestScope.username}表示在request范围内查找变量username,若查无变量则返回null |
session |
sessionScope |
例如,${sessionScope.username}表示在session范围内查找变量usernmae,若查无变量则返回null |
application |
applicationScope |
例如,${applicationScope.username}表示在application范围内查找变量username,若查无变量则返回null |
1.5.EL表达式中的隐含对象
1.5.1 pageContext对象:访问JSP内置对象,如request、response、out、session、config、servletContext等。例如,以下语句使用EL表达式获取session中的变量username。
${pageContext.session.username}
1.5.2 param和paramValues对象:param对象用于获取请求参数的值,返回字符串;如果一个参数名对应多个值,则需使用paramValues,返回数组。
例如:
在页面中有一个名为username的文本框
使用param获取username文本框的值
${param.username}
或
在页面中有一个名为favor的复选框组
体育
美术
音乐
使用paramValues获取每一项值
${paramValues.favor[0]} ${paramValues.favor[1]} ${paramValues.favor[2]}
2.JSTP:
2.1 概念:JavaServer Pages Standard Tag Library,JSP标准标签库,为JavaWeb开发人员提供一个标准的、通用的标签库。
2.2 配置JSTL:JSTL下载地址:http://tomcat.apache.org/download-taglibs.cgi。下载taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar、taglibs-standard-jstlel-1.2.5.jar、taglibs-standard-compat-1.2.5.jar,并将jar包复制到项目的WEB-INFO下的lib中。
2.3 JSTL的使用:使用JSTL标签之前必须首先在JSP页面的首行使用<%@ tablib %>指令定义标签库的位置和访问前缀。格式如下:
使用核心标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
使用格式标签库:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
使用SQL标签库:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
使用XML标签库:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
使用函数标签库:<%@ taglib prefix="fm" uri="http://java.sun.com/jsp/jstl/functions" %>
2.4 JSTL核心标签库:表达式标签、条件标签、循环标签、URL操作标签
2.4.1 表达式标签:
(1)
语法一:没有标签体
语法二:有标签体
两种格式输出的结果相同。
属性 |
类型 |
描述 |
使用EL |
value |
Object |
用于指定将要输出的变量或表达式 |
可以 |
escapeXml |
boolean |
用于指定是否转换特殊字符,默认为true,表示转换,如“<”转换为"<" |
不可以 |
default |
Object |
用于指定当value属性值等于null时,要显示的默认值 |
不可以 |
(2)
语法一:在scope指定的范围内将指定的值存储到变量中
语法二:在scope指定的范围内将标签主体存储到变量中
语法三:将指定的值存储在target属性指定的目标对象的propName属性中
语法四:将标签主体存储在target属性指定的目标对象的propName属性中
属性 |
类型 |
描述 |
使用EL |
value |
Object |
指定变量值 |
可以 |
var |
String |
指定变量名 |
不可以 |
target |
Object |
指定存储变量值或标签主体的目标对象,可以是JavaBean或Map集合对象 |
可以 |
property |
String |
指定目标对象存储数据的属性名 |
可以 |
scope |
String |
指定变量的作用域,默认为page |
不可以 |
(3)
属性 |
类型 |
描述 |
使用EL |
var |
|
指定要移除的变量名 |
|
scope |
|
指定变量的存在范围 |
|
|
|
|
|
(4)
2.4.2 条件标签:
(1)
标签主体
属性 |
类型 |
描述 |
使用EL |
test |
boolean |
必选属性,指定条件表达式 |
可以 |
var |
String |
可选属性,指定变量名,保存test属性的判断结果 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
(2)
业务逻辑
...... 多个
业务逻辑
一个
2.4.3 循环标签:
(1)
语法一:数字索引迭代
语法二:结合成员迭代
属性 |
类型 |
描述 |
使用EL |
items |
数组、集合、字符串、枚举 |
被循环遍历的对象,多用于数组和集合类 |
可以 |
var |
String |
循环体的变量,存储items指定的对象的成员 |
不可以 |
begin |
int |
循环的起始位置 |
可以 |
end |
int |
循环的终止位置 |
可以 |
step |
int |
循环的步长 |
可以 |
varStatus |
String |
循环的状态信息,见下表 |
不可以 |
属性
|
类型
|
描述
|
index
|
int
|
当前循环的索引值,从0开始
|
count
|
int
|
当前循环的循环计数,从1开始
|
first
|
boolean
|
是否为第一次循环
|
last
|
boolean
|
是否为最后一次循环
|
(2)
标签主体
属性 |
类型 |
描述 |
使用EL |
items |
String |
被遍历的对象,多用于数组和集合类 |
可以 |
delims |
String |
字符串的分割字符,可同时有个分割字符 |
不可以 |
var |
String |
变量的名称 |
不可以 |
begin |
int |
循环的起始位置 |
可以 |
end |
int |
循环的终止位置 |
可以 |
step |
int |
循环的步长 |
可以 |
varStatus |
String |
循环的状态变量 |
不可以 |
2.4.4 URL操作标签:
(1)
语法一:
标签主体
语法二:
属性 |
类型 |
描述 |
使用EL |
url |
String |
被导入的文件资源的URL路径 |
可以 |
context |
String |
上下文路径,用于访同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则url属性的值必须以“/”开头 |
可以 |
var |
String |
变量名称,存储获取的资源 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
varReader |
String |
以Reader类型存储被包含文件的内容 |
不可以 |
charEncoding |
String |
被导入文件的编码格式 |
可以 |
(2)
语法一:
语法二:
属性 |
类型 |
描述 |
使用EL |
url |
|
带定向资源的URL |
可以 |
context |
|
上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头 |
不可以 |
(3)
语法一:
语法二:
属性 |
类型 |
描述 |
使用EL |
value |
String |
要处理的URL地址 |
可以 |
context |
String |
上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头 |
可以 |
var |
String |
变量名,保存生成的URL字符串 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
|
|
|
|
(4)
属性 |
类型 |
描述 |
使用EL |
name |
|
参数名 |
可以 |
value |
|
参数值 |
可以 |