EL表达式详解.docx
《EL表达式详解.docx》由会员分享,可在线阅读,更多相关《EL表达式详解.docx(21页珍藏版)》请在冰点文库上搜索。
EL表达式详解
EL表达式
注:
在一个jsp中一定要注意
<%@pageisELIgnored="true|false"%>
1,可以访问一个简单的参数
userName是一个参数
${userName}
2,访问一个嵌套的参数
${userBean.userName}
3,可以是一个表达式
${userBean.age>0}
${userBean.age>20&&userBean.age<10}
4,隐含对象
1)pageContextjsp页面的上下文,它提供了访问以下对象的方法
a,ServletContext,Servlet的上下文信息
b,Session客户端的session对象
c,request
d,response
2)param把请求中的参数名和单个值进行映射
3)paramValues把请求中的参数名和一个array值进行映射
4)cookie把请求中的cookie名和单个值进行映射
表达式编程举例:
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset:
gb2312"language="java"%>
useBeanid="user"class="com.iss.ch1.TestBean"scope="request">
setPropertyname="user"property="*"/>
useBean>
表达式语言举例
姓名:
${user.userName}
密码:
${user.password}
年龄:
${user.age}
姓名:
${param.userName}
密码:
${param.password}
年龄:
${param.age}
姓名:
${param['userName']}
密码:
${param['password']}
年龄:
${param['age']}
标准标签库(JSTL)
JSTL包含了和以下操作相关的标签
常用标签out>,set>
条件标签if>,choose>when>otherwise>
url标签
xml标签out>
国际化输出标签timeZone>
SQL标签:
query>
1,一般标签;
out>set>remove>catch>
1)把计算的结果输出
aoutvalue="value"[escapeXml="{true|false}"][default="defaultValue"]/>
boutvalue="value"[escapeXml="{true|false}"]>body
out>
outvalue="test"/>//输出"test"
outvalue="test2'>itese
out>//中的body中的内容不会发送到客户端
outvalue="${test}"/>
outvalue="${notex}"default="如果notex变量不存在,则将显示此信息"/>
2)用来将某范围(request,session,application等)中设置某个值
a,setvalue="value"var="varName"[scope="{page|request|session|application}"]>
b,setvar="varname"[scope="{page....}"]>body
set>
c,setvalue="value"target="target"property="propertyname"/>
d,settarget="target"property="propertyname">body
set>
如:
setvalue="admin"var="username"/>
outvalue="${username}"/>
setvar="password">
pass
set>
setvalue="100"var="maxUser"scope="application"/>
useBeanid="user"scope="request"class="com.iss.ch1.test"/>
setvalue="admin"target="${user}"property="userName"/>
settarget="${user}"property="password">
test
set>
3)用于删除某个变量或者属性
removevar="varName"[scope="{page|request|session|application}"]/>
如:
setvalue="20"var="max"scope="application"/>
removevar="max"scope="application"/>
4)捕获由嵌套在它里面的标签抛出的异常
catch[var="varName"]>test
catch>
例:
catchvar="mytest">
<%inti=0;
intj=10/i;
%>
catch>
outvalue="${mytest}"/>
outvalue="${mytest.message}"/>
outvalue="${mytest.cause}"/>
2条件标签
1)用于进行条件判断,如果test属性为true,则就计算它的body
a,iftest="test1"var="varName"[scope="{page|request|....}"]/>
b,iftest="test1"var="varName"[scope="{page|request|....}"]>body
if>
test为表达式的条件
例:
useBeanid="user"class="com.iss.ch1.test"/>
setvalue="16"target="${user}"property="age"/>
iftest="${user.age<18}">
对不起,你的年龄过小
if>
2)choose>用于条件选择,它和when>及otherwise>一起使用
注:
不能单独使用
就象是开关语句swith
choose>
choose>
whentest="条件">也就是choose>的分支
此语句一定要在choose>的里面,并且一定要在otherwise>之前
when>
在choose>中可以有0个或者多个when>或otherwise>
otherwise>也就是最后的分支语句
test与开关语句中的最后选择
otherwise>
如:
choose>
whentest="${user.age<=18}">
when>
whentest="${user.age<30&&user.age>18}">
when>
otherwise>
otherwise>
choose>
你的年龄:
outvalue="${user.age}"/>
3迭代标签
我们一般使用Iterator或Enumeration来进行迭代
forEach>
forTokens>
语法1在Collection中迭代
forEach[var="varName"]items="collection"[varStatus="varStatusName"][begin="begin"][end="end"][step="stet"]>
body
forEach>
语法2迭代固定的次数
forEach[var="varName"][varStatus="varStatusName"][begin="begin"][end="end"][step="stet"]>
body
forEach>
例:
<%Collectionusers=newArrayList();
for(inti=0;i<5;i++)
{
TestBeanuser=newTestBean();
user.setUser("user");
user.setAge("age");
users.add(user);
}
session.setAttribute("usert",users);
%>
forEachvar="use"items="${usert}">
outvalue="${use.user}"/> | outvalue="${use.age}"/> |
forEach>
forTokens>
主要用于处理TokenString的迭代,可以指定一个或者多个分隔符
forTokensitems="stringOfTokens"delims="delimiters"[var="varName"][begin="begin"][end="end"][step="step"]>
body
forTokens>
使用"|"作为分隔符
forTokensvar="tok"items="blue,red,green|yellow|pink,black|white"delims="|">
outvalue="${tok}"/>©
forTokens>
使用"|,"作为分隔符
forTokensvar="tok"items="blue,red,green|yellow|pink,black|white"delims="|,">
outvalue="${tok}"/>©
forTokens>
URL相关的标签
就是页面导向,重定向,资源获得,参数传递等相关标签
importurl="url"var="varname"scope=""charEnvoding="">
tsteeparam>
import>
与includefile=""/>一样的功能
redirecturl="">重定向到另一个资源
param>teewe
redirect>
redirecturl="test.jsp">
paramname="username"value="admin"/>
redirect>重定向到test.jsp中同时带上相关参数
注:
在以上所有标签,在jsp中要定义标签:
<%@taglibprefix="c"uri="%>
xml标签
parse>
out>
set>
1)parse>用于解释xml文档
a,解释由String或reader对象产生的xml文档
parsexml="xmldocument"{var="varName"[scope="scope"]|varDom="var"[scopeDom="scope"]}[systemid="systemid"][filter="filter"/>
b,解释在Body中指定的xml文档
parse{var="varName"[scope="scope"]|varDom="var"[scopeDom="scope"]}[systemid="systemid"][filter="filter">
body
parse>
例如:
<%@taglibprefix="c"uri="%>
<%@taglibprefix="x"uri="%>
<%@pagecontentType="text/html;charset:
gb2312"language="java"%>
test
setvar="xmltest">
test1test2
set>
parsevar="myxml"xml="${xmltest}"/>
outselect="$myxml/a/b/c"/>
outselect="$myxml//d"/>
parsevar="mybook">
java书
89
parse>
outselect="$mybook/books//name"/>
outselect="$mybook//name"/>
outselect="mybook/books/book/name"/>
outselect="mybook/books/book/price"/>
setvar="test">
jsp书
23
teee
ddddd
set>
parsevar="txml"xml="${test}"/>
outselect="txml/books/name"/>
xml流程控制
if>
choose>
when>
otherwise>
forEach>
<%@taglibprefix="x"uri="%>
<%@taglibprefix="c"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
实例
Parse/ForEach
parsevar="document">
JSP应用
出版社
xxx
计算机
JSP书
asiapower
address:
xxxx1
hellking
address:
xxxx2
parse>
forEachselect="$document/GetAllBooks">
->outselect="."/>
forEach>
forEachselect="$document//book">
->
ifselect=".//author">
outselect=".//author/name"/>
if>
forEach>
forEachselect="$document//book">
->
choose>
whenselect='$document//author[@id="2"]'>
authorid=2,outselect='$document//author[@id="2"]'/>
when>
otherwise>
不是id=2
otherwise>
choose>
forEach>
SQL相关标签
setDataSource>用于设定数据源,还可以指其范围
stDataSource[datasource="datasource"]url="jdbcurl"[driver="driverClassName"]user="username"password="password"var="varname"scope="">
例:
<%@taglibprefix="c"uri="%>
<%@taglibprefix="sql"uri="%>
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
sqldatasource
创建普通的数据源:
setDataSource
var="example1"
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;DatabaseName=jspdev"
user="bn"
password="bn"
/>
创建普通的数据源,把用户名和密码写在url中:
setDataSource
var="example2"
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;DatabaseName=jspdev;user=bn;password=bn"
/>
获得一个数据源。
setDataSource
var="example3"
dataSource="jdbc/bn"
/>
使用第一个数据源:
queryvar="query1"dataSource="${example1}">
SELECT*FROMcontact
query>
forEachvar="row"items="${query1.rows}">
Name: outvalue="${row.userName}"/>
| Value: outvalue="${row.mobile}"/>
|
forEach>
使用第二个数据源:
queryvar="query2"dataSource="${example2}">
SELECT*FROMcontact
query>
forEachvar="row"items="${query2.rows}">
Name: outvalue="${row.userName}"/>
| Value: outvalue="${row.mobile}"/>
|
forEach>
使用第三个数据源:
queryvar="query3"dataSource="${example3}">
SELECT*FROMcontact
query>
forEachvar="row"items="${query3.rows}">
Name: outvalue="
展开阅读全文
相关搜索
资源标签
|