<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言.
一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page、 request、session、application)的bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量:
变量名称 |
说明 |
pageScope |
一个包含所有page scope范围的变量集合 (a java.util.Map) |
requestScope |
一个包含所有request scope范围的变量集合 (a java.util.Map) |
sessionScope |
一个包含所有session scope范围的变量集合 (a java.util.Map) |
applicationScope |
一个包含所有application scope范围的变量集合 (a java.util.Map) |
param |
一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String值的方式赋值 |
paramValues |
一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String数组的方式赋值 |
header |
一个包含所有请求的头信息的集合, (a java.util.Map) ,通过每个头信息对应一个String值的方式赋值 |
headerValues |
一个包含所有请求的头信息的集合 (a java.util.Map) ,通过每个头信息的值都保存在一个String数组的方式赋值 |
cookie |
一个包含所有请求的 cookie集合 (a java.util.Map), 通过每一个cookie(javax.servlet.http.Cookie)对应一个cookie值的方式赋值 |
initParam |
一个包含所有应用程序初始化参数的集合(a java.util.Map) ,通过每个参数分别对应一个String值的方式赋值 |
pageContext |
一个javax.servlet.jsp.PageContext类的实例, 用来提供访问不同的请求数据 |
举例:
cookie
JSTL并没有提供设定cookie的动作,
例:取得cookie中有一个设定名为Country的值,可以使${cookie.Country}来取得它。
header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid
pageContext
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} 取得主机端的服务信息
操作符描述了对变量所期望的操作。
Operator |
Description |
. |
访问一个bean属性或者 Map entry |
[] |
访问一个数组或者链表元素 |
() |
对子表达式分组,用来改变赋值顺序 |
? : |
条件语句,比如: 条件 ? ifTrue : ifFalse .如果条件为真,表达式值为前者,反之为后者 |
+ |
数学运算符,加操作 |
- |
数学运算符,减操作或者对一个值取反 |
* |
数学运算符,乘操作 |
/ or div |
数学运算符,除操作 |
% or mod |
数学运算符,模操作(取余) |
== or eq |
逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false |
!= or ne |
逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false |
< or lt |
逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false |
> or gt |
逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false |
<= or le |
逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false |
>= or ge |
逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false |
&& or and |
逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false |
|| or or |
逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false |
! or not |
逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true |
empty |
用来对一个空变量值进行判断: null、一个空String、空数组、 空Map、没有条目的Collection集合 |
func (args ) |
调用方法, func 是方法名,args 是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开 |
一个EL表达式可以包含:数字、文本(在单引号或者双引号之间)、布尔值、null值。
因为一个EL表达式可以出现在静态文本出现的地方,因此你必须告诉JSP容器它应该被当作一个EL表达式来处理。你可以通过使用定界符来做到这一点。一个EL表达式总是以”${ }”来标记(一个“$”符号和一个左花括号,右花括号)。
${username}。它的意思是取出某一范围中名称为username的变量。
指定哪一个范围的username, 依序从Page、Request、Session、Application范围查找。 假如中途找到username,就直接回传,不再继续找,但是假如全部的范围都没有找到时,就传回null。
除了在这个方法中使用的length()方法,JSTL1.1标签库还包含了许多其它经常使用的函数:
函数 |
描述 |
fn:contains(string, substring) |
如果参数string中包含参数substring,返回true |
fn:containsIgnoreCase(string, substring) |
如果参数string中包含参数substring(忽略大小写),返回true |
fn:endsWith(string, suffix) |
如果参数 string 以参数suffix结尾,返回true |
fn:escapeXml(string) |
将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回 |
fn:indexOf(string, substring) |
返回参数substring在参数string中第一次出现的位置 |
fn:join(array, separator) |
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 |
fn:length(item) |
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。 |
fn:replace(string, before, after) |
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果 |
fn:split(string, separator) |
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 |
fn:startsWith(string, prefix) |
如果参数string以参数prefix开头,返回true |
fn:substring(string, begin, end) |
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符 |
fn:substringAfter(string, substring) |
返回参数substring在参数string中后面的那一部分字符串 |
fn:substringBefore(string, substring) |
返回参数substring在参数string中前面的那一部分字符串 |
fn:toLowerCase(string) |
将参数string所有的字符变为小写,并将其返回 |
fn:toUpperCase(string) |
将参数string所有的字符变为大写,并将其返回 |
fn:trim(string) |
去除参数string 首尾的空格,并将其返回 |