el表达式foreach和Jsp标签可以一起用吗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&13535人阅读
EL+JSTL(4)
一、EL表达式: Expression Language提供了在 JSP
脚本编制元素范围外(例如:脚本标签)使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP
文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算
&&& 1)语法结构&&&&&&&
&&&&&& ${expression}
&&&&& 2)[]与.运算符
&&&&&&& EL 提供.和[]两种运算符来存取数据。
&&&&&&& 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。
&&&&&&& 例如:${user.My-Name}应当改为${user[&My-Name&] }
&&&&&&&&&& 如果要动态取&#20540;时,就可以用[]来做,而.无法做到动态取&#20540;。
&&&&&&& 例如:${sessionScope.user[data]}中data
是一个变量
&&& 3)变量
&&& EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为 username的变量。
&&& 它会依序从Page、Request、Session、Application范围查找(范围从小到大)。
&&& 如果找到则停止,并且不显示null,而是不显示&#20540;,这也是el表达式的优点,同时也是使用EL表达式取&#20540;进行判断时应该注意的
&&& 例如:在js中使用s标签并配合EL表达式取&#20540;做判断
&&& var username = ${username};
&&& &s:if test=&username ==null&&这样的判断是错误的,因为EL表达式如果去不出&#20540;,是不会显示null的
&&& 正确的方式为:&s:if test='username ==&&'&(注意单引号和双引号的使用)或者:&s:if test=&${username ==null}&&
&&& 属性范围在EL中的名称&&&&&&&&&&&&&&&&&
使用方式:&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&相当于:
& & Page PageScope&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ${ pageScope.page_name }&&&&&&&&&&&&&&&&&&&&&
&  Request RequestScope&&&&&&&&&&&&&&&&&&&& ${ requestScope.request_name }&&&&&&&&&&&&&& &%=request.getAttribute(&request_name&);%&
&  Session SessionScope&&&&&&&&&&&&&&&&&&&&& ${ sessionScope.session_name }&&&&&&&&&&&&&&& &%=session.getAttribute(&session_name&);%&
&  Application ApplicationScope&&&&&&&&&&&& ${ applicationScope.application_name }&&&& &%=application.getAttribute(&application_name&);%&
二、有效表达式
&&& 有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。
&&& 1)文字:
&&&&&& 文字文字的&#20540;
&&&&&& Boolean true 和 false&&&&
例如:${true}
&&&&&&&&& Integer 与 Java
类&#20284;。可以包含任何正数或负数,例如 24、-45、567&&&
例如:${23&#43;45}
&&&&&&&&& Floating Point
与 Java 类&#20284;。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567
&&&&&&&&& String 任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。
&&&&&&&&&&&&& 必须注意,如果在字符串两端使用双引号,则单引号不需要转义。
&&&&&& Null null
&&&&& 2)操作符
表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:
&   术语定义
&&&&& 算术型 &#43;、-(二元)、*、/、div、%、mod、-(一元)
&&&&& 逻辑型 and、&&、or、||、!、not
&&&&&&&& 关系型 ==、eq、!=、ne、、gt、&=、le、&=、ge。可以与其他&#20540;进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。
&&&&& 空空操作符是前缀操作,可用于确定&#20540;是否为空。例如:${empty& user.username}&& ${not&& empty& user.username}
&&&&& 条件型 A ?B :C。根据 A
赋&#20540;的结果来赋&#20540; B 或 C。
&&& 3)隐式对象
&&&&&& 最常用的隐式对象有${param}和${paramValues}.
&&&&&&&&& param 将请求参数名称映射到单个字符串参数&#20540;(通过调用 ServletRequest.getParameter (String name)
&&&&&&&&&&&&& getParameter (String)
方法返回带有特定名称的参数。表达式 $(param . name)
相当于 & %=request. getParameter(“username”)% &
&&&&&&&&&&&&&&&&&&& 例如在一个页面地址栏里面传的参数可以在另一个页面中通过这样的方式取出
&&&&&& paramValues 将请求参数名称映射到一个数&#20540;数组(通过调用 ServletRequest.getParameter (String name)
&&&&&&&&&&&&& 它与 param
隐式对象非常类&#20284;,但它检索一个字符串数组而不是单个&#20540;。表达式 ${paramvalues. name)
相当于 request.getParamterValues(name)。
&&&&&& header 储存用户浏览器和服务端用来沟通的数据(通过调用 ServletRequest.getHeader(String name)
&&&&&&&&&&&&&& 例:要取得用户浏览器的版本,可以使用${header[&User-Agent&]}。表达式 ${header. name}
相当于 request.getHeader(name)。
&&&&&& headerValues 有可能同一标头名称拥有不同的&#20540;(通过调用 ServletRequest.getHeaders(String)
&&&&&&&&&&&&& 它与头隐式对象非常类&#20284;。表达式 ${headerValues. name}
相当于 request.getHeaderValues(name)。
&&&&&& cookie 将 cookie
名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。
&&&&&&&&&&&&& 表达式 ${cookie. name .value}
返回带有特定名称的第一个 cookie &#20540;。
&&&&&&&&&&&&& 如果请求包含多个同名的 cookie,则应该使用 ${headerValues. name}
&&&&&& initParam 将上下文初始化参数名称映射到单个&#20540;(通过调用 ServletContext.getInitparameter(String name)
&&&&&&&&&&&&& 表达式${initParam.userid}相当于application.getInitParameter(&userid&);
&&&&&&& &&pageContext取得其他有关用户要求或页面的详细信息。
&&&&& ${pageContext.request.queryString}&&&&&&&&
取得请求的参数字符串&&&& 相当于&%=request.getQueryString()%&
&&&&& ${pageContext.request.requestURL}&&&&&&&&
取得请求的URL,但不包括请求之参数字符串&& &%=request.getRequestURL()%&
&&&&& ${pageContext.request.contextPath}&&&&&&&&
服务的web application 的名称&&
相当于&%=request.getContextPath()%&
&&&&& ${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}&&
取得主机端的服务信息
&&&&&& 另外:上面提到的pageScope、requestScope、sessionScope
和 applicationScope也都是EL的隐式对象
&&&&&&&&&&&& 例如:&%=user.getAddr( ) %&
等价于 ${user.addr} (user为一个变量,在action或者severlet中存放于指定的作用域中,addr为user的属性)
三、特别强调
&&&&& 1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。
&&&&&&&& 例如:即使现有的 pageContext
属性包含某些其他&#20540;,${pageContext} 也返回 PageContext
&   2、注意 &%@ page isELIgnored=&true& %&
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
四、JSTL(C)标签:
&&&&& 由于EL表达式不能循环取出集合对象的&#20540;,所以可以通过使用jstl标签中的方法解决这个循环取出集合对象的问题
&&&&& jstl是建立在el表达式基础上的语言,属于jsp外部的一个标准标签,库导入标签&#26684;式为:&%@ taglib uri=&/jsp/jstl/core&
prefix=&c& %&
&&& JSTL部分介绍:
&&&&&& 1、 &c:out value=&${属性名}&&&/c:out&:输出标签
&&&&&& 2、迭代标签
&&&&&&&&& 语法:&c:forEach items=&userList& var=&user& varStatus=“status” begin=“int“&
end=”int” step=“int” &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //循环体
&&&&&&&& &&&&&&&&&&& &c:out value=&${status.index}&&&/c:out&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:out value=&${status.count}&&&/c:out&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:out value=&${ user.name }&&&/c:out&
&&&&&&&& &&&&&&&&&&&&&&&& &c:out value=&${ user.age }&&&/c:out&
&&&&&&&&&&&&&& &/c:forEach&
&&&&&&&&&&&&& 说明:1)items:是集合,用EL表达式;
&&&&&&&&&&&&&& 2)var:变量名,存放items ,代表集合中每一条数据
&&&&&&&&&&&&&&&& 3)varStatus:
显示循环状态的变量,有一下几个属性:
&&&&&&&&&&&&&&&&&&& ①index:从0开始;
显示当前迭代的索引&#20540;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
②count:元素位置,从1开始;&
显示当前迭代显示的行位置,通过配合判断语句,实现给奇、偶行着不同的色,以进行分区
&&&&&&&&&&&&&&&&&&&&&&&&&&&
③first:如果是第一个元素则显示&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
④last:如果是最后一个元素则显示
&&&&&&&&&&&&&&&&&&&& 4)begin:循环的初始&#20540;(整型);
&&&& &&&&&&&&&&5)end:
循环结束 ;
&&&&&&&&&&&&&&&&&&&& 6)step:步长,循环间隔的数&#20540;;
&&&&&&&&& 3、 &c:if test=&判断语句&&&/c:if&:若果满足test中的条件,则执行&c:if&&/if&标签对之间的的语句,相当于if....的结构功能
&&&&&&&&& 4、&c:choose&:由于JSTL没有形如if (){…}
else {…}的条件语句,所以这种形式的语句只能用&c:choose&
&&&&&&&&&&&&&&&&&& 结构形式:
&&&&&&&&&&&&&&& &c:choose&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:when test=&判断语句1&&执行语句1&/c:when&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:when test=&判断语句2&&执行语句1&/c:when&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ..........
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:otherwise&前面都不符合,执行此默认语句
&&&&&&&&&&&&&&&&&&&& &/c:otherwise&
&&&&&&&&&&&&&&&&&&&&&& &/c:choose&:用于选择标签对之间满足条件的语句,相当于switch语句
&&&&&&&&& 5、、&c:redirect&标签
&&&&&&&&&&&&&& 说明:标签将请求重新定向到另外一个页面,它有以下属性
&&&&&&&&&&&&&& 例子: &c:redirect url=&/login.jsp&/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
将请求重新定向到/login.jsp页,相当于response.setRedirect (&/login.jsp&);
&&&&&&&&&&&&& 6、&c:param&标签
&&&&&&&&&&&&&& 说明:&c:param&标签用来传递参数给一个重定向或包含页面,它有以下属性
&&&&&&&&&&&&&& 例子: &c:redirect url=&/login.jsp&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &c:param name=&paramName& value=&paramValue&/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/c:redirect&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这个就在地址栏里面显示的形式为:/login.jsp?paramName=paramValue
&五、&fmt:&&#26684;式化标签,并显示
&&&&& 说明:需要导入&& &%@ taglib prefix=&fmt& /jsp/jstl/fmt&&/jsp/jstl/fmt& %&
&&&&& 1)&#26684;式化日期&fmt:formatDate value=“” pattern=“yyyy-MM-dd HH:mm:ss”/&
&&&&&&&&&&&&&&& Value:通过EL表达式或&%new Date() %&
取的日期&#20540;;
&&&&&&&&&& Pattern:输出的日期&#26684;式;诉讼
&&&&&&&&&& 例如:
&&&&&&&& &&&&&& &fmt:formatDate value=&${date }& pattern=&yyyy-MM-dd&/&
&&&&&&&&&&&&&&&&&&&&&&&& &fmt:formatDate value=&${date }& pattern=&yyyy年MM月dd日&/&&&&&&&&&&&&&&&&&&&&&&&
&&& 2) &#26684;式化数字&fmt:formatNumber& value=&${number}& pattern=&###,###.##& /&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:253357次
积分:3751
积分:3751
排名:第5858名
原创:131篇
转载:44篇
评论:28条
(4)(14)(3)(14)(11)(2)(15)(3)(12)(9)(4)(7)(1)(1)(5)(3)(6)(3)(1)(4)(19)(4)(26)(6)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 el表达式foreach 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信