1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > EL表达式和JSTL标签库使用

EL表达式和JSTL标签库使用

时间:2021-06-01 11:22:15

相关推荐

EL表达式和JSTL标签库使用

EL表达式

介绍:

EL(Expression Language) 目的:为了使JSP写起来更加简单。

表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。

EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。

作用:

1, 获取数据:EL表达式用来替换jsp页面中的脚本表达式,他可以从各种类型的web作用域中检索Java对象,例如:访问javabean的属性,List集合,Map集合以及数组等来获取数据。

2, 执行运算:EL表达式可以在jsp页面执行一些基本的关系运算,逻辑运算和算术运算。

3, 获取web开发对象:EL表达式定义了一些隐式对象,利用这些提供的隐式对象,可以很轻松的获取对常用对象的引用,从而获得这些对象中的数据。

用法:

EL表达式的结构

${expresson}

例如:表达式A+B用EL表达式表示为${A+B}

[]与.运算符

EL 提供.和[]两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。

例如:

${user.stu_number}应当改为${user["stu_number"] },使用.运算符来访问它会导致异常发生。

如果要动态取值时,用[]来做,而.无法做到动态取值。

例如:

${sessionScope.user[data]}中data 是一个变量

除此之外,EL表达式中一般使用.运算符来访问其属性,因为他比较简便快捷。

最常见的我们要访问HttpSession时:

${pageContext.session}

当要获取session的id标识时:

${pageContext.session.id}

我们可以看到,使用EL表达式确实很便捷。

EL表达式操作符

EL表达式还可以进行三目运算

如:${count?A:B}。

表示:如果count的计算结果是true,则输出结果是A,否则输出B。

常用场景:欢迎您:${user!=null ?user.username : '游客' }

这里首先判断user是否为空,不为空则去取username,为空则显示一个默认的昵称;如果不加判断直接取username,则容易出现空指针。

EL提供了判空运算符:empty

如:${empty username}

表示:判断jsp作用域中是否存在username,如果没有则返回true。(注意,这里是不存在返回的是true)。

EL表达式隐式对象

1, pageContext

用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。

pageContext对象表示当前jsp页面中的javax.servlet.jsp.PageContext,他可以访问所有其他jsp的对象。

如下,列出其可以访问的jsp对象

pageContext为EL表达式的内置隐式对象,而通过它可以访问jsp中的九大内置对象,,那么间接的我们可以使用pageContext隐式的获取jsp中的其他内置对象了。

例如,${pageContext.response} 为页面的响应对象赋值。

2, param

将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得);getParameter(String) 方法返回带有特定名称的参数。

例如:表达式 ${param .name}相当于Servlet中的request.getParameter (name)

3, paramValues

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

例如:表达式 ${paramvalues.name} 相当于 request.getParamterValues(name)。

4, header

将请求头名称映射到单个字符串头值(通过调用ServletRequest.getHeader(String name) 获得)。

例如:表达式 ${header.name} 相当于 request.getHeader(name)。

5, headerValues

将请求头名称映射到一个数值数组(通过调用ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。

例如:表达式${headerValues. name} 相当于 request.getHeaderValues(name)。

6, cookie

将 cookie 名称映射到单个cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。

例如:表达式 ${cookie. name.value} 返回带有特定名称的第一个 cookie 值。

(如果请求包含多个同名的 cookie,则应该使用${headerValues. name} 表达式。)

7, initParam

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

例如:获取username的上下文参数值,使用${initParam.username}

EL表达式的4个Scope

EL表达式在最早的时候必须配合JSTL标签库才能使用。但在jsp2.0之后jsp容器已经可以独立的解析EL表达式了,但现在的开发中,EL表达式我们通常会拿来配合JSTL来使用,这样也会让jsp页面写起来更加简单。

JSTL标签库

介绍:

JSTL(JSP StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的及其以上容器上,如tomcat 7.x。在JSP 2.0中也是作为标准支持的。

使用:

首先我们要引入jar,这里我们要引入两个jar ,jstl-1.2.jar和standard-1.1.2.jar,然后将这两个jar放入到WEB-INF下的lib文件夹中。然后在我们的jsp页面上要引入<%@ tagliburi="/jsp/jstl/core"prefix="c"%>

JSTL标签中的五大类

1, 核心标签库<这个用到最多>

引用核心标签库的语法

<%@ taglib prefix="c"uri="/jsp/jstl/core" %>

JSTL 核心标签库(C标签)标签共有14个,功能上分为4类

1.表达式控制标签:out、set、remove、catch

2.流程控制标签:if、choose、when、otherwise

3.循环标签:forEach、forTokens

4.URL操作标签:import、url、redirect、param

标签作用介绍

举例

forEach标签

<c:forEach items="${map}"var="entry"> ${entry.key},${entry.value }<br> </c:forEach>

Import标签

<c:importurl="http://localhost:8080/drp4.5/test_upload.html"/>

URL,param标签

<c:urlvalue="http://localhost:8080/drp4.5/sysmgr/validate.jsp"var="u"> <c:paramname="userId" value="zhangsan"/> <c:paramname="age" value="20"/> </c:url>

Choose,when,otherwise标签

<c:choose> <c:whentest="${v1 gt v2}"> v1大于v2<br> </c:when> <c:otherwise> v1小于v2<br> </c:otherwise> </c:choose>

If标签

<c:if test="${v1 ltv2}"> v1小于v2<br> </c:if>

2, 国际化标签库

引用国际化标签库的语法

<%@ taglib prefix="fmt" uri="/jsp/jstl/fmt"%>

标签作用介绍

3, XML标签库

引用XML标签库的语法

<%@ taglib prefix="x"uri="/jsp/jstl/xml" %>

标签作用介绍

4, 数据库标签库

引用数据库标签库的语法

<%@ taglib prefix="sql"uri="/jsp/jstl/sql" %>

标签作用介绍

5, 函数标签库

引用函数标签库的语法

<%@ taglib prefix="fn"uri="/jsp/jstl/functions" %>

标签作用介绍

ps:JSTL标签用法最重要的是Core标签库,这个重点记一下,其余的用到了过来翻翻看看怎么写就可以了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。