Java Web 的 EL相关知识

EL表达式

在JSP开发中,为了获取Servlet域对象中存储的数据,经常要书写很多 java 代码,这样的做法会使JSP页面混乱,难以维护,为此在JSP2.0规范中提供了EL表达式。EL是Expression Language 的缩写,它是一种简单的数据访问语言。
表达式为:${表达式}

首先,在项目的 src 目录下创建一个包 cn.itcast.servlet,在包中创建一个用于存储用户和密码的类 MyServlet,代码如下:请添加图片描述
然后,在WebContent 目录下编写一个名叫 myjsp 的java 文件,使用该文件来输出 MyServlet 所存储的信息,如图:
请添加图片描述
最后,启动 TomCat 服务器在地址栏输入地址:”http://localhost:8080/chapter03/MyServlet“ 来访问页面,如图:
请添加图片描述

EL中的标识符

在EL表达式中,经常需要用一些标识符来标记一些名称以及一些书写的规则。比如:

  • 不能以数字开头。
  • 不能是EL中的保留字,如 and、or、gt。
  • 不能是EL隐式对象,如 怕个 pageContext。
  • 不能包含单引号(‘)、双引号(”)、减号(-)和正斜杠(/)等特殊字符。

EL隐式对象

为了获取 JSP 页面的隐式对象,可以使用 response 对象中的 pageContext 隐式对象。代码如下:
${pageContext.response.characterEncoding}
在项目WebContent目录下创建一个名为 pageContext.jsp 文件,如图:
请添加图片描述
然后运行代码就会出现一下,如图:
请添加图片描述
需要注意的是,不要将EL表达式中的隐式对象与 JSP 中的隐式对象搞混了,只有 pageContext 对象是它们所共有的,其他隐式对象则毫不相关。

Web域相关对象

在项目的 WebContent 目录下,新建一个名为 scopes.jsp 的文件,如图:
请添加图片描述
启动服务器访问该页面:
请添加图片描述
需要注意的是,使用EL表达式获取某个域对象中的属性时,也可以不使用这些隐式对象来指定查找域,而是直接引用域中的属性名称即可。

param 和 paramValues对象

param 对象用于获取请求参数的某个值,他是 Map 类型,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是 null。具体示例如下:
${param.num}
如果一个请求参数有多个值,可以使用 paramValues 对象来获取请求参数的所有值,该对象用于返回请求参数所有的值组成的数组。如果获取某个请求参数值的第一个值,可以使用如下示例:

${paramValues.nums[0]}
在项目的WebContent目录下,新建一个名为param.jsp文件,代码如下:
请添加图片描述
启动服务器显示的结果如图:
请添加图片描述
需要注意的是,如果一个请求参数的值有多个,那么在使用 param 获取请求的参数时,则返回的请求参数是第一个值。

Cookie 对象

在EL表达式中,提供了Cookie隐式对象,该对象是一个代表所有Cookie信息的Map集合,Map集合中的元素键为各个Cookie的名称,值则为对应的Cookie对象,具体示例如下:
获取 cookie 对象的信息: ${cookie.userName}
获取 cookie 对象的名称: ${cookie.userName.name}
获取 cookie 对象的值: ${cookie.userName.value}

在项目WebContent目录下,新建一个名为 cookie.jsp 文件,代码如图:
请添加图片描述
启动服务器运行显示的结果如图:
请添加图片描述

JSTL

将 jstl.jar 和 standard.jar 两文件导入到项目中的 lib 文件夹中,就可以在 JSP 文件中使用 JSTL 标签库。
请添加图片描述

测试JSTL

具体代码如下:
<%@ taglib uri=“http://java.sum.com/jsp/jstl/core” prefix=“c”%>
接下来编写一个简单的JSP文件 test.jsp,使用 taglib 指令引入 Core 标签库,在该文件中使用<c:out>标签,如图:
请添加图片描述
启动服务器显示的结果为图下:
请添加图片描述

JSTL中的Core标签库

语法1:没有标签的情况
<c:out value=“value” [default=“default=“defaultValue”]
[escapeXm1=”{true | false}"]/>

语法2:有标签体的情况
<c:out value=“value” [escapeXm1="{true | false}"]>
defaultValue
</c:out>

请添加图片描述

<c:if>标签

语法1:没有标签体的情况
<c:if test=“testCondition” var=“result”
[scope="{page | request | session | app | application}"]/>

语法2: 有标签体的情况,在标签体中指定输出的内容
<c:if test=“testCondition” var=“result”
[scope="{page | request | session | app | application}"]/>
body content
</c:if>

请添加图片描述
打开服务器运行结果显示为:
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值