1、什么是EL
expression language 表达式语言
特点:
语言简单,使用方便 。${表达式}。
提供自动类型转换的功能
如果返回结果为null时
String -- ””
Number -- 0
Character -- (char)0
Boolean -- false
<%
String count = request.getParameter("count");
if (count != null) {
out.println(Integer.valueOf(count) + 20);
}
%>
从查询字符串获取参数值,是String类型,如果是做算术运算,则必须开发者完成类型转换,再进行算术运算
${param.count + 20 }
1)从request获取查询字符串的值
2)自动类型转换
3)完成算术运算
param.count表示从request中获取查询字符串或从表单中获取表单数据,
parameValues表示多选框或多选下拉菜单中获取值
如果没有指定该参数名称,则获取到null, 且输出的时候为空字符串
如果获取到null,则做算术运算自动转化为0
用来处理来源于page,request, session, application中的一些attribute,查询字符串,表单数据
EL表达式的.运算符,是指attribute中的key值所指定的对象的属性的引用
如:
request.setAttribute("user", userBean);
${user.id } => ${requestScope.user.id }
${user.name } => ${requestScope.user.name }
${sessionScope.users[0].id }表示输出session对象中的users数组的第0个user对象的id属性
pageScope(pageScope里的attribute是来源于pageContext对象)
requestScope
sessionScope
applicationScope
如果没有指定来源于哪个作用域,则EL表达式语言从pageScope->requestScope->sessionScope->applicationScope依次
查找是否存在该指定的attribute
可以明确地指定EL表达式从哪个作用范围获取数据
2、el表达式中常用的符号
&& (and)
|| (or)
! (not)
== eq (equal)
!= ne (not equal)
>= ge (greater and equal)
<= le (lower and equal)
> gt (greater than)
< lt (lower than)
/ div (divide)
% (mod)
判断是否为空 empty
3、JSTL标准标签库
JavaServer Pages Standard Tag Library
1)STL由JCP(java community process)制定的标准规范,它主要提供给JavaWeb开发人员一个标准通用的标签函数库。
2)Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入java程序(Scritping)的做法,
以提高程序的阅读性、维护性和方便性
功能如下:
基本输入输出、流程控制、循环、XML文件解析、数据库查询及国际化应用等
主要包含5类标签:
1)核心标签库
2)I18N标签库(国际化标签库)
3)SQL标签库
4)XML标签库
5)函数标签库
4、如何使用JSTL标准标签
1)下载jstl-1.2.jar库文件
2)在自己的应用中的WEB-INF目录的lib目录下存放下载好的jar文件
3)在需要使用标签库的jsp中用<%@ taglib %>指定声明使用的标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> jstl的核心标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> jstl的格式化标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> jstl的数据库标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> jstl的函数标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> jstl的xml文件标签库
uri:统一资源标识符 通过一个uri地址找到相应的标签
每一个标准标签库都有相对应的tld描述文件(jstl-1.2.jar包的META-INF),在描述文件中指定了其uri和short-name
5、核心标签库
1)表达式操作
<c:out value=""></c:out> // 输出value属性指定的值
<c:set target="<%=user%>" property="name" value="value" /> //表示给页面中的user对象设置name属性的值 为value
<c:set var="name" value="value" scope="page|request|session|application"/> //表示给pageContext, request, session, application对象中添加一个名称为name的attribute,值为value
<c:remove var="name" scope="page|request|session|application" /> //表示从四个对象中移除名字为name的属性
<c:catch var="name"> //异常代码
</c:catch> //表示捕捉到的异常信息放在pageContext的name所指定的attribute,可以使用${pageScope.name }输出该异常信息
2)流程控制
<c:if test="${'abc' eq 'abc' }" var="result" scope="request">
"abc".equals("abc");
</c:if>
表示对test内的表达式进行判断,所判断的结果放在scope指定的对象中的attribute中,该attribute的名字由var指定
<c:out value="${requestScope.result }" />
<c:choose>
<c:when test="${12 > 15 }">
12 > 15
</c:when>
<c:when test="${12 < 10 }">
12 > 10;
</c:when>
<c:otherwise>
other
</c:otherwise>
</c:choose>
表示条件分支判断类似于if() else if() else if() else
3)迭代操作
<c:forEach var="u" items="<%=users %>" begin="0" end="5" varStatus="s" step="1">
id: ${u.id }
name: ${u.name }<br />
</c:forEach>
items是数组或列表等可以有循环操作的对象
var每次循环所接收的对象
begin从哪个索引开始循环,默认为0开始
end到哪个索引结束(如果大于最大索引,也不会报错)
varStatus表示一个对象来接收index属性,s.index可以输出循环的序号
step表示步长,增量表达式部分如何递增
<c:forTokens items="<%=str %>" delims="," var="s">
<c:out value="${s }"/>
<br />
</c:forTokens>
表示对items指定的字符串根据delims进行分割
4)URL操作
<c:import url="index.jsp"></c:import>
导入url指定的页面
<c:url value="/index.jsp"/>
获取由value指定的页面的包括contextPath的完整路径
String path = request.getContextPath();
<%=path %>/index.jsp
6、自定义标签
public int doStartTag():
在JSP引擎处理开始标签 (例如:<jsp:usebean> )时,将自动调用该方法。
如该方法返回SKIP_BODY,则JSP引擎将不再处理标记体内容
如果返回EVAL_BODY_INCLUDE,则将处理标记体内容
public int doEndTag():
JSP引擎处理结束标签 (例如 :</jsp:usebean> ) 时,将自动调用该方法。
如果该方法返回SKIP_PAGE,JSP引擎将不再处理剩余的JSP页面代码;
如果返回EVAL_PAGE,则JSP引擎将继续处理剩余的JSP页面代码
1)不带属性的自定义标签
a.自定义类继承自javax.servlet.jsp.tagext.TagSupport
b.实现public int doStartTag() throws JspException方法和
public int doEndTag() throws JspException方法
c.编写tld描述文件,放在WEB-INF目录下,文件名以.tld结尾
<taglib>
<description>MyTaglib</description> //对整个taglib的描述信息
<display-name>MyTaglib</display-name> //整个taglib的名字
<tlib-version>1.1</tlib-version> //版本号
<short-name>mytaglib</short-name> //prefix
<uri>http://gs.com/mytaglib</uri> //uri标记描述开始
<tag>
<description> //标签的说明
//print date with specified format
</description>
<name>date</name> //标签的名称,用在JSP页面中引用该标签
<tag-class>com.gs.taglib.MyTaglib</tag-class> 包含自定义标签的class文件
<body-content>JSP</body-content> //在JSP页面中进行处理
</tag>
</taglib>
d.web.xml文件中声明自定义的标签库
<jsp-config>
<taglib>
<taglib-uri>tld描述文件中的uri</taglib-uri>
<taglib-location>/mytaglib.tld</taglib-location> 指示tld描述文件的位置
</taglib>
</jsp-config>
e.在JSP页面中使用<%@ taglib uri="tld描述文件中的uri" prefix="my" %>声明使用自定义的标签库
f.<my:date></my:date>调用指定标签
2)带属性的自定义标签
a.在自定义标签类中添加与属性名称一样的属性,并且提供getter和setter方法,类中可以直接使用此属性名称
b.在tld描述文件的<body-content>JSP</body-content>后面添加与属性对应的<attribute></attribute>
<attribute>
<name>与类中和jsp标签中指定的属性名称一致</name>
<required>true|false</required> //表示在JSP页面的标签中是否一定需要提供该属性
<rtexprvalue>true|false|yes|no</rtexprvalue>// 表示该属性名称能否被用在表达式语句中
</attribut>
c.jsp页面中使用标签可以加上相应的属性
--很抱歉写的有点乱
相关推荐
JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...
**EL表达式简介** EL(Expression Language,表达式语言...通过简单使用EL表达式标签,我们可以轻松地在JSP页面中展示和处理数据,实现页面与后台的高效交互。理解和熟练运用EL表达式,对于提升Web开发技能至关重要。
EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于引用一个值,而方法表达式则是关联一个方法。 1.1 EL 表达式语法 EL 表达式可以分为三种类型:eval-expression、literal-expression 和 ...
本文将详细解释EL表达式的使用方法及其应用场景,帮助开发者更好地理解和掌握这一技术。 #### EL表达式的基础语法 EL表达式总是用大括号`{}`括起来,并且前面有一个美元符号`$`作为前缀,其基本形式为`${...
例如,`<c:if>`和`<c:forEach>`标签可以配合EL表达式进行条件判断和循环操作。通过这种方式,开发者可以将业务逻辑和视图层分离,提高代码的可读性和维护性。 **应用场景** 1. **数据绑定**:EL表达式常用于数据...
这样,服务器就可以识别并正确解析JSP页面中的EL表达式和JSTL标签了。 总的来说,JSTL和EL表达式是JSP开发中不可或缺的部分,它们提供了更加优雅的代码组织方式,降低了维护成本,并提高了开发效率。通过理解并熟练...
传统的JSP脚本元素如`<jsp:getProperty>`和`<jsp:setProperty>`已经被EL表达式所取代,因为EL提供了更简洁的语法。例如,`<jsp:getProperty name="user" property="name"/>` 可以用 `${user.name}` 来代替。 **EL...
但同时,了解EL表达式的另一个新特性也很重要,那就是它作为JSP 2.0中的一个主要新特性,为JSP页面提供了表达语言支持,让访问JSP隐含对象和JavaBeans组件变得更为简单和方便。JSTL(JavaServer Pages Standard Tag ...
### EL表达式详解 #### 一、EL表达式的概述与基本使用 EL(Expression Language),即表达式语言,是JavaServer Pages (JSP) 2.0标准的一部分,用于简化JSP页面中对数据访问的操作。它允许开发者通过简单的语法在...
EL表达式主要用于在页面上展示数据,而标准标签则是一组预定义的标签库,提供了更丰富的功能和更简洁的语法。 EL表达式的核心作用是读取和显示存储在不同作用域(pageContext、request、session、application)中的...
其次,`jstl.jar`(JavaServer Pages Standard Tag Library)是JSP标准标签库,它包含了EL表达式支持和其他常用的JSP标签,如条件语句、循环、函数调用等。在EL表达式与JSTL结合使用时,可以极大地增强JSP页面的功能...
EL表达式与JSTL标签库,挺实用的工具
**JSTL与EL的协同工作**:在JSP页面中,EL表达式通常与JSTL标签一起使用,EL负责数据的获取和计算,而JSTL标签则负责页面的逻辑控制。例如,使用EL表达式和`<c:if>`标签可以实现简单的条件判断: ```jsp ${user != ...
本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...
`c:forEach`标签配合EL表达式可实现循环遍历集合。 **十、EL的函数库** JSTL(JavaServer Pages Standard Tag Library)提供了一系列EL函数,如fmt:formatNumber、fn:length等,用于格式化数据、计算长度等。 ...
EL表达式和JSTL标签库是Java Web开发中非常重要的两个知识点。EL表达式主要用于简化JSP页面中的数据访问,而JSTL(JavaServer Pages Standard Tag Library)标签库则提供了一系列标准的JSP标签,用于实现数据操作、...
**EL表达式语言和JSTL** EL(Expression Language)表达式语言是JavaServer Pages(JSP)技术的一部分,主要用于简化在JSP页面中获取、操作和显示数据。EL表达式语言提供了一种简洁的方式来访问JavaBeans属性、JSP...
JSP提供了一些预定义的EL隐式对象,如`pageContext`、`request`、`session`和`application`,它们可以直接在EL表达式中使用。此外,还有`param`和`paramValues`用于访问请求参数,`header`和`headerValues`用于访问...
这个文档详细阐述了JSTL的API、功能和用法,包括如何使用EL表达式与JSTL标签进行交互。 通过阅读这份文档,你可以了解到: 1. **JSTL标签**:了解JSTL的核心标签库、XML处理标签库(`fmt`、`function`、`nls`、`sql...
EL表达式是JSP中强大的数据绑定工具,极大地提高了开发效率和代码质量。通过熟练掌握EL表达式,开发者可以编写出更加简洁、清晰的JSP页面,提升整个Web应用的可维护性和性能。在实际项目中,结合使用EL和JSP标准标签...