ch08_EL表达式
- 格式:ppt
- 大小:354.50 KB
- 文档页数:13


EL表达式注:在一个jsp中一定要注意<%@ page isELIgnored="true|false" %>1,可以访问一个简单的参数userName是一个参数${userName}2, 访问一个嵌套的参数${erName}3, 可以是一个表达式${userBean.age>0}${userBean.age>20 && userBean.age<10}4, 隐含对象1) pageContext jsp页面的上下文,它提供了访问以下对象的方法a, Servlet Context,Servlet的上下文信息b, Session 客户端的session对象c, requestd, response2) param 把请求中的参数名和单个值进行映射3) paramValues 把请求中的参数名和一个array值进行映射4) cookie 把请求中的cookie名和单个值进行映射表达式编程举例:<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page contentType="text/html;charset:gb2312" language="java" %> <jsp:useBean id="user" class="com.iss.ch1.TestBean" scope="request"><jsp:setProperty name="user" property="*" /></jsp:useBean><html><head><title>表达式语言举例</title></head><body>姓名:${erName}<br>密码:${user.password}<br>年龄:${user.age}<br><hr>姓名:${erName}<br>密码:${param.password}<br>年龄:${param.age}<br><hr>姓名:${param['userName']}<br>密码:${param['password']}<br>年龄:${param['age']}<br><hr>标准标签库(JSTL)JSTL包含了和以下操作相关的标签常用标签<c:out> ,<c:set>条件标签<c:if>, <c:choose> <c:when> <c:otherwise>url标签<c;import>xml标签<xml:out>国际化输出标签<fmt:timeZone>SQL标签: <sql:query>1, 一般标签;<c:out> <c:set> <c:remove> <c:catch>1) 把计算的结果输出a <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>b <c:out value="value" [escapeXml="{true|false}"]> body </c:out><c:out value="test"/> //输出"test"<c:out value="test2'>itese </c:out> //中的body中的内容不会发送到客户端<c:out value="${test}"/><c:out value="${notex}" default="如果notex变量不存在,则将显示此信息"/>2) 用来将某范围(request,session,application等)中设置某个值a, <c:set value="value" var="varName" [scope="{page|request|session|application}"]> b, <c:set var="varname" [scope="{page....}"]> body </c:set>c, <c:set value="value" target="target" property="propertyname"/>d, <c:set target="target" property="propertyname"> body </c:set>如:<c:set value="admin" var="username"/><c:out value="${username}"/><c:set var="password">pass</c:set><c:set value="100" var="maxUser" scope="application"/><jsp:useBean id="user" scope="request" class="com.iss.ch1.test"/><c:set value="admin" target="${user}" property="userName"/><c:set target="${user}" property="password">test</c:set>3) 用于删除某个变量或者属性<c:remove var="varName" [scope="{page|request|session|application}"]/>如:<c:set value="20" var="max" scope="application"/><c:remove var="max" scope="application"/>4) 捕获由嵌套在它里面的标签抛出的异常<c:catch [var="varName"]> test </c:catch>例:<c:catch var="mytest"><% int i=0;int j=10/i;%></c:catch><c:out value="${mytest}"/><c:out value="${mytest.message}"/><c:out value="${mytest.cause}"/>2 条件标签1) 用于进行条件判断,如果test属性为true,则就计算它的bodya, <c:if test="test1" var="varName" [scope="{page|request|....}"] />b, <c:if test="test1" var="varName" [scope="{page|request|....}"] > body </c:if>test为表达式的条件例: <jsp:useBean id="user" class="com.iss.ch1.test"/><c:set value="16" target="${user}" property="age"/><c:if test="${user.age<18}">对不起,你的年龄过小</c:if>2) <c:choose> 用于条件选择,它和<c:when>及<c:otherwise>一起使用注: 不能单独使用就象是开关语句swith<c:choose> </c:choose><c:when test="条件"> 也就是<c:choose>的分支此语句一定要在<c:choose>的里面,并且一定要在<c:otherwise>之前</c:when>在<c:choose>中可以有0个或者多个<c:when>或<c:otherwise><c:otherwise> 也就是最后的分支语句test 与开关语句中的最后选择</c:otherwise>如:<c:choose><c:when test="${user.age<=18}"><font color="blue"></c:when><c:when test="${user.age<30 && user.age>18}"><font color="red"></c:when><c:otherwise><font color="green"></c:otherwise></c:choose>你的年龄:<c:out value="${user.age}"/>3 迭代标签我们一般使用Iterator 或Enumeration来进行迭代<c:forEach><c:forTokens>语法1 在Collection中迭代<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="stet"]>body</c:forEach>语法2 迭代固定的次数<c:forEach [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="stet"]>body</c:forEach>例:<% Collection users=new ArrayList();for(int i=0;i<5;i++){TestBean user=new TestBean();user.setUser("user");user.setAge("age");users.add(user);}session.setAttribute("usert",users);%><c:forEach var="use" items="${usert}"><tr><td><c:out value="${er}" /></td><td><c:out value="${use.age}" /></td></tr></c:forEach><c:forTokens>主要用于处理TokenString 的迭代,可以指定一个或者多个分隔符<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [begin="begin"] [end="end"] [step="step"]>body</c:forTokens>使用"|" 作为分隔符<c:forTokens var="tok" items="blue,red,green|yellow|pink,black|white" delims="|"> <c:out value="${tok}"/>©</c:forTokens>使用"|," 作为分隔符<c:forTokens var="tok" items="blue,red,green|yellow|pink,black|white" delims="|,"><c:out value="${tok}"/>©</c:forTokens>URL 相关的标签就是页面导向,重定向,资源获得,参数传递等相关标签<c:import url="url" var="varname" scope=" " charEnvoding=" ">tstee <c:param ></c:import >与<jsp:include file=""/>一样的功能<c:redirect url=" " > 重定向到另一个资源<c:param> teewe</c:redirect><c:redirect url="test.jsp"><c:param name="username" value="admin"/></c:redirect> 重定向到test.jsp中同时带上相关参数注:在以上所有标签,在jsp中要定义标签:<%@ taglib prefix="c" uri="/jstl/core" %>xml标签<x:parse><x:out><x:set>1) <x:parse>用于解释xml文档a, 解释由String 或reader对象产生的xml文档<x:parse xml="xmldocument" {var="varName" [scope="scope"]|varDom="var" [scopeDom="scope"]} [systemid="systemid"] [filter="filter"/>b, 解释在Body中指定的xml文档<x:parse {var="varName" [scope="scope"]|varDom="var" [scopeDom="scope"]} [systemid="systemid"] [filter="filter">body</x:parse>例如:<%@ taglib prefix="c" uri="/jstl/core" %><%@ taglib prefix="x" uri="/jstl/xml" %><%@ page contentType="text/html;charset:gb2312" language="java" %><html><head><title>test</title></head><body><c:set var="xmltest"><a><b><c>test1</c></b><d>test2</d></a></c:set><x:parse var="myxml" xml="${xmltest}" /><x:out select="$myxml/a/b/c" /><x:out select="$myxml//d" /><x:parse var="mybook"><books><book id="1"><name>java书</name><price>89</price></book></books></x:parse><x:out select="$mybook/books//name"/><x:out select="$mybook//name"/><x:out select="mybook/books/book/name"/><x:out select ="mybook/books/book/price"/><x:set var="test"><books><book id="01"><name>jsp书</name><price>23</price><authors><author><name>teee</name><adder>ddddd</adder></author></authors></book></books></x:set><x:parse var="txml" xml="${test}"/><x:out select="txml/books/name"/>xml流程控制<x:if><x:choose><x:when><x:otherwise><x:forEach><%@ taglib prefix="x" uri="/jstl/xml" %><%@ taglib prefix="c" uri="/jstl/core" %><%@ page contentType="text/html; charset=gb2312" language="java" %><html><head><title>实例</title></head><body bgcolor="#FFFFFF"><h3>Parse / ForEach</h3><x:parse var="document"><GetAllBooks><book id="1234"><name>JSP应用</name><publisher>出版社</publisher><price>xxx</price><category>计算机</category><description>JSP书</description><authors><author id="1"><name>asiapower</name><address>address:xxxx1</address></author><author id="2"><name>hellking</name><address>address:xxxx2</address></author></authors></book></GetAllBooks></x:parse><x:forEach select="$document/GetAllBooks">-> <x:out select="."/><br></x:forEach><hr/><x:forEach select="$document//book">-><x:if select=".//author"><x:out select=".//author/name"/></x:if><br/></x:forEach><hr><x:forEach select="$document//book">-><x:choose><x:when select='$document//author[@id="2"]'>author id=2,<x:out select='$document//author[@id="2"]'/></x:when><x:otherwise>不是id=2</x:otherwise></x:choose><br/></x:forEach></body></html>SQL相关标签<sql:setDataSource> 用于设定数据源,还可以指其范围<sql:stDataSource [datasource="datasource"] url="jdbcurl" [driver="driverClassName"] user="username" password="password" var="varname" scope="">例:<%@ taglib prefix="c" uri="/jstl/core" %><%@ taglib prefix="sql" uri="/jstl/sql" %><%@ page contentType="text/html; charset=gb2312" language="java" %><html><head><title>sql datasource</title></head><body bgcolor="#FFFFFF">创建普通的数据源:<br><sql:setDataSourcevar="example1"driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev"user="bn"password="bn"/>创建普通的数据源,把用户名和密码写在url中:<br><sql:setDataSourcevar="example2"driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;user=bn;password=bn" />获得一个数据源。
el表达式计算
el表达式是一种在Java EE中广泛使用的表达式语言,它的全称是Expression Language。
通过el表达式,我们可以在JSP页面或者JavaBean中使用简洁的语法进行数据的获取和操作,提高开发效率和可维护性。
在使用el表达式进行计算时,我们可以使用一些内置的函数和操作符,来实现各种复杂的计算逻辑。
比如,我们可以使用算术操作符来进行加减乘除的计算,使用逻辑操作符来进行条件判断,使用比较操作符来进行大小比较等等。
el表达式还支持一些常用的函数,比如字符串操作函数、日期操作函数、数学函数等等。
这些函数能够帮助我们对数据进行一些常见的处理和转换,提高代码的可读性和简洁性。
除了内置的函数和操作符,我们还可以使用el表达式的一些特性来实现更加复杂的计算。
比如,我们可以使用el表达式的三元运算符来实现条件选择,使用el表达式的条件运算符来实现条件判断,使用el表达式的迭代标签来进行循环操作等等。
在使用el表达式进行计算时,我们需要注意一些细节。
比如,el 表达式是区分大小写的,所以我们需要注意变量名的大小写。
另外,el表达式中的变量必须先进行初始化才能使用,否则会报错。
此外,el表达式中的变量可以通过点号来访问其属性或者调用其方法。
el表达式是一种简洁、灵活、易用的表达式语言,能够帮助我们快速进行数据的获取和操作。
通过合理地使用el表达式,我们可以提高代码的可读性和简洁性,提高开发效率和可维护性。
希望本文能够对大家理解和使用el表达式有所帮助。
EL表达式详解EL表达式1、EL简介1)语法结构${expression}2)[ ]与.运算符EL 提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含⼀些特殊字符,如.或?等并⾮字母或数字的符号,就⼀定要使⽤ []。
例如:${user.My-Name}应当改为${user["My-Name"] }如果要动态取值时,就可以⽤[]来做,⽽.⽆法做到动态取值。
例如:${er[data]} //date 变量3)变量1. EL存取变量数据的⽅法很简单,例如:${username}。
因为我们并没有指定哪⼀个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
2. 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
3. 属性范围在EL中的名称Page PageScopeRequest RequestScopeSession SessionScopeApplication ApplicationScope4) 适⽤范围和作⽤域1. EL表达式⽤${ }表⽰,可⽤在所有的HTML和JSP标签中作⽤是代替JSP页⾯中复杂的JAVA代码.2. EL表达式可操作常量变量和隐式对象. 最常⽤的隐式对象有${param}和${paramValues}.${param}表⽰返回请求参数中单个字符串的值. ${paramValues}表⽰返回请求参数的⼀组值.pageScope表⽰页⾯范围的变量值.requestScope表⽰请求对象的变量值. sessionScope表⽰会话范围内的变量值.applicationScope表⽰应⽤范围的变量.3. --<%@ page isELIgnored="true"%> 表⽰是否禁⽤EL语⾔,TRUE表⽰禁⽌.FALSE表⽰不禁⽌.JSP2.0中默认的启⽤EL语⾔.4. -- EL语⾔可显⽰逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结果是false 算术表达式如 ${5+5} 结果是102、EL隐含对象1)与范围有关的隐含对象与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和 applicationScope;它们基本上就和JSP的pageContext、request、session和application⼀样;在EL中,这四个隐含对象只能⽤来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。