JSP 表达式语言
el表达式解析原理java

el表达式解析原理javaEL(Expression Language)表达式是一种用于在JSP和JavaEE应用程序中获取和操作数据的简单表达式语言。
它最初由JavaServer Pages规范定义,并在JSP 2.0中首次引入。
EL表达式提供了一种轻量级的方式来访问和操作JavaBean组件、集合和映射中的数据,而不需要编写复杂的Java代码。
在Java中解析EL表达式需要借助于EL表达式解析器。
在Java EE中,EL表达式解析器由Servlet容器负责创建和管理。
EL表达式的解析原理如下:1. 词法分析(Lexical Analysis):EL表达式的解析器首先将输入的EL表达式分解成一个个Token。
Token是词法分析的基本单元,代表一个特定的语法结构或数据类型。
比如,`'${'`、`'['`、`'('`、`'}'`、`']'`、`')'`、`.`、`'.'`、`','`等都可以作为Token。
2. 语法分析(Syntax Analysis):EL表达式的解析器根据Token序列构建抽象语法树(AST,Abstract Syntax Tree)。
语法分析器将Token按照语法规则进行组合,并创建AST节点。
例如,`${}`将被解析为一个AST节点,最终生成的AST如下所示:```. (property access)/ \person name```这个AST表示了一个属性访问,从`person`对象中获取`name`属性的值。
3. 语义分析(Semantic Analysis):EL表达式的解析器对AST进行语义分析,验证表达式的语义正确性。
它会检查使用的变量、函数是否存在,以及操作符是否支持操作数的数据类型等。
如果发现语义错误,解析器将抛出异常并中断解析过程。
JSP课后习题参考答案

JSP课后习题参考答案●JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。
●服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。
由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。
当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
2. 简述JSP两种体系结构。
答:JSP规范中分别称作JSP Model 1 和JSP Model 2,它们的本质区别在于处理批量请求的位置不同。
Model1,在Model1体系中,JSP页面独自响应请求并将处理结果返回客户。
这里仍然存在显示与内容的分离,因为所有的数据存取都是由JavaBean来完成的。
尽管Model1体系十分适合简单应用的需要,它却不能满足复杂的大型Web应用程序需要。
不加选择地随意运用Model 1,会导致JSP页内被嵌入大量的脚本片段或Java代码。
尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的这就确实是个问题了。
从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。
Model2体系结构,是一种把JSP与Servlet联合使用来实现动态内容服务的方法。
它吸取了两种技术各自的优点,用JSP生成表示层的内容,让Servlet完成深层次的处理任务。
Servlet充当控制者的角色,负责管理对请求的处理,创建JSP页面需要使用的Bean和对象,同时根据用户的动作决定把哪个JSP页面传给请求者。
在JSP页面内没有处理逻辑,它仅负责检索原先由Servlet创建的对象或JavaBean,从Servlet中提取动态内容插入静态模板。
分离了显示和内容,明确了角色的定义以及实现了开发者与网页设计者的分开。
项目越复杂,使用Model 2体系结构的优势就越突出。
el的语法格式

el的语法格式EL(Expression Language)是一种用于在JSP页面中进行表达式评估和计算的简洁和简单的语法。
它是JavaServer Pages规范的一部分,主要用于在JSP中访问和操作JavaBean、容器对象和其他JSP元素。
EL语法由一系列表达式组成,这些表达式用于在JSP页面中获取、设置和操作变量的值。
它可以从多个对象中提取值,并可以进行条件、算术和逻辑运算。
以下是EL语法的一些相关参考内容。
1. 变量访问:- 使用`${}`表示一个EL表达式。
- `${variable}`可以获取名称为variable的变量的值。
- `${object.property}`可以获取对象的属性值。
- `${array[index]}`可以获取数组的指定索引处的元素值。
2. 算术运算符:- 使用`+`、`-`、`*`、`/`和`%`进行加、减、乘、除和取模运算。
- 示例:`${1 + 2}`返回`3`。
3. 比较运算符:- 使用`==`、`!=`、`>`、`<`、`>=`、`<=`进行相等、不等、大于、小于、大于等于和小于等于的比较。
- 示例:`${5 > 3}`返回`true`。
4. 逻辑运算符:- 使用`&&`、`||`和`!`进行逻辑与、逻辑或和逻辑非的运算。
- 示例:`${true && false}`返回`false`。
5. 条件运算符:- 使用`?:`进行条件表达式的判断。
- 示例:`${(5 > 3) ? "greater" : "smaller"}`返回`greater`。
6. 内置对象:- `${pageContext}`:用于访问PageContext对象。
- `${out}`:用于访问JspWriter对象。
- `${session}`:用于访问HttpSession对象。
jsp测试及答案

针对以下题目请选择正确的答案(每道题目有一个或多哥正确的答案)。
每一道题目,所有答案都选对,则该题加分,所选答案错误或不能选出所有正确答案,则该题不得分。
1) 在J2EE中,<%=”2”+4%>将输出()。
(选择一项)a) 2+4 b)6 c)24 d) 不会输出,因为表达式是错误的2)J2EE中,JSP表达式语言的语法是()。
(选择一项)a) {EL expression} b) ${EL expression}c) @{EL expression} d) &{EL expression}3)在J2EE中,下列()语句可以获取页面请求中的一个文本框的输入(文本框的名字为title)。
(请选择一项)a) response.getParameter(“title”); b) request.getAttribute(“title”);c) requert.getParameter(“title”); d) requert.getParameters(“title”); 4)J2EE中,HttpSession接口位于()包中。
(选择一项)a) javax.servlet b) javax.servlet.httpc) javax.servlet.http.session d) javax.servlet.session5)在J2EE中,test.jsp文件中有如下一行代码:<jsp:useBean id=”user” scope=”____” type=”erBean”/>要使user对象在用户对其发出请求时存在,下划线中应填入()。
(选择一项)a)Page b) request c)Session d) application6)在J2EE MVC设计模式体系结构中,()是实现控制器的首选方案。
(选择一项)a) JavaBean b) Servlet c) JSP d) HTML e) XML7) 在J2EE中,若要在JSP正确使用标签:<x:getKing/>,在jsp中声明的taglib指令为:<%@taglib uri=”/WEB-INF/myTags.tld”prefix=”_____”%>,下列线处应该是()。
el表达式写法

el表达式写法
EL(Expression
Language)是一种在JavaWeb应用中使用的表达式语言,用于在JSP 页面中简化表达式的编写。
以下是一些常见的EL表达式写法示例:
1.访问变量:
o${变量名}:直接输出变量的值。
o${对象.属性}:访问对象的属性值。
o${列表[index]}:访问列表中指定索引位置的元素值。
2.调用方法:
o${对象.方法名()}:调用对象的无参方法并输出结果。
o${对象.方法名(参数1, 参数
2, ...)}:调用对象的带参方法并输出结果。
3.算术运算:
o${数值1 + 数值2}:进行加法运算。
o${数值1 - 数值2}:进行减法运算。
o${数值1 * 数值2}:进行乘法运算。
o${数值1 / 数值2}:进行除法运算。
o${数值1 % 数值2}:取模运算。
4.逻辑运算:
o${条件1 && 条件2}:进行逻辑与运算。
o${条件1 || 条件2}:进行逻辑或运算。
o${!条件}:进行逻辑非运算。
这些是EL表达式的一些基本写法,根据具体的需求和上下文,可以使用更复杂的表达式进行计算和操作。
请注意,在使用EL表达式时,要确保正确引入EL的命名空间,并且在合适的上下文中使用E L表达式。
JSP题库2

1、下面哪一个不是JSP本身已加载的基本类()A、ng.*B、java.io.*C、javax.servlet.*D、javax.servlet.jsp.*2、对于JSP声明<%!变量声明%>的说法错误的是()A、一次可声明多个变量和方法,只要以“;”结尾就行B、一个声明仅在一个页面中有效C、声明的变量将作为局部变量D、在预定义中声明的变量将在JSP页面初始化时初始化3、从“员工”表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条select语句正确()A、Select * from员工where 姓名= ‟_玛丽_’B、Select * from员工where 姓名= ‟%玛丽_’C、Select * from员工where 姓名like ‟_玛丽%’D、Select * from员工where 姓名like ‟%玛丽%’4、下述选项中不属于JDBC基本功能的是()A、与数据库建立连接B、提交SQL语句C、处理查询结果D、数据库维护管理5、在JSP中使用<jsp:getProperty>标记时,不会出现的属性是()A、nameB、propertyC、valueD、以上皆不会出现6、page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是()A、<%@ page %>作用于整个JSP页面。
B、可以在一个页面中使用多个<%@ page %>指令。
C、为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的。
D、<%@ page % >指令中的属性只能出现一次。
7、在JSP中调用JavaBean时不会用到的标记是()A、<javabean>B、<jsp:useBean>C、<jsp:setProperty>D、<jsp:getProperty>8、关于JavaBean正确的说法是()A、Java文件与Bean所定义的类名可以不同,但一定要注意区分字母的大小写B、在JSP文件中引用Bean,其实就是用<jsp:useBean>语句C、被引用的Bean文件的文件名后缀为.javaD、Bean文件放在任何目录下都可以被引用9、Servlet程序的入口点是()A、init()B、main()C、service()D、doGet()10、不能在不同用户之间共享数据的方法是()A、通过cookieB、利用文件系统C、利用数据库D、通过ServletContext对象11、在JSP中,()指令用于将文件嵌入JSP页面。
el 表达式

el 表达式EL表达式,即Expression Language Expression,在Java企业开发中是一种非常常见的表达式语言。
EL表达式是一种在JSP页面中使用变量和运算符来获取值的表达式语言,它提供了一种简单和易于使用的方式来操作和展示数据。
EL表达式的出现,使我们可以直接在JSP中使用Java 的变量,而无需编写复杂的Java代码。
使用EL表达式,我们可以很方便的获取Session,Application中的变量值,也可以访问对象属性,字符串、数字等常量,可以进行逻辑运算和算术计算等等。
语法规则EL表达式的语法规则非常简单,就像正则表达式一样。
它由以下三个元素组成:1. 表达式语言的引用符: $、#、@等。
2. EL表达式的变量或名称。
3. 变量或名称之后的操作符或方法名。
下面是一个EL表达式的语法定义举例:${VariableName.propertyName['key'].methodName() }其中,${}是EL表达式的引用符。
VariableName表示EL表达式的变量或对象的名称,propertyName表示对象的属性名称,['key']表示Map对象的key的名称,methodName表示对象的方法名。
变量名称和属性名可以是Java有效的属性名称,也可以使用字符、数字和下划线组成的合法Java变量名称。
EL 表达式还支持一些运算符和函数,如算术运算符、逻辑运算符、比较运算符和常用的函数,例如获取当前日期、格式化日期等。
常用的EL表达式运算符EL表达式支持的运算符非常的丰富,下面列出了一些常用的运算符:1. 算术运算符:+,-,*,/,%。
2. 关系运算符:<,>,<=,>=,==,!=。
3. 逻辑运算符:&&,||,!。
4. 条件运算符:?:。
5. 空运算符:empty。
6. 正则表达式运算符:matches。
chapter15_标准标记库(JSTL)

9/67
例:el.jsp
<jsp:useBean id="user" class="er"> <jsp:setProperty name="user" property="*"/> </jsp:useBean> <body> 获取参数方法一: 获取参数方法一 <hr/> 姓名:${erName}<br> 姓名 密码:${user.password }<br> 密码 年龄:${user.age }<hr> 年龄 获取参数方法二: 获取参数方法二 <hr/> 姓名:${erName}<br> 姓名:${erName}<br> 密码:${param.password }<br> 密码 年龄:${param.age }<hr> 年龄 获取参数方法三: 获取参数方法三 <hr/> 姓名:${param['userName']}<br> 姓名 密码:${param['password'] }<br> 密码 年龄:${param['age'] }<hr> 年龄 <p>
<hr/> 表单 <form> 姓名: 姓名 <input name="userName"><br> 密码: 密码 <input name="password"><br> 年龄: 年龄 <input name="age"><br> <input type="submit"> </form>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
主要内容
EL简介 EL运算符(掌握) EL的基本用法(掌握) EL保留字 禁用EL EL隐式对象(内置对象)(掌握几个就可以) EL的应用及实例演示
3
EL简介 简介
1.是expression language这两个英文单词的缩写(表达式语言) 2.可以获取并显示页面上的数据,它可以替代jsp 脚本表达式元素。 3.它是jsp2.0规范中的一个技术,如果想解析el表达式的话,必须使用支持 Jsp2.0/servlet 2.4(及以上版本)技术的web服务器(tomcat5.0以上版本 均支持el表达式) 4.语法:${ expression}
运算符 描述 Empty 逻辑与 逻辑或 逻辑非
描述 检查空值
5
EL的基本用法 的基本用法
El表达式获取变量的值,可以用 .或者是[]这两个符号。
变量 搜索 范围 依次 为
• Page 、 Request、 Seesion、 Application
6
保留字
程序中不应使用保留字作为变量名或方法的名称 运算符
16
常见问题
EL表示什么?
EL表示JSP表达式语言。
Empty运算符的用途是什么?
Empty运算符是用于检查返回值。如果这个值是null, 将返回true。如果返回一些值,将返回false。
JSP表达式语言有哪些作用?
JSP表达式语言是用于在网页上显示动态内容,可以 代替JSP脚本,且比JSP的Scriptlet和表达式更好维 护页面。JSP表达式语言可用于在网页上显示以表格 形式生成的动态内容。JSP表达式语言也可用于HTML 标签中。EL表达式也可作为标签的属性的值进行传递。
param:返回客户端的请求参数的字符串值
paramValues:返回映射至客户端的请求参数的一组值
11
隐式对象
header:返回一个请求标题名称,然后将该值映射至单个字符串值
headerValues:返回映射至请求标题的一组值
cookie:返回映射至单个 Cookie 对象的 Cookie 名称
<%@ page isELIgnored ="true|false" %>
<html> <html> <%@ page isELIgnored =“true" %> <%@ page isELIgnored =“false" %> <head> <head> <title>使用 JSP 表达式语言</title> <使用 JSP 表达式语言</title> </head> </head> <body> <body> <h1>表达式语言</h1> <h1>表达式语言</h1> <b>浏览器类型是 </b> <b>浏览器类型是</b> ${header["User-Agent"]}. ${header["User-Agent"]}. </body> </body> </html> </html>
4
EL运算符 运算符
运算符
三元运算 符:a?b:c
算术
关系
逻辑
Empty
运算符 描述 描述 运算符 < 乘法 或 lt 小于 &&或and * 或 > 除法 或 gt 大于 || 或or / 或 div < = 或 le 小于等于 + 加法 !或not > = 或 ge 大于等于 减法 = = 或 eq 等于 % 或者 或者mod 取余 !=或ne 或 不等于 运算符
initParam:返回映射至单个值的上下文初始化参数名称 pageScope:返回页面范围的变量名,这些名称已映射至相应的值
12
隐式对象
requestScope:返回对请求对象的属性的访问权限
sessionScope:返回会话范围的变量名,这些名称已映射至相应的值
applicationScope:返回应用范围内的变量,并将变量名映射至相应的值
17
作业
编写一个JSP程序,用以获取一名学员五门学科的分数。 每门学科的得分圴在100分以内。在同一个页面显示所有 提交分数的总分和平均分。 编写一个JSP程序,用以比较两个自定义的整数值,并在 同一个页面上显示比较结果。 编写一个使用表达式语言的JSP程序,该程序将使用用户 输入的数据来操作当前页面的背景色、字号大小、表格 宽度和边框。 编写一个使用JSP表达式语言的JSP程序,输入一个数字, 提交后输出该数字的九九乘法表。
<table> 标签中 的 EL 表达式
<table> 标签中 的 EL 表达式
演示: 演示:示例 1
14
EL的应用 的应用
<html> <%@ page contentType="text/html; charset=" language="java" <head><title>Param.html</title></head> import="java.sql.*" errorPage="" %> <body> <html> <form method="get" action="param.jsp"> <head><title>Param.jsp</title></head> <body> <p>姓名:<input type="text" name="username" size="15" /> 姓名: 姓名 <p>密码:<input type="password" name="password" size="15" /> 姓名: 密码: 姓名:${ername}</br> 密码 <p>性别:<input type="radio" name="sex" value="Male" checked>男 密码: 性别: 密码:${param.password}</br> 性别 男 性别: <input type="radio" name="sex" value="FeMale" / >女 性别:${param.sex}</br> 女 <p>兴趣: <input type="checkbox" name="habbit" value="Reading">看书 兴趣: 兴趣: 兴趣:${paramValues.habit[0]} 兴趣 看书 ${paramValues.habit[1]} <input type=“checkbox” name=“habbit” value=“Game”>玩游戏 玩游戏 </body> <input type="checkbox" name="habbit" value="Travel">旅游 旅游 </html> <input type="checkbox" name="habbit" value="Music">听音乐 听音乐 <input type="checkbox" name="habbit" value="TV">看电视 看电视 <P> <input type="submit" value="传送 传送"> 传送 <input type="reset" value="清除 清除"></P> 清除 </form></body></html>
15
总结
EL 为表达式语言 Java 社区组织的 JSP 标准标签库专家组和 JSP 2.0 专家组开发了JSP表达式语言 JSP 表达式语言可用于任何静态文本、标准标签 和自定义标签 点运算符 ( . ) 或 ( [ ] ) 用于获取变量的值 pageScope、requestScope、sessionScope 和 applicationScope 隐式对象用于访问各种范围的 变量 param 对象返回一个值,将请求参数名称映射至 单个字符串值
and or not eq ne le gt
描述
与 或 非 等于 不等于 小于等于 大于
运算符
ge true false null empty div mod
描述
大于等于 True False Null 清空 相除 取模在 JSP 中禁用计算,以忽略 JSP 中 EL 表 达式的执行 计算的语法为: 禁用 EL 计算的语法为:
isELIgnored
9
隐式对象
隐式对象
pageContext
param
paramValues
initParam
cookie
pageScope header requestScope sessionScope headerValues