JavaWeb学习笔记:初识EL表达式和JSTL

JavaWeb学习笔记:初识EL表达式和JSTL5.1 pageContext对象:访问JSP内置对象,如request、response、out、session、config、servlet

欢迎大家来到IT世界,在知识的湖畔探索吧!

1.EL表达式

1.1 概念:Expression Language的简称,意为表达式语言,是JSP2.0中引入的一种计算和输出Java对象的简单语言。需Web服务器能够支持Servlet2.4/JSP2.0。

1.2 基本语法:以“${”开头,以”}”结束,中间为合法的表达式。语法格式为${expression}

1.3 EL表达式的禁用

1.3.1 使用”\”符号禁用EL表达式:\${expression}

1.3.2 使用page指令禁用EL表达式:<%@page isELIgnored=”false” %>

1.3.3 在web.xml文件中配置<el-ignored>元素

<jsp-config>

<jsp-property-group>

<url-pattern>*.jsp</url-pattern>

<el-ignored>true</el-ignored>

</jsp-property-group>

</jsp-config>

1.4.EL表达式中使用的变量范围前缀

JavaWeb学习笔记:初识EL表达式和JSTL

1.5.EL表达式中的隐含对象

1.5.1 pageContext对象:访问JSP内置对象,如request、response、out、session、config、servletContext等。例如,以下语句使用EL表达式获取session中的变量username。

${pageContext.session.username}

1.5.2 param和paramValues对象:param对象用于获取请求参数的值,返回字符串;如果一个参数名对应多个值,则需使用paramValues,返回数组。

例如:

在页面中有一个名为username的文本框

<input type=”text” name=”username” id=”username”/>

使用param获取username文本框的值

${param.username}

在页面中有一个名为favor的复选框组

<input type=”checkbox” name=”favor” id=”favor” value=”体育”/>体育

<input type=”checkbox” name=”favor” id=”favor” value=”美术”/>美术

<input type=”checkbox” name=”favor” id=”favor” value=”音乐”/>音乐

使用paramValues获取每一项值

${paramValues.favor[0]} ${paramValues.favor[1]} ${paramValues.favor[2]}

2.JSTP:

2.1 概念:JavaServer Pages Standard Tag Library,JSP标准标签库,为JavaWeb开发人员提供一个标准的、通用的标签库。

2.2 配置JSTL:JSTL下载地址:http://tomcat.apache.org/download-taglibs.cgi。下载taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar、taglibs-standard-jstlel-1.2.5.jar、taglibs-standard-compat-1.2.5.jar,并将jar包复制到项目的WEB-INFO下的lib中。

2.3 JSTL的使用:使用JSTL标签之前必须首先在JSP页面的首行使用<%@ tablib %>指令定义标签库的位置和访问前缀。格式如下:

使用核心标签库:<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>

使用格式标签库:<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %>

使用SQL标签库:<%@ taglib prefix=”sql” uri=”http://java.sun.com/jsp/jstl/sql” %>

使用XML标签库:<%@ taglib prefix=”x” uri=”http://java.sun.com/jsp/jstl/xml” %>

使用函数标签库:<%@ taglib prefix=”fm” uri=”http://java.sun.com/jsp/jstl/functions” %>

2.4 JSTL核心标签库:表达式标签、条件标签、循环标签、URL操作标签

2.4.1 表达式标签:<c:out>、<c:set>、<c:remove>、<c:catch>

(1)<c:out>输出标签:用于将表达式的值输出到JSP页面中,可以替代<%=表达式%>。语法格式如下:

语法一:没有标签体 <c:out value=”expression” [escapeXml=”true|false”] [default=”defaultValue”] />

语法二:有标签体 <c:out value=”expression” [escapeXml=”true|false”] > 标签体 </c:out>

两种格式输出的结果相同。<c:out>标签的属性说明如下:

<c:out>标签的属性说明

属性

类型

描述

使用EL

value

Object

用于指定将要输出的变量或表达式

可以

escapeXml

boolean

用于指定是否转换特殊字符,默认为true,表示转换,如“<”转换为”<“

不可以

default

Object

用于指定当value属性值等于null时,要显示的默认值

不可以

(2)<c:set>设置标签:在指定范围(page、request、session或application)内定义保存某个值的变量,或为指定的对象设置属性值。语法格式如下:

语法一:在scope指定的范围内将指定的值存储到变量中

<c:set value=”value” var=”name” [scope=”page|request|session|application”]

语法二:在scope指定的范围内将标签主体存储到变量中

<c:set var=”name” [scope=”page|request|session|application”]> 标签主体 </c:set>

语法三:将指定的值存储在target属性指定的目标对象的propName属性中

<c:set value=”value” target=”object” property=”propName” />

语法四:将标签主体存储在target属性指定的目标对象的propName属性中

<c:set target=”object” property=”propName”> 标签主体 </c:set>

<c:set>标签的属性说明

属性

类型

描述

使用EL

value

Object

指定变量值

可以

var

String

指定变量名

不可以

target

Object

指定存储变量值或标签主体的目标对象,可以是JavaBean或Map集合对象

可以

property

String

指定目标对象存储数据的属性名

可以

scope

String

指定变量的作用域,默认为page

不可以

(3)<c:remove>移除标签:从指定的JSP范围内移除指定的变量。语法格式如下:

<c:remove var=”name” [scope=”page|request|session|application”]

<c:remove>标签的属性说明

属性

类型

描述

使用EL

var

指定要移除的变量名

scope

指定变量的存在范围

(4)<c:catch>捕获异常标签:捕获程序出现的异常;将异常信息保存在变量中。语法如下:

<c:catch [var=”exception”]> 可能存在异常的代码 </c:catch>

2.4.2 条件标签:<c:if>、<c:choose>、<c:when>、<c:otherwise>

(1)<c:if>标签:根据不同条件处理不同业务。语法格式如下:

<c:if test=”condition” var=”name” [scope=”page|request|session|application”]

标签主体

</c:if>

<c:if>标签的属性说明

属性

类型

描述

使用EL

test

boolean

必选属性,指定条件表达式

可以

var

String

可选属性,指定变量名,保存test属性的判断结果

不可以

scope

String

变量的存在范围

不可以

(2)<c:choose>、<c:when>和<c:otherwise>标签:<c:choose>标签可根据不同条件完成不同的业务逻辑,如没有符合条件,则执行默认条件的业务逻辑。<c:choose>标签只能作为<c:when>和<c:otherwise>的父标签。这3个标签的语法格式如下:

<c:choose>

<c:when test=”condition”>

业务逻辑

</c:when>

…… 多个<c:when>

<c:otherwise>

业务逻辑

</c:otherwise> 一个<c:choose>只能有一个<c:otherwise>

</c:choose>

2.4.3 循环标签: <c:forEach>、<c:forTokens>

(1)<c:forEach>标签:根据循环条件遍历数组和集合类中的所有或部分数据。语法格式如下:

语法一:数字索引迭代

<c:forEach begin=”start” end=”finish” [var=”name”] [varStatus=”statusName”] [step=”step”]> 标签主体 </c:forEach>

语法二:结合成员迭代

<c:forEach items=”data” [var=”name”] [begin=”start”] [end=”finish”] [step=”step”] [varStatus=”statusName”]> 标签主体 </forEach>

<c:forEach>标签的属性说明

属性

类型

描述

使用EL

items

数组、集合、字符串、枚举

被循环遍历的对象,多用于数组和集合类

可以

var

String

循环体的变量,存储items指定的对象的成员

不可以

begin

int

循环的起始位置

可以

end

int

循环的终止位置

可以

step

int

循环的步长

可以

varStatus

String

循环的状态信息,见下表

不可以

JavaWeb学习笔记:初识EL表达式和JSTL

(2)<c:forTokens>标签:用指定的分隔符将一个字符串分割,根据分割的数量确定循环次数。语法格式如下:

<c:forTokens items=”String” delims=”char” [var=”name”] [begin=”start”] [end=”end”] [step=”step”] [varStatus=”statusName”]>

标签主体

</forTokens>

<c:forTokens>标签的属性说明

属性

类型

描述

使用EL

items

String

被遍历的对象,多用于数组和集合类

可以

delims

String

字符串的分割字符,可同时有个分割字符

不可以

var

String

变量的名称

不可以

begin

int

循环的起始位置

可以

end

int

循环的终止位置

可以

step

int

循环的步长

可以

varStatus

String

循环的状态变量

不可以

2.4.4 URL操作标签:<c:import>、<c:redirect>、<c:url>、<c:param>

(1)<c:import>文件导入标签:导入站内或其他网站的静态和动态文件到Web页面中。语法格式如下:

语法一:<c:import url=”url” [context=”context”] [var=”name”] [scope=”page|request|session|application”] [charEncoding=”encoding”]>

标签主体

</c:import>

语法二:<c:import url=”url” varReader=”name” [context=”context”] [scope=”page|request|session|application”] [charEncoding=”encoding”] />

<c:import>标签的属性说明

属性

类型

描述

使用EL

url

String

被导入的文件资源的URL路径

可以

context

String

上下文路径,用于访同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则url属性的值必须以“/”开头

可以

var

String

变量名称,存储获取的资源

不可以

scope

String

变量的存在范围

不可以

varReader

String

以Reader类型存储被包含文件的内容

不可以

charEncoding

String

被导入文件的编码格式

可以

(2)<c:redirect>重定向标签:将客户端发出的request请求重定向到指定的URL服务端,期间可对请求中的属性进行添加或修改。语法格式如下:

语法一:<c:redirect url=”url” [context=”context”] />

语法二:<c:redirect url=”url” [context=”context”]> <c:param name=”” value=”” /> …多个<c:param> </c:redirect>

<c:redirect>标签的属性说明

属性

类型

描述

使用EL

url

带定向资源的URL

可以

context

上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头

不可以

(3)<c:url>生成URL地址标签:生成一个URL路径的字符串,该字符串可用于HTML的<a>标记超链接,或者使用该URL字符串进行页面重定向等。语法格式如下:

语法一:<c:url value=”url” [var=”name”] [scope=”page|request|session|application”] [context=”context”] />

语法二:<c:url value=”url” [var=”name”] [scope=”page|request|session|application”] [context=”context”] > <c:param name=”” value=”” /> </c:url>

<c:url>标签的属性说明

属性

类型

描述

使用EL

value

String

要处理的URL地址

可以

context

String

上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头

可以

var

String

变量名,保存生成的URL字符串

不可以

scope

String

变量的存在范围

不可以

(4)<c:param>参数传递标签:只用于为其他标签提供参数,可与<c:import>、<c:redirect>、<c:url>组合实现动态定制参数。语法格式如下:

<c:param name=”paramName” value=”paramValue”/>

<c:param>标签的属性说明

属性

类型

描述

使用EL

name

参数名

可以

value

参数值

可以

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35357.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信