8位密码el表达式判断是否包含包含特殊字符

EL表达式中隐含对象小结
关于EL表达式的基础知识,可阅读《》这篇文章,本文总结一些有关EL表达式中隐含对象的内容。
EL中的隐含对象,大概可以分为以下几类:
1、与范围有关的隐含对象
与范围有关的EL隐含对象包含以下四个:pageScope、requestScope、sessionScope、applicationScope,它们分别对应着JSP中的pageContext、request、session和application。在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(),却不能用来取得其他相关信息。
例如:要取得session中存储的一个属性username的值,可以利用session.getAttribute(&username&)取得username的值。如果用EL表达式,则直接用${sessionScope.username}即可。
2、与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。它们的区别是,param用来获取单一数据,而paramValues用来获取一组数据。
例如:要取得用户的请求参数时,可以利用下面的方法:request.getParameter(name)、request.getParameterValues(name),在EL中可以使用param和paramValues来取得:${param.name}、${paramValues.name}。
例如下面的例子:
&%@ page contentType=&text/ charset=UTF-8&%&
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&form action=&SampleJsp.jsp&&
&input type=&text& name=&sampleValue& value=&10&&
&input type=&text& name=&sampleValue& value=&11&&
&input type=&text& name=&sampleValue& value=&12&&
&input type=&text& name=&sampleSingleValue& value=&SingleValue&&
&input type=&submit& value=&Submit&&
在这个页面中定义了两组控件,sampleValue是一组控件数组,sampleSingleValue是单一控件,那么通过EL在JSP中获取,则:
&%@ page contentType=&text/ charset=UTF-8&%&
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
${paramValues.sampleValue[2]} &br&
${param.sampleSingleValue} &br&
3、其他隐含对象
(1)cookie
JSTL并没有提供设定cookie的操作。如果要取得cookie中名为username的值,可以使用${cookie.username}。
(2)header和headerValues
header存储用户浏览器和服务器通信的数据,如果要取得用户浏览器的版本,可以使用${header[&User-Agent&]},这里注意,由于User-Agent中有横杠这个特殊字符,所以不能用点(.)来导航取得,只能用[]。headerValues则是用来取得某个name的多个值,类似paramValues。
(3)initParam
initParam用来取得设置web站点的环境参数(Context上下文参数)。
一般获取环境中的参数,方法是:String userId = (String)application.getInitParameter(&userId&);如果换做EL表达式,则:${initParam.userId}。
(4)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}
取得主机端的服务信息EL&全名为Expression Language
EL&语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构:
${sessionScope.user.sex}
所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Session的范围中,取得
用户的性别。假若依照之前JSP Scriptlet的写法如下:
User user = (User)session.getAttribute(&user&);
String sex = user.getSex( );
两者相比较之下,可以发现EL&的语法比传统JSP Scriptlet&更为方便、简洁。
EL&提供&.&和&[
]&两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user[&sex&]}
.&和&[ ]&也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1)&当要存取的属性名称中包含一些特殊字符,如.&或 – 等并非字母或数字的符号,就一定要使用&[
],例如:${user.My-Name }
上述是不正确的方式,应当改为:${user[&My-Name&] }
(2)&我们来考虑下列情况:
${sessionScope.user[data]}
此时,data&是一个变量,假若data的值为&sex&时,那上述的例子等于${sessionScope.user.sex};
假若data&的值为&name&时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但.&无法做到动态取值。
EL&存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page&范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。
属性范围(jstl名称)
EL中的名称
RequestScope
SessionScope
Application
ApplicationScope
我们也可以指定要取出哪一个范围的变量:
${pageScope.username}
取出Page范围的username变量
${requestScope.username}
取出Request范围的username变量
${sessionScope.username}
取出Session范围的username变量
${applicationScope.username}
取出Application范围的username变量
其中,pageScope、requestScope、sessionScope和applicationScope都是EL&的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出Session范围的username&变量。这种写法是不是比之前JSP&的写法:
String username = (String) session.getAttribute(&username&);容易、简洁许多.
自动转变类型
EL&除了提供方便存取变量的语法之外,它另外一个方便的功能就是:自动转变类型,我们来看下面这个范例:
${param.count + 20}
假若窗体传来count的值为10时,那么上面的结果为30。之前没接触过JSP&的读者可能会认为上面的例子是理所当然的,但是在JSP
1.2&之中不能这样做,原因是从窗体所传来的值,它们的类型一律是String,所以当你接收之后,必须再将它转为其他类型,如:int、float&等等,然后才能执行一些数学运算,下面是之前的做法:
String str_count = request.getParameter(&count&);
int count = Integer.parseInt(str_count);
count = count + 20;
所以,注意不要和java的语法(当字符串和数字用“+”链接时会把数字转换为字符串)搞混淆喽。
EL&隐含对象
JSP有9个隐含对象,而EL也有自己的隐含对象。EL隐含对象总共有11&个
PageContext
javax.servlet.ServletContext
表示此JSP的PageContext
java.util.Map
取得Page范围的属性名称所对应的值
RequestScope
java.util.Map
取得Request范围的属性名称所对应的值
sessionScope
java.util.Map
取得Session范围的属性名称所对应的值
applicationScope
java.util.Map
取得Application范围的属性名称所对应的值
java.util.Map
如同ServletRequest.getParameter(String name)。回传String类型的值
paramValues
java.util.Map
如同ServletRequest.getParameterValues(String name)。回传String[]类型的值
java.util.Map
如同ServletRequest.getHeader(String name)。回传String类型的值
headerValues
java.util.Map
如同ServletRequest.getHeaders(String name)。回传String[]类型的值
java.util.Map
如同HttpServletRequest.getCookies()
java.util.Map
如同ServletContext.getInitParameter(String name)。回传String类型的值
不过有一点要注意的是如果你要用EL输出一个常量的话,字符串要加双引号,不然的话EL会默认把你认为的常量当做一个变量来处理,这时如果这个变量在4个声明范围不存在的话会输出空,如果存在则输出该变量的值。
属性(Attribute)与范围(Scope)
与范围有关的EL&隐含对象包含以下四个:pageScope、requestScope、sessionScope&和
applicationScope,它们基本上就和JSP的pageContext、request、session和application一样,所以笔者在这里只稍略说明。不过必须注意的是,这四个隐含对象只能用来取得范围属性值,即JSP中的getAttribute(String
name),却不能取得其他相关信息,例如:JSP中的request对象除可以存取属性之外,还可以取得用户的请求参数或表头信息等等。但是在EL中,它就只能单纯用来取得对应范围的属性值,例如:我们要在session&中储存一个属性,它的名称为username,在JSP&中使用session.getAttribute(&username&)&来取得username&的值,
但是在EL中,则是使用${sessionScope.username}来取得其值的。
所谓的cookie是一个小小的文本文件,它是以key、value的方式将Session
Tracking的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。JSTL并没有提供设定cookie的动作,因为这个动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。假若我们在cookie&中设定一个名称为userCountry的值,那么可以使用${cookie.userCountry}来取得它。
header&和headerValues
header&储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。假若要取得用户浏览器的版本,即${header[&User-Agent&]}。另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues&来取得这些值。
注意:因为User-Agent&中包含“-”这个特殊字符,所以必须使用“[]”,而不能写成
$(header.User-Agent)。
就像其他属性一样,我们可以自行设定web&站台的环境参数(Context),当我们想取得这些参数initParam就像其他属性一样,我们可以自行设定web&站台的环境参数(Context),当我们想取得这些参数
&?xml version=&1.0& encoding=&ISO-8859-1&?&
&web-app xmlns=&/xml/ns/j2ee&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&/xml/ns/j2ee/web-app_2_4.xsd&
version=&2.4&&:
&context-param&
&param-name&userid&/param-name&
&param-value&mike&/param-value&
&/context-param&:
&/web-app&
那么我们就可以直接使用&${initParam.userid}来取得名称为userid,其值为mike&的参数。下面是之前的做法:String
userid = (String)application.getInitParameter(&userid&);
param和paramValues
在取得用户参数时通常使用一下方法:
request.getParameter(String&name)
request.getParameterValues(String&name)
在 EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
这里param 的功能和request.getParameter(String name)相同,而paramValues和
request.getParameterValues(String name)相同。如果用户填了一个表格,表格名称为username,则我们就可以使用${param.username}来取得用户填入的值。
看到这里,大家应该很明确EL表达式只能通过内置对象取值,也就是只读操作,如果想进行写操作的话就让后台代码去完成,毕竟EL表达式仅仅是视图上的输出标签罢了。
pageContext
我们可以使用&${pageContext}来取得其他有关用户要求或页面的详细信息。下表列出了几个比较常用的部分
Expression
${pageContext.request.queryString}
取得请求的参数字符串
${pageContext.request.requestURL}
取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。
${pageContext.request.contextPath}
服务的webapplication的名称
${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是否为新的,所谓新的session,表示刚由server产生而client尚未使用
${pageContext.session.id}
取得session的ID
${pageContext.servletContext.serverInfo}
取得主机端的服务信息
&这个对象可有效地改善代码的硬编码问题,如页面中有一A标签链接访问一个SERVLET,如果写死了该SERVLET的HTTP地址那么如果当该SERVLET的SERVLET-MAPPING改变的时候必须要修改源代码,这样维护性会大打折扣。
EL算术运算
表达式语言支持的算术运算符和逻辑运算符非常多,所有在Java语言里支持的算术运算符,表达式语言都可以使用;甚至Java语言不支持的一些算术运算符和逻辑运算符,表达式语言也支持。
上面页面中示范了表达式语言所支持的加、减、乘、除、求余等算术运算符的功能,读者可能也发现了表达式语言还支持div、mod等运算符。而且表达式语言把所有数值都当成浮点数处理,所以3/0的实质是3.0/0.0,得到结果应该是Infinity。
如果需要在支持表达式语言的页面中正常输出“$”符号,则在“$”符号前加转义字符“\”,否则系统以为“$”是表达式语言的特殊标记。
EL关系运算符
关系运算符
${5==5}或${5eq5}
${5!=5}或${5ne5}
${3&5}或${3lt5}
${3&5}或{3gt5}
${3&=5}或${3le5}
5}或${3ge5}
表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其对应UNICODE值来比较大小的。
注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2}
${ ${param.password1 } = = ${ param.password2 } }
${ param.password1 = = param.password2 }
EL逻辑运算符
逻辑运算符
交集${A && B}或${A
true/false
并集${A || B}或${A
true/false
非${! A }或${not
true/false
Empty&运算符
Empty&运算符主要用来判断值是否为空(NULL,空字符串,空集合)。
条件运算符
${ A ? B : C}
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3756次
排名:千里之外
转载:21篇
(1)(2)(1)(3)(4)(4)(1)(6)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&表达式语言EL
表达式语言
  EL(Expression Language,表达式语言)主要是用在JSP页面中,用来辅助我们产生无脚本的JSP页面,此处的脚本指的是JSP中的Java代码。
  EL的语法是这样的:
  如果你想在页面上直接输出上面的内容,需要进行转义,加上反斜杠即可:
  再比如:
${sessionScope.user.sex}
  所有EL都是以 ${ 为起始、以} 为结尾的。
  Expressions can be used in two ways:
  1.Attribute values in custom and standard actions
  2.Within template text
EL可以用来访问Java Bean
  Beans within the namespace available to the JSP can be accessed easily using EL.
  1.Beans can be accessed by way of dot notation:
  ${bean.attribute}
  2.Beans can be located by searching through the scopes:
  page, request, session and application.
  3.Bean scope can be specified by preceding the bean name with the scope.
  ${sessionScope.cust.firstName}
  JSP页面el1.jsp里有一个表单:
&form action="el/el2.jsp"&
username: &input type="text" name="username"&
&input type="submit" value="submit"&
  在页面el2.jsp里面获取这个参数显示:
  之前可以:
&%= request.getParameter("username") %&
  现在可以:
${ param.username }
  两种效果是一样的。唯一的不同是使用EL打出点之后即便Alt+/也没有任何的输入提示。
  也可以显示Session中的属性值:
&%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&base href="&%=basePath%&"&
&title&My JSP 'el1.jsp' starting page&/title&
&meta http-equiv="pragma" content="no-cache"&
&meta http-equiv="cache-control" content="no-cache"&
&meta http-equiv="expires" content="0"&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="This is my page"&
&link rel="stylesheet" type="text/css" href="styles.css"&
&form action="el/el2.jsp"&
username: &input type="text" name="username"&&br&
interest: &input type="text" name="interest"&&br&
interest: &input type="text" name="interest"&&br&
interest: &input type="text" name="interest"&&br&
interest: &input type="text" name="interest"&&br&
interest: &input type="text" name="interest"&&br&
&input type="submit" value="submit"&
&% session.setAttribute("hello", "world");%&
&%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&base href="&%=basePath%&"&
&title&My JSP 'el2.jsp' starting page&/title&
&meta http-equiv="pragma" content="no-cache"&
&meta http-equiv="cache-control" content="no-cache"&
&meta http-equiv="expires" content="0"&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="This is my page"&
&link rel="stylesheet" type="text/css" href="styles.css"&
get parameter user name:
&%=request.getParameter("username")%&
${ param.username }
get session attribute:
&%=session.getAttribute("hello")%&
${ sessionScope.hello }
get param in an array:
${ paramValues.interest[3] }
calculation:
${3 div 5}
EL默认对象
  EL表达式支持:
5个算术运算符:
  加(+)减(-)乘(*)除(/ and div)和取模(% and mod)。
6个比较操作符:
3个逻辑运算符:
.和[]运算符
  EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的
  ${sessionScope.user.sex} 等于
  ${sessionScope.user["sex"]}
  . 和 [ ] 也可以同时混合使用,如下:
  ${sessionScope.shoppingCart[0].price}
  回传结果为shoppingCart中第一项物品的价格。
两者差异:
差异1:特殊字符需要包含在[]里。
  当要存取的属性名称中包含一些特殊字符,如 . 或 & 等并非字母或数字的符号,就一定要使用 [ ],例如:
  ${user.My-Name }
  上述是不正确的方式,应当改为:
  ${user["My-Name"] }
差异2:[]中可以放置变量,进行动态取值。
  ${sessionScope.user[data]}
  此时,data 是一个变量。
  假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
  假若data 的值为"name"时,它就等于${sessionScope.user.name}。
  因此,如果要动态取值时,就可以用上述的方法来做,但 . 无法做到动态取值。
  EL 存取变量数据的方法很简单,例如:${username}。
  它的意思是取出某一范围中名称为username的变量。
  因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。
  假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
  我们也可以指定要取出哪一个范围的变量。如:
pageContext
  可以使用${pageContext}来取得其他有关用户要求或页面的详细信息:
  圣思园张龙老师Java Web视频教程。
阅读(...) 评论()两个小例:
运用El表达式截取字符串
${fn:substring(wjcd.lrsj, 0, 16)}
使用functions函数来获取list的长度
${fn:length(list)}
一、内置函数
两个小例:
运用El表达式截取字符串
${fn:substring(wjcd.lrsj, 0, 16)}
使用functions函数来获取list的长度
${fn:length(list)}
1.引入functions标签库
&%@ taglib prefix="fn" uri="/jsp/jstl/functions" %&
2.使用举例
函数名 函数说明 使用举例&
fn:contains 判断字符串是否包含另外一个字符串 &c:if test="${fn:contains(name, searchString)}"&&
fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) &c:if test="${fn:containsIgnoreCase(name, searchString)}"&&
fn:endsWith 判断字符串是否以另外字符串结束 &c:if test="${fn:endsWith(filename, ".txt")}"&&
fn:escapeXml 把一些字符转成XML表示,例如 &字符应该转为& ${fn:escapeXml(param:info)}&
fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")}&
fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开 ${fn:join(array, ";")}&
fn:length 获取字符串的长度,或者数组的大小 ${fn:length(shoppingCart.products)}&
fn:replace 替换字符串中指定的字符 ${fn:replace(text, "-", "&#149;")}&
fn:split 把字符串按照指定字符切分 ${fn:split(customerNames, ";")}&
fn:startsWith 判断字符串是否以某个子串开始 &c:if test="${fn:startsWith(product.id, "100-")}"&&
fn:substring 获取子串 ${fn:substring(zip, 6, -1)}&
fn:substringAfter 获取从某个字符所在位置开始的子串 ${fn:substringAfter(zip, "-")}&
fn:substringBefore 获取从开始到某个字符所在位置的子串 ${fn:substringBefore(zip, "-")}&
fn:toLowerCase 转为小写 ${fn.toLowerCase(product.name)}&
fn:toUpperCase 转为大写字符 ${fn.UpperCase(product.name)}&
fn:trim 去除字符串前后的空格 ${fn.trim(name)}
3.函数描述
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 首尾的空格,并将其返回
二、JSP EL简介
1、语法结构 ${expression}&
2、[ ]与.运算符 EL 提供&.&和&[ ]&两种运算符来存取数据
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用&[ ]&。
例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用&[ ]&来做,而&.&无法做到动态取值。
例如: ${sessionScope.user[data]}中data 是一个变量&
3、变量 EL存取变量数据的方法很简单
例如:${username}。它的意思是取出某一范围中名称为username的变量。&
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。&
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。&
属性范围在EL中的名称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope
三、JSP EL 中的有效表达式
有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。我们将分别了解这些有效表达式中的每一种:
JSP 表达式语言定义可在表达式中使用的以下文字:
文字 文字的值 &
Boolean &true 和 false
Integer &与 Java 类似。可以包含任何正数或负数,例如 24、-45、567
Floating Point &与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567
String任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用双引号,则单引号不需要转义。
Null null &
JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:
算术型+、-(二元)、*、/、div、%、mod、-(一元)
逻辑型and、&&、or、||、!、not
关系型==、eq、!=、ne、、gt、&=、le、&=、ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。
空空操作符是前缀操作,可用于确定值是否为空。
条件型&A ?B :C。根据 A 赋值的结果来赋值 B 或 C。&
3、隐式对象
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:
pageContext
JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,${pageContext.response} 为页面的响应对象赋值。
将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $(param.name) 相当于 request.getParameter (name)。
paramValues
将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。
将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 ${header.name} 相当于 request.getHeader(name)。
headerValues
将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)。
将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues.name} 表达式。 &
将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。
将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。
requestScope
将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope.objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope.objectName.attributeName} 访问对象的属性。
sessionScope
将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:$sessionScope.name}&
applicationScope
将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。
4.注意事项
1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。 &
2、 注意 &%@ page isELIgnored="true" %& 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
阅读(...) 评论()

我要回帖

更多关于 el表达式是否包含 的文章

 

随机推荐