JavaWeb —— EL表达式

JSP中可以使用EL(Expression Language)表达式。

EL表达式是用"${}"括起来的脚本,用来更方便地读取对象。

EL表达式写在JSPHTML代码中,而不能写在JSP脚本中。

注意:旧版本的Servlet规范不支持EL表达式。例如Tomcat4.x以及之前的版本都不支持EL表达式。



有效表达式


有效表达式可以包含文字操作符变量(对象引用)和函数调用。


文字

JSP表达式语言定义可在表达式中使用的以下文字:

文字

文字的值

Boolean

true false

Integer

Java类似。可以包含任何正数或负数,例如 24-45567

Floating Point

Java类似。可以包含任何正的或负的浮点数,例如 -1.8E-454.567

String

任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用双引号,则单引号不需要转义。

Null

null

 

操作符

JSP表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:

术语

定义

算术型

+-(二元)、*/div%mod-(一元)

逻辑型

and&&or||!not

关系型

==eq!=ne、、gt<=le>=ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。

空操作符是前缀操作,可用于确定值是否为空。

条件型

A ?B :C。根据 A赋值的结果来赋值 B C

 

隐式对象

JSP表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:

pageContext

JSP页的上下文。它可以用于访问JSP隐式对象,如请求、响应、会话、输出、servletContext等。例如,${pageContext.response}为页面的响应对象赋值。

此外,还提供几个隐式对象,允许对以下对象进行简易访问:

术语

定义

param

将请求参数名称映射到单个字符串参数值(通过调用ServletRequest.getParameter (String name)获得)。getParameter (String)方法返回带有特定名称的参数。表达式$(param.name)相当于request.getParameter (name)

paramValues

将请求参数名称映射到一个数值数组(通过调用ServletRequest.getParameter (String name)获得)。它与param隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式${paramvalues. name)相当于request.getParamterValues(name)

header

将请求头名称映射到单个字符串头值(通过调用ServletRequest.getHeader(String name)获得)。表达式${header. name}相当于request.getHeader(name)

headerValues

将请求头名称映射到一个数值数组(通过调用ServletRequest.getHeaders(String)获得)。它与头隐式对象非常类似。表达式${headerValues. name}相当于request.getHeaderValues(name)

cookie

cookie名称映射到单个cookie对象。向服务器发出的客户端请求可以获得一个或多个cookie。表达式 ${cookie. name .value}返回带有特定名称的第一个cookie值。如果请求包含多个同名的cookie,则应该使用${headerValues. name}表达式。

initParam

将上下文初始化参数名称映射到单个值(通过调用ServletContext.getInitparameter(String name)获得)。

除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量:

术语

定义

pageScope

将页面范围的变量名称映射到其值。例如,EL表达式可以使用${pageScope.objectName}访问一个JSP中页面范围的对象,还可以使用 ${pageScope .objectName. attributeName}访问对象的属性。

requestScope

将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL表达式可以使用${requestScope. objectName}访问一个JSP请求范围的对象,还可以使用 ${requestScope. objectName. attributeName}访问对象的属性。

sessionScope

将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:${sessionScope. name}

applicationScope

将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。

类别

标识符

描述

示例

请求参数

param

包含所有参数的Map。可以获取参数(返回String

例如${param.foo}

${param[‘foo’]}

 

paramValues

包含所有参数的Map。可以获取参数数组(返回String[]

当提交多个参数,例如el.jsp?a=first&a=second,当提交的参数a为多个值{first,second}

使用param只能获取第一个值,而使用param只能获取第一个值,而使用paramValues能够获取到其他的值。${params.a[0]}将输出”first”,${param.a[1]}将输出”second

头信息

Header

包含所有头信息的Map。可以获取头信息(返回String

例如:${header.host}可能返回localhost:8080

头信息

headerValues

包含所有头信息的Map。可以获取头信息数组(返回String[]

${header.host[0]}。当头信息为数组时可以取多个值。

Cookie

cookie

包含所有CookieMapKeyCookiename属性。

使用<% response.addCookie(new Cookie(user,hello));%>设置Cookie后,${cookie.user}返回该Cookie,而${cookie.user.value}返回”hello”,${cookie.user.name}返回”user

初始化参数

ininParam

包含所有初始化参数的Map。可以获取初始化参数。

${initParam.encoding}

 

pageScope

包含page作用域内变量的Map

使用<jsp:useBean id=person class=cn.itcast.bean.Person scope=page />声明pageScope范围内的Person对象后,${pageScope.person.age}将可以输出讠对象的age属性值

 

requestScope

包含request作用域变量的Map

 

 

sessionScope

包含session作用域内变量的Map

 

 

applicationScope

包含application作用域内变量的Map

 

 

pageContext

包含页面内的变量的Map,包含requestresponsepageapplicationconfig等隐式对象

${pageContext.reqeust.remoteAddr}将返回客户端IP地址。

 

${person.age}

pagereqeustsessionapplication依次查找

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP(JavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值