版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目六EL和JSTL6.1
EL在JSP页面中,使用EL可以更方便地从存储数据的作用域中获取和输出数据,而无须编写复杂的Java代码。这使得JSP页面的开发更加简单、高效。总的来说,EL是一种功能强大的语言,可以用于简化JSP页面的数据访问和操作,提高开发效率和代码的可读性。它在Web开发中被广泛应用,通常与JSTL(JSPStandardTagLibrary,JSP标准标签库)一起使用,以提供更加灵活和强大的功能。6.1.1
EL的简介6.1
ELEL可以与JavaScript语句结合使用。EL可以自动进行类型转换。如果想通过EL获取两个字符串数值(如number1和number2)的和,可以直接通过“+”进行计算(如${number1+number2})。EL不仅可以访问一般变量,还可以访问JavaBean中的属性、嵌套属性和集合对象。在EL中,可以执行算术运算、逻辑运算、关系运算和条件运算等。在EL中,可以获取pageContext对象,进而获取其他隐式对象。在使用EL进行除法运算时,如果除数为0,则返回表示无穷大的Infinity,而不抛出错误。使用EL可以访问JSP的作用域(request、session、application以及page)。6.1.2
EL的特点6.1
ELEL的语法非常简单,EL语句都是以“${”开始,以“}”结束的,具体语法格式如下:${表达式}由于EL的语法以“${”开始,如果要在JSP网页中显示“${”字符串,必须在前面加上“\”符号,即“\${”,或者写成“${${}”,也就是用表达式输出“${”。下面通过一个案例演示EL的优点。在IDEA中创建名为ELDemo的Web项目,并配置Servlet。在ELDemo项目的src目录中创建DemoEL01.java。具体代码如下。6.1.3
EL的语法格式案例
DemoEL01.java(资源位置:项目6\源文件\DemoEL01.java)importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;@WebServlet(name="DemoEL01",urlPatterns="/DemoEL01")publicclassDemoEL01extendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{request.setAttribute("username","admin");request.setAttribute("password","admin123");RequestDispatcherdispatcher=request.getRequestDispatcher("/DemoEL01.jsp");dispatcher.forward(request,response);}}6.1
EL在ELDemo项目的Web目录中创建DemoEL01.jsp。具体代码如下。案例
DemoEL01.jsp(资源位置:项目6\源文件\DemoEL01.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><body>使用JavaScript:<br/>用户名:<%=request.getAttribute("username")%><br/>密
码:<%=request.getAttribute("password")%><br/><hr/>使用EL:<br/>用户名:${username}<br/>密
码:${password}<br/></body></html>DemoEL01.jsp页面
6.1
EL在EL中,经常需要使用一些符号标记一些名称(如变量名、自定义函数名等),这些符号被称为标识符。EL中的标识符可以由任意的大小写字母、数字和下画线组成,为了避免出现非法的标识符,在定义标识符时还需要遵循以下规范。6.1.4
EL中的标识符不能以数字开头。不能是EL中的关键字(如and、or、gt等)。不能是EL隐式对象(如pageContext)。不能包含单引号(')、双引号(")、减号(-)和正斜线(/)等特殊字符。usernameusername123admin_name_userName下面是一些合法的标识符:123usernameoradmin"namepageContext下面是一些不合法的标识符:6.1
EL关键字就是编程语言里事先定义好并赋予了特殊含义的标识符,和其他语言一样,EL也定义了许多关键字(如false、not等)。EL中所有的关键字如下所示。6.1.5
EL中的关键字andeqgttrueinstanceofornelefalseemptynotltgenulldivmod6.1
EL6.1.6
EL中的常量1.布尔常量布尔常量用于区分一个事物的正反两面,它的值只有两个,分别是true和false。2.整型常量整型常量与Java中的十进制整型常量相同,它的取值范围在Java中定义的常量Long.MIN_VALUE到Long.MAX_VALUE之间,即(−2)63~263−1的整数。3.浮点数常量浮点数常量可以用整数部分加小数部分表示,也可以用指数形式表示。4.字符串常量字符串常量是用单引号或双引号引起来的一连串字符。由于字符串常量需要用单引号或双引号引起来,所以字符串本身包含的单引号或双引号需要用反斜线(\)进行转义,即用“\'”表示字符串本身包含的单引号,用“\"”表示字符串本身包含的双引号。5.Null常量Null常量用于表示变量引用的对象为空,它只有一个值,用null表示。6.1
EL在上述示例中,dept就是一个变量,通过表达式${dept}就可以访问变量dept的值。EL中的变量就是一个基本的存储单元,不用事先定义就可以直接使用。EL可以将变量映射到一个对象上,具体示例:
${dept}6.1.7EL中的变量6.1
EL6.1.8
EL访问数据01点运算符EL中的点运算符(.),用于访问JSP页面中某些对象的属性(如JavaBean对象中的属性、List集合中的属性、Array数组中的属性等),其用法示例如下:${}02方括号运算符EL中的方括号运算符([])与点运算符的功能相似,都用于访问JSP页面中某些对象的属性。当属性名中包含一些特殊符号(如“-”或“?”等非字母或数字的符号)时,就只能使用方括号运算符访问该属性。方括号运算符的用法示例如下:${user["My-Name"]}EL提供了两种运算符用于访问数据,分别是点运算符和方括号运算符。这两种运算符的功能相似,下面分别对它们进行介绍。6.1
EL6.1.8
EL访问数据上述两种运算符在实际应用中有以下特点。点运算符和方括号运算符在某些情况下可以互换(如${}等价于${student["name"]})。方括号运算符可以访问集合或数组中指定索引的某个元素(如表达式${users[0]}用于访问users数组中第一个元素)。方括号运算符和点运算符可以结合使用。例如,表达式${users[0].userName}用于访问users数组中的第一个元素的userName属性。6.1
EL1.算术运算符6.1.9
EL中的运算符表EL算术运算符算术运算符说明算术表达式结果+加${8+2}10-减${8-2}6*乘${8*2}16/(或div)除${8/4}或${8div4}2%(或mod)取模(取余)${8%4}或${8mod2}0EL算术运算符比较简单,在使用时需要注意以下两点。(1)“-”运算符既可以作为减号,也可以作为负号。(2)“/”或“div”运算符进行除法运算得到的商为小数。6.1
EL2.比较运算符6.1.9
EL中的运算符表EL比较运算符在使用EL比较运算符时,需要注意以下两点。(1)比较运算符中的“==”是两个等号,千万不能只写一个等号。(2)为了避免与JSP页面的标签产生冲突,对于后4种比较运算符,通常使用表中括号内的表示方式。比较运算符说明比较表达式结果==(或eq)等于${8==4}或${8eq4}false!=(或ne)不等于${8!=4}或${8ne4}true<(或lt)小于${8<4}或${8lt4}false>(或gt)大于${8>4}或${8gt4}true<=(或le)小于或等于${8<=4}或${8le4}false>=(或ge)大于或等于${8>=4}或${8ge4}true6.1
EL3.逻辑运算符6.1.9
EL中的运算符表EL逻辑运算符需要注意的是,在使用&&运算符时,如果有一个表达式的结果为false,则整个表达式的结果为false;在使用||运算符时,如果有一个表达式的结果为true,则整个表达式结果为true。逻辑运算符说明逻辑表达式结果&&(and)逻辑与${true&&false}或${trueandfalse}false||(or)逻辑或${false||true}或${falseortrue}true!(not)逻辑非${!true}或${nottrue}false6.1
EL4.empty运算符6.1.9
EL中的运算符在EL中,判断对象是否为空,可以通过empty运算符来实现。该运算符是一个前缀(prefix)运算符,即empty运算符位于操作数前方,用来判断一个对象或变量是否为null或空。empty运算符的语法格式如下:${emptyuser}5.条件运算符EL的中条件运算符(?:)用于执行某种条件判断,它类似于Java语言中的if-else语句,其语法格式如下:${A?B:C}6.1
EL6.圆括号运算符6.1.9
EL中的运算符EL中的圆括号运算符“()”用于改变运算符的优先级。EL中的运算符都有不同的优先级。当EL表达式中包含多种运算符时,它们必须按照各自的优先级进行运算。优先级运算符1[].2()3-(unary)not!empty4*/div%mod5+-(binary)6<><=>=ltgtlege7==!=eqne8&&and9||or10?:表EL中运算符的优先级6.2EL隐式对象EL提供了11个隐式对象,这些对象和JSP隐式对象类似,可以直接通过对象名进行直接访问和操作。在EL隐式对象中,除了pageContext是JavaBean对象,对应于javax.servlet.jsp.PageContext类型之外,其他的隐式对象都属于java.util.Map类型。这些隐式对象可以分为3种类型:页面上下文对象、访问作用域范围的隐式对象和访问环境信息的隐式对象。名称描述pageContext对应于JSP中的pageContext对象,可以访问其他隐式对象pageScope代表page域中用于保存属性的Map对象requestScope代表request域中用于保存属性的Map对象sessionScope代表session域中用于保存属性的Map对象applicationScope代表application域中用于保存属性的Map对象param表示一个保存了所有请求参数的Map对象paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回String类型数组header表示一个保存了所有HTTP请求头字段的Map对象headerValues表示一个保存了所有HTTP请求头字段的Map对象,返回String类型数组cookie用于获取客户端发送的cookie值,类型是MapinitParam表示一个保存了所有Web应用初始化参数的Map对象表EL隐式对象6.2EL隐式对象6.2.1pageContext隐式对象为了获取JSP页面的隐式对象,可以使用EL中的pageContext隐式对象。pageContext隐式对象的用法示例如下:${pageContext.response.characterEncoding}下面通过一个案例演示pageContext隐式对象的使用。在ELDemo项目的Web目录中创建DemoEL02.jsp,其具体代码如下。案例
pageContext隐式对象的使用(资源位置:项目6\源文件\DemoEL02.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><body>请求URI为:${pageContext.request.requestURI}<br/>Content-Type响应头:${pageContext.response.contentType}<br/>服务器信息为:${pageContext.servletContext.serverInfo}<br/>Servlet注册名为:${pageContext.servletConfig.servletName}<br/></body></html>使用pageContext隐式对象获取的属性值6.2EL隐式对象6.2.2Web域相关对象Web域相关对象的用法示例如下:${pageScope.userName}${requestScope.userName}${sessionScope.userName}${applicationScope.userName}下面通过一个案例演示Web域相关对象的使用。在ELDemo项目的Web目录中创建DemoEL03.jsp,其具体代码如下。案例
Web域相关对象的使用(资源位置:项目6\源文件
\DemoEL03.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><body><%pageContext.setAttribute("userName","admin");%><%request.setAttribute("bookName","JavaWeb");%><%session.setAttribute("userName","张三");%><%application.setAttribute("bookName","《Java基础》");%>表达式\${pageScope.userName}的值为:${pageScope.userName}<br/>表达式\${requestScope.bookName}的值为:${requestScope.bookName}<br/>表达式\${sessionScope.userName}的值为:${sessionScope.userName}<br/>表达式\${applicationScope.bookName}的值为:${applicationScope.bookName}<br/>表达式\${userName}的值为:${userName}</body></html>使用Web域相关对象获取的属性值6.2EL隐式对象6.2.3访问环境信息的隐式对象EL提供了param和paramValues两个隐式对象,这两个隐式对象专门用于获取客户端访问JSP页面时传递的请求参数。param对象的语法格式比较简单,具体示例如下:${param.num}如果要获取某个请求参数的第一个值,可以使用如下代码:${paramValues.nums[0]}下面通过一个案例演示param对象、paramValues对象的使用。在ELDemo项目的Web目录中创建DemoEL04.jsp,其具体代码如下。<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><bodystyle="text-align:center;"><formaction="${pageContext.request.contextPath}/DemoEL04.jsp">name1:<inputtype="text"name="name1"><br/>name2:<inputtype="text"name="name"><br/>name3:<inputtype="text"name="name"><br/><br/><inputtype="submit"value="提交"/> <inputtype="reset"value="重置"/><hr/>name1:${1}<br/>name2:${paramV[0]}<br/>name3:${paramV[1]}<br/></form></body></html>案例
param对象、paramValues
对象的使用(资源位置:项目
6\源文件\DemoEL04.jsp)6.2EL隐式对象在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL04.jsp”,并按“Enter”键来访问页面。DemoEL04.jsp页面如图所示。在左图所示页面的3个输入框的表单中输入3个字符串,分别为“张三”“李四”“王五”,然后单击“提交”按钮。该页面中显示的结果如图所示。DemoEL04页面DemoEL04页面中显示的结果6.2EL隐式对象6.2.4cookie对象EL提供了cookie隐式对象。该对象是一个集合了所有Cookie信息的Map对象,Map对象中元素的键为各个Cookie的名称,值则为对应的cookie对象。cookie对象用法示例如下:获取cookie对象的信息:${cookie.userName}获取cookie对象的名称:${cookie.userN}获取cookie对象的值:${cookie.userName.value}下面通过一个案例演示cookie对象的使用。在ELDemo项目的Web目录中创建DemoEL05.jsp,其具体代码如下。案例
cookie对象的使用(资源位置:项目6\源文件\DemoEL05.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><body>cookie对象的信息:<br/>${cookie.userName}<br/>cookie对象的名称和值:<br/>${cookie.userN}=${cookie.userName.value}<%response.addCookie(newCookie("userName","admin"));%></body></html>6.2EL隐式对象6.2.5initParam对象${initParam.author}initParam对象用于获取Web应用初始化参数的值,使用initParam对象获取参数author的代码如下:下面通过一个案例演示initParam对象的使用。在ELDemo项目的Web.xml文件中添加如下代码:<context-param><param-name>author</param-name><param-value>初级程序员</param-value></context-param>案例
initParam对象的使用(资源位置:项目6\源文件\DemoEL06.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head></head><body>author的值为:${initParam.author}</body></html>在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL06.jsp”,并按“Enter”键来访问页面。页面会显示使用initParam对象获取的参数值如图所示。6.3
JSTLJSTL实际上是由5个功能不同的标签库组成的。这5个标签库分别是核心标签库、国际化/格式化标签库、SQL(StructureQueryLanguage,结构查询语言)标签库、XML标签库和函数标签库。6.3.1什么是JSTL1.核心标签库<%@taglibprefix="c"URL="/jsp/jstl/core"%>使用核心(Core)标签库的taglib指令格式如下:2.国际化/格式化标签库<%@taglibprefix="fmt"URL="/jsp/jstl/fmt"%>使用国际化格式化标签库的taglib指令格式如下:6.3
JSTL3.SQL标签库使用SQL标签库的taglib指令格式如下:<%@taglibprefix="sql"URL="/jsp/jstl/sql"%>4.XML标签库使用XML标签库的taglib指令格式如下:<%@taglibprefix="xml"URL="/jsp/jstl/xml"%>5.函数标签库使用函数标签库的taglib指令格式如下:<%@taglibprefix="fn"URL="/jsp/jstl/functions"%>6.3
JSTL1.JSTL下载6.3.2
JSTL的下载和使用step01打开浏览器,访问JSTL的官网,单击“Downloads”对应的超链接。如图所示。step02在打开的页面中,单击“standard-1.0/”超链接,选中如下图中
标红处,如图所示。单击“Downloads”对应的超链接单击“standard-1.0/”超链接6.3
JSTLstep03在打开的页面中,单击“binaries/”超连接,如图所示。step04在打开的页面中,选择合适版本的安装包进行下载,如所示。单击“binaries/”超连接选择合适版本的安装包进行下载2.JSTL使用step01将下载好的JSTL安装包进行解压,在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于实现JSTL的Class文件以及JSTL中5个标签库相关的TLD文件,如图所示。JSTL中5个标签库相关的TLD文件6.3
JSTLstep02在项目的web目录下的WEB-INF目录中新建lib目录,将jstl.jar和standard.jar这两个文件复制并粘贴到lib目录下,如左图所示。step03在项目的Web目录下的WEB-INF目录中新建tld目录,将步骤1的TLD文件复制并粘贴tld目录下,如右图所示。将jstl.jar和standard.jar复制并粘贴到lib目录下将TLD文件复制并粘贴tld目录下在项目的web目录的Web-INF目录的web.xml文件中,添加引入TLD文件的代码,具体如下:<jsp-config><taglib><taglib-uri>/jsp/jstl/fmt</taglib-uri><taglib-location>/WEB-INF/tld/fmt.tld</taglib-location></taglib><taglib><taglib-uri>/jsp/jstl/core</taglib-uri><taglib-location>/WEB-INF/tld/c.tld</taglib-location></taglib><taglib><taglib-uri>/jsp/jstl/sql</taglib-uri><taglib-location>/WEB-INF/tld/sql.tld</taglib-location></taglib><taglib><taglib-uri>/jsp/jstl/x</taglib-uri><taglib-location>/WEB-INF/tld/x.tld</taglib-location></taglib></jsp-config>6.3
JSTLstep04需要在IDEA中配置引入文件才可以正常使用JSTL。在IDEA界面选择“File”→“Settings”,在“Setting”界面中选择“Languages&Frameworks”→“SchemasandDTDs”,如图所示。选择“SchemasandDTDs”step05在界面中单击“+”按钮,进入“MapExternalResource”界面。在该界面的“URI”输入框中输入“/jsp/jstl/core”,在“File”中找到jakarta-taglibs-standard-1.0.6目录的tld目录下的c.tld文件,单击“OK”按钮完成导入。如图所示。完成后,在ELDemo项目中就可以使用JSTL了。MapExternalResource6.3
JSTL由于在测试的时候需要使用<c:out>标签,所以需要使用taglib指令导入Core标签库,具体代码如下:
<%@tagliburi="/jsp/jstl/core"prefix="c"%>下面通过一个案例演示JSTL的使用。在ELDemo项目的Web目录中创建DemoEL07.jsp,其具体代码如下。案例
JSTL的使用(资源位置:项目6\源文件\DemoEL07.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@tagliburi="/jsp/jstl/core"prefix="c"%><html><head></head><body><c:outvalue="使用JSTL创建的第一个JSP页面"></c:out></body></html>使用JSTL创建的第一个JSP页面6.4
JSTL中的Core标签库1.<c:out>标签6.4.1表达式标签<c:outvalue="value"[default="defaultValue"][escapeXml="{true|false}"]/><c:out>标签有两种语法格式,具体如下。语法格式1:没有标签体的情况<c:outvalue="value"[escapeXml="{true|false}"]>defaultValue</c:out>语法格式2:有标签体的情况<c:out>标签有多个属性,下面对这些属性进行讲解。escapeXml属性:用于指定是否将>、<、&、'、"等特殊字符进行HTML编码转换后再进行输出,默认值为true。03default属性:用于指定当value属性为null时输出的默认值,该属性是可选的(“[]”中的属性是可选的)。02value属性:用于指定输出的文本内容。016.4
JSTL中的Core标签库<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core"%><html><head></head><body><%--第1个<c:out>标签--%>userName属性的值为:<c:outvalue="${param.username}"default="defaultvalue"/><br/><%--第2个<c:out>标签--%>userName属性的值为:<c:outvalue="${param.username}">defaultvalue</c:out></body></html>下面通过一个案例演示<c:out>标签的使用。在ELDemo项目的Web目录中创建DemoEL08.jsp,其具体代码如下。案例
<c:out>标签的使用(资源位置:项目6\源文件\DemoEL08.jsp)6.4
JSTL中的Core标签库在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL08.jsp”,并按“Enter”键来访问页面。页面会显示使用<c:out>标签指定的默认值,如图所示。<c:out>标签指定的默认值如果不想让<c:out>标签输出默认值,可以在访问DemoEL08.jsp页面时传递一个参数.在浏览器地址栏中输入“http://localhost:8080/DemoEL08.jsp?username=admin”,并按“Enter”键来访问页面。页面会显示传递的参数,如图所示。传递的参数下面通过一个案例演示<c:out>标签escapeXml属性的使用。在ELDemo项目的Web目录中创建DemoEL09.jsp,其具体代码如下。案例
<c:out>标签
escapeXml
属性的使用(资源位置:项目
6\源文件\DemoEL09.jsp)6.4
JSTL中的Core标签库<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core_rt"%><html><head></head><body><c:outvalue="${param.username}"escapeXml="false"><metahttp-equiv="refresh"content="0;url=/"/></c:out></body></html>必应首页在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL09.jsp”,并按“Enter”键来访问页面。跳转到必应首页,如图所示。6.4
JSTL中的Core标签库<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core_rt"%><html><head></head><body><c:outvalue="${param.username}"escapeXml="true"><metahttp-equiv="refresh"content="0;url=/"/></c:out></body></html>如果想对页面中要输出的特殊字符进行转义,可以将escapeXml的属性值设置为true。在ELDemo项目的Web目录中创建DemoEL10.jsp,其具体代码如下。案例
将<c:out>标签的escapeXml属性值设置为true(资源位置:项目6\源文件\DemoEL10.jsp)<meta>标签在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL10.jsp”,并按“Enter”键来访问页面。页面会显示<meta>标签,如图所示。6.4
JSTL中的Core标签库2.<c:remove>标签6.4.1表达式标签<c:removevar="name"[scope="范围"]/><c:remove>标签用于移除指定的范围内的变量,其语法格式如下:var:用于指定要移除的变量名。scope:用于指定变量的有效范围,可选值有page、request、session和application,默认值为page。如果在该标签中没有指定变量的有效范围,那么将分别在page、request、session和application范围内查找变量并移除。6.4
JSTL中的Core标签库6.4.2流程控制标签<c:iftest="testCondition"var="result"[scope="{page|request|session|application}"]/>流程控制是指在程序中会根据不同的条件执行不同的代码,并产生不同的运行结果。1.<c:if>标签语法格式1:没有标签体的情况<c:iftest="testCondition"var="result"[scope="{page|request|session|application}"]> bodycontent</c:if>语法格式2:有标签体的情况,在标签体中指定要输出的内容test属性:用于设置逻辑表达式。var属性:用于指定逻辑表达式中变量的名字。scope属性:用于指定变量的作用范围,默认值为page。6.4
JSTL中的Core标签库<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core_rt"%><html><head></head><body><c:setvalue="1"var="visitCount"property="visitCount"/><c:iftest="${visitCount==1}">
这是你第一次来。欢迎访问网站!</c:if></body></html>下面通过一个案例演示<c:if>标签的使用。在ELDemo项目的Web目录中创建DemoEL11.jsp,其具体代码如下。案例
<c:if>标签的使用(资源位置:项目6\源文件\DemoEL11.jsp)<c:if>标签中的内容在IDEA中启动Tomcat服务器,在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL11.jsp”,并按“Enter”键来访问页面。页面会显示<c:if>标签中的内容,如图所示。6.4
JSTL中的Core标签库2.<c:choose>、<c:when>和<c:otherwise>标签01<c:choose>标签02<c:when>标签<c:when>标签只有一个test属性,该属性的值为布尔类型。<c:when>标签的语法格式如下:03<c:otherwise>标签<c:otherwise>标签没有属性,它必须作为<c:choose>标签最后的分支出现,当所有的<c:when>标签的test属性值都不成立时,才执行和输出<c:otherwise>标签体的内容。<c:otherwise>标签的其语法格式如下:<c:choose>标签没有属性,在它的标签体中只能嵌套一个或多个<c:when>标签,零个或一个<c:otherwise>标签。并且同一个<c:choose>标签中所有的<c:when>子标签必须出现在<c:otherwise>子标签之前。<c:choose>标签的语法格式如下:<c:choose>Bodycontent(<when>and<otherwise>subtags)</c:choose><c:whentest="testCondition">Bodycontent</c:when><c:otherwise>conditionalblock</c:otherwise>6.4
JSTL中的Core标签库下面通过一个案例演示<c:choose>、<c:when>和<c:otherwise>这3个标签的使用。在ELDemo项目的Web目录中创建DemoEL12.jsp,其具体代码如下。<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core_rt"%><html><head></head><body><c:choose><c:whentest="${emptyparam.username}">
未知用户。</c:when><c:whentest="${param.username=='admin'}">${param.username}用户在线。</c:when><c:otherwise>${param.username}在线。</c:otherwise></c:choose></body></html>案例
<c:choose>、<c:when>和<c:otherwise>标签的使用(资源位置:项目6\源文件\DemoEL12.jsp)在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL12.jsp”,并按“Enter”键来访问页面。<c:choose>、<c:when>和<c:otherwise>标签的使用地址为“http://localhost:8080/DemoEL12.jsp?username=admin”,页面显示结果如图所示。页面显示结果6.4
JSTL中的Core标签库6.4.3循环标签<c:forEach[var="varName"]items="collection"[varStatus="varStatusName"][begin="begin"][end="end"][step="step"]> bodycontent</c:forEach><c:forEach>标签有两种语法格式,具体如下。语法格式1:迭代包含多个对象的集合<c:forEach[var="varName"][varStatus="varStatusName"]begin="begin"end="end"[step="step"]> bodycontent</c:forEach>语法格式2:迭代指定范围内的集合var属性:用于指定将当前迭代到的元素保存到page域中的变量名。items属性:用于指定要迭代的集合对象。varStatus属性:用于指定将当前迭代状态信息的对象保存到page域中的变量名。begin属性:用于指定从集合中第几个元素开始进行迭代,索引值从0开始;如果没有指定items属性,就从begin指定的值开始迭代,直到迭代结束为止。6.4
JSTL中的Core标签库6.4.3循环标签<c:forEach[var="varName"]items="collection"[varStatus="varStatusName"][begin="begin"][end="end"][step="step"]> bodycontent</c:forEach><c:forEach>标签有两种语法格式,具体如下。语法格式1:迭代包含多个对象的集合<c:forEach[var="varName"][varStatus="varStatusName"]begin="begin"end="end"[step="step"]> bodycontent</c:forEach>语法格式2:迭代指定范围内的集合var属性:用于指定将当前迭代到的元素保存到page域中的变量名。items属性:用于指定要迭代的集合对象。varStatus属性:用于指定将当前迭代状态信息的对象保存到page域中的变量名。begin属性:用于指定从集合中第几个元素开始进行迭代,索引值从0开始;如果没有指定items属性,就从begin指定的值开始迭代,直到迭代结束为止。6.4
JSTL中的Core标签库在ELDemo项目的Web目录中创建DemoEL13.jsp,其具体代码如下。<%@pageimport="java.util.Map"%><%@pageimport="java.util.HashMap"%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core"%><html><head></head><body><%String[]fruits={"banana","grape","apple","orange"};%>String数组中的元素:<c:forEachvar="name"items="<%=fruits%>">${name}<br/></c:forEach>案例
<c:forEach>标签的使用(资源位置:项目6\源文件\DemoEL13.jsp)<%MapuserMap=newHashMap();userMap.put("Tom","26");userMap.put("Make","27");userMap.put("Lina","28");%>HashMap集合中的元素:<c:forEachvar="entry"items="<%=userMap%>">${entry.key} ${entry.value}<br/></c:forEach></body></html>6.4
JSTL中的Core标签库在IDEA中启动Tomcat服务器,首先在浏览器的地址栏中输入地址“http://localhost:8080/DemoEL13.jsp”,并按“Enter”键来访问页面。页面会显示使用<c:forEach>标签输出的元素,如图所示。使用<c:forEach>标签输出的元素使用<c:forEach>标签的varStatus属性可以获取以下信息。count:表示元素在集合中的序号,从1开始计数。index:表示当前元素在集合中的索引,从0开始计数。first:表示当前元素是否为集合中的第一个元素。last:表示当前元素是否为集合中的最后一个元素。6.4
JSTL中的Core标签库6.4.4
URL相关标签<c:paramname="name"value="value">1.<c:param>标签语法格式1:使用value属性指定参数的值<c:paramname="name"> parametervalue</c:param>语法格式2:在标签体中指定参数的值name属性:用于指定参数的名称;value属性:用于指定参数的值。当使用<c:param>标签为一个URL附加参数时,它会自动对参数值进行URL编码。在上述语法格式中,可以看到<c:param>标签有两个属性,下面对这两个属性分别进行介绍。6.4
JSTL中的Core标签库<c:urlvalue="value"[context="context"][var="varName"][scope="{page|request|session|application}"]>2.<c:url>标签语法格式1:没有标签体的情况<c:urlvalue="value"[context="context"][var="varName"][scope="{page|request|session|application}"]> <c:param>标签</c:url>语法格式2:有标签体的情况,在标签体中指定URL参数value属性:用于指定构造的URL。context属性:用于指定导入同一个服务器下其他Web应用的名称。var属性:用于指定将构造的URL保存到域对象的属性名称。scope属性:用于将构造好的URL保存到域对象中。<c:url>标签中有多个属性,下面对这些属性分别进行介绍。6.4
JSTL中的Core标签库下面通过一个案例演示<c:url>标签的使用。在ELDemo项目的Web目录中创建DemoEL14.jsp,其具体代码如下。<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="/jstl/core"%><html><head></head><body>使用绝对路径构造URL:<br/><c:urlvar="myURL"value="http://localhost:8080/DemoEL14.jsp"><c:paramname="username"value="张三"/></c:url><ahref="${myURL}">DemoEL14.jsp</a><br/>使用相对路径构造URL:<br/><c:urlvar="myURL"value="DemoEL14.jsp?username=admin"/><ahref="${myURL}">DemoEL14.jsp</a></body></html>案例
<c:url>标签的使用(资源位置:项目6\源文件\DemoEL14.jsp)DemoEL14.jsp页面【商业实例】任务一编写首页,使用EL获取realName属性在OA管理系统中,登录人在登录页面输入账号和密码,在登录成功后页面重定向到首页,需要展示当前登录人姓名。使用EL来实现这一过程,home.jsp的代码如下所示。(代码位置:项目6\扩展训练\商业实例\home.jsp)仿公司OA管理系统实现登录成功后,使用EL得到当前登录人姓名,并且重定向到首页<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>首页</title><scripttype="text/javascript"src="jquery.min.js"></script><styl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外钢筋结构施工方案(3篇)
- 盘发护肤营销方案(3篇)
- 武胜泡沫混凝土施工方案(3篇)
- 自建别墅结构施工方案(3篇)
- 龙翔广场施工方案公示(3篇)
- 门窗展厅隔断施工方案(3篇)
- 信用社工作总结暨工作计划(2篇)
- 移动支付对老年人生活便利性影响的研究
- 深基坑边坡抗滑桩加固的最小势能分析方法:理论、模型与工程应用
- 深厚软土中复合地基技术:试验剖析与理论洞察
- 4-02-02-01 国家职业标准客运车辆驾驶员 (2025年版)
- 小学生保护身体隐私课件
- DB51-T 3251-2025 煤矿井下应急广播系统使用管理规范
- 会计研究方法论 第4版 课件全套 吴溪 第1-20章 导论- 中国会计学术研究成果的国际发表
- 智慧树知到《形势与政策(北京大学)》2025春期末答案
- DB22-T 389.4-2025 用水定额 第4部分:居民生活
- 曲妥珠单抗心脏毒性的管理
- 贵州中医药大学时珍学院《C#程序语言设计》2023-2024学年第一学期期末试卷
- 法院委托评估价格异议申请书
- 卫生事业管理学:第十一章 社会健康资源管理
- 电工二级技师试题及答案
评论
0/150
提交评论