欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单谈谈JSP/EL表达式

程序员文章站 2023-11-10 14:24:34
简单谈谈JSP/EL表达式。 1.表达式语言(Expression Language 简称EL) EL最初是定义在JSTL1.0规范中,在JSP2.0中,EL从JSTL中剥离出...

简单谈谈JSP/EL表达式。

1.表达式语言(Expression Language 简称EL)

EL最初是定义在JSTL1.0规范中,在JSP2.0中,EL从JSTL中剥离出来,放到JSP规范中成为了JSP2.0规范的一部分,并添加了新的特性。在JSP页面中,使用EL可以简化对变量和对象的访问。

语法 :${expr }

1) "[]"和"." 操作符用来操作符访问数据 ${user.name } ${user["name"]}
2) 算数操作符
+ ${23+5}28
- ${23-5}18
* ${23*5}115
/(p) ${23/5} 或 ${23 p 5}4.6
%(mod) ${23%5} 或 ${23 mod 5}3
3) 关系表达式
== (eq) 等于
!= (ne) 不等于
< (lt) 小于
> (gt) 大于
<= (le) 小于等于
>= (ge) 大于等于
4) 逻辑运算符
&& (and) 与
|| (or) 或
! (not) 非
5) Empty操作符
${empty A} 用于检测A是否为null,或者为empty
6) 条件操作符
${A ? B : C}
7) 圆括号
用来改变执行的优先级 ${22*(3-1)}

2. 内置对象

使用位置 :${ }

EL表达式的内置对象:11种

         pageContext: javax.servlet.jsp.PageContext对象
          pageScope	 : 
              类型是Map,将页面范围内的属性名和它的值进行映射。主要用于获取页面范围内的属性的值
          requestScope:
              类型是Map,将请求范围内的属性名和它的值进行映射。主要用于获取请求范围内的属性的值,与request对象不同,要想获取request对象 ${requestContext.request}
          sessionScope:
              类型是Map,将会话范围内的属性名和它的值进行映射。主要用于获取会话范围内的属性的值,与session对象不同,要想获取session对象 ${requestContext.session}
          applicationScope: 
              类型是Map,将应用程序范围内的属性名和它的值进行映射。主要用于获取应用程序范围内的属性的值。
          param:	
              类型是Map,将请求中的参数的名字和单个的字符串值进行映射。主要用于获取请求中的参数值,等同于调用req.getParameter(name)
          paramValues:
              类型是Map,将请求中的参数的名字和一个包含了该参数所有值的String类型的数组进行映射。主要用于获取请求中的参数的值,等同于调用req.getParameteValues(name)
          header	:
              类型为Map, 等同于调用req.getHeader(name)
          headerValues:
              类型为Map,等同于调用req.getHeaders(name)
          cookie	:
              类型为Map,等同于调用getCookies(),从返回的数组中找到匹配名字的第一个cookie对象。
          initParam :
              类型为Map,等同于调用context.getInitParameter(name)
3. 命名变量

${user} 命名变量: 通过PageContext.findAttribute(user)方法完成,该表达式按照page,request,session,application范围顺序查找命名的属性user,如果么有找到将返回Null.也可以使用pageScope,requestScope,sessionScope,applicationScope.指定范围 ,${sessionScope.user}

4. JSP标准标签库 JSTL (JavaServer Pages Standard Tag Libary)

jsp提供的自定义标签的功能,扩展了JSP对标签的处理能力,很多开发人员都定制了自身应用的标签库,用于完成某些功能,为了统一标准,sun公司定制了一套标签库的规范,即JSTL。JSTL的目标是为了简化JSP页面的设计。
1. JSTL标签库
功能范围 URI前缀
core https://java.sun.com/jsp/jstl/corec
I18N https://java.sun.com/jsp/jstl/fmtfmt
SQL https://java.sun.com/jsp/jstl/sqlsql
XML https://java.sun.com/jsp/jstl/xmlx
Functions https://java.sun.com/jsp/jstl/functionsfn
2. 配置JSTL
jstl.jar : 包含的是JSTL规范中定义的接口和相关的类
standard.jar: 包含的是开发小组对JSTL的实现和JSTL中5个标签库的TLD文件。
3. 核心标签库
1) 一般用途的标签
用于计算一个表达式,并将结果输出到当前的JswWriter对象类似于jsp表达式<%=expresesion %>或者El 中的 ${ }

用于设置范围变量的值

用于移除范围变量

用于捕获在其中嵌套的操作所抛出的异常对象。

<%
int i = 5;
int j = 0;
int k = i/j;
%>


2) 条件标签
用于实现java语言中if语句的功能


只能包含


判断标签的测试条件是否为true,第一个测试条件为true的标签体被JSP容器执行,如果没有满足条件的标签,那么标签被执行
3)迭代标签
对于包含了多个对象的集合进行迭代,重复执行它的标签体。
属性:
var :变量
items: 迭代对象
varStatus: 被导出的保存了迭代状态的范围变量的名字
begin: 开始迭代的索引
end :终止迭代的索引
step:迭代的步长
对于迭代字符串中由分隔符分隔的各成员
属性:
var :变量
items:要迭代的String对象
delims:指定分割字符串的分隔符
varStatus:被导出的保存了迭代状态的范围变量的名字
begin:开始迭代的索引
end :结束迭代的索引
step:迭代的步长
4) URL相关的标签
用于导入一个基于URL的资源。不仅可以在页面中导入同一个web应用程序下的资源,还可以导入不同web应用程序下的资源,甚至是其他网站的资源。
属性:
url :要导入的资源的URL
context:当使用相对URL来访问一个外部资源时,指定其上下文名字
var :被导出的保存了资源内容的范围变量的名字
scope:var的jsp范围,默认为page
charEncoding:导入的资源内容的字符编码
使用正确的URL重写规则构造一个URL
属性
value :要处理的URL
context:当使用相对URL来访问一个外部资源时,指定其上下文名字
var :被导出的保存了处理后的URL的范围变量的名字
scope:var的JSP范围,默认page
例如:


将客户端的请求重定向到另一个资源。
属性:
url :重定向目标资源的URL
context:当使用相对URL重定向到另一个外部资源的时候,指定其上下文名字

5.I18N标签库

主要用于编写国际化的web应用程序,它分为两部分,第一部分是国际化,第二部分是日期,时间和数字的格式化,在JSP页面中使用I18N标签库,要使用taglib指令,指定引用的标签库
<%@ taglib url="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
按照区域或者定制的方式对日期和时间进行格式化
value 要格式化的日期,时间
type 指定value的日期部分还是时间部分要被格式化或者都要被格式化,默认date
dateStyle日期的预定义格式化样式(java.text.DateFormat)
timeStyle时间的预定义格式化样式(java.text.DateFormat)
default 2005-5-27 9:38:21
short 05-5-27 上午 9:39
medium 2005-5-27 9:38:21
long 2005年5月27日 上午09时38分21
full 2005年5月27日星期五 上午09时38分21CST
pattern 自定义格式化日期和时间样式,自定义样式必须使用在java.text.SimpleDateFormat类中定义的样式语法。一旦指定了pattern属性,type,dateStyle
timeZone使用的时区. 参照java.util.TimeZone
var 被导出的保存了格式化后的结果范围变量的名字
scope var的JSP范围。