一:JSTL表达式
EL表达式是JSTL1.0为了方便存取数据所定义的语言,到了JSP2.0以后,正式将EL纳入标准规划之一,只要是支持Servlet2.4/JSP的容器中,都可以在JSP网页中直接使用EL表达式,使用JSTL搭配EL可以减少代码量使得页面更加容易维护。
EL提供了多种运算符操作,如算术运算符,关系运算符,逻辑运算符和验证等。
二:算术运算符
算术运算符 |
说明 |
示例 |
结果 |
+ |
加 |
${1+1} |
2 |
- |
减 |
${1-1} |
0 |
* |
乘 |
${1*2} |
2 |
/或div |
除 |
${3/2} |
1.5 |
%或mod |
模 |
${3%2} |
1 |
注意:${1+'a'}会抛异常:java.lang.NumberFormatException:For input string:"a"
${1+'1'}结果为2,会将字符串1转型后再加,如果转型失败会抛异常。
${0/20}结果为0.0,程序在运算时,会自动先将运算的两个数转换成Double类型,然后进行除法操作,所以返回的是0.0而不是0.
${20/0}结果为Infinity,表示无穷大的意思。
${0/0}结果会为NaN,表示不是数字的意思。
三:关系运算符
关系运算符 |
说明 |
示例 |
结果 |
==或eq |
等于 |
${1==1} 或${1 eq 1} |
true |
!=或ne |
不等于 |
${1 !=1} 或${1 ne 1} |
false |
< 或 lt |
小于 |
${1<2} 或${1 lt 2} |
true |
> 或 gt |
大于 |
${1>2} 或${1 gt 2} |
false |
<= 或 le |
小于或等于 |
${1<=2} 或${1 le 2} |
true |
>= 或 ge |
大于或等于 |
${1>=2} 或${1 ge 2} |
false |
注意:${"b">="a"}结果为true,会调用String的compareTo来进行比较,显然b>a.
${"" == null}结果为false。
${null > null}结果为false.
${null == null}结果为true.
四:逻辑运算符
逻辑运算符 |
说明 |
示例 |
结果 |
&& 或 and |
并且 |
${a && b}或 ${a and b} |
两者都为true时为true |
|| 或 or |
或者 |
${a || b}或 ${a or b} |
两者之一为true时为true |
! 或 not |
取反 |
${ !a }或 ${not a} |
为true则false,为false则true |
五:验证运算符
EL验证运算符,对于验证数据特别有用,empty 运算符采用单个表达式作为其变量,并返回一个布尔值,多用于判断
如:判断集合是不是为空,其实用 ==null 也是一样的。empty会帮你判断size=0的情况,建议用empty。
//servlet页面
package com.action;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Chapter3Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
List<String> list = new ArrayList<String>();
list.add("张三");
request.setAttribute("list", list);
request.getRequestDispatcher("chapter3.jsp").forward(request, response);
}
}
//jsp页面
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>chapter3.jsp</title>
</head>
<body>
<div>
<div>
${empty list}<br/>
${list == null}
</div>
</div>
</body>
</html>
三元运算符:
${1 > 1 ? "真":"假"} 结果为假
六:与输入有关的隐含对象
param
地址栏输入:http://localhost:8080/jstl/index.jsp?name=xiaowang
jsp页面:${param.name}
可以看到,可以取到传进来的xiaowang这个值,param隐含对象可以取到通过request.getParamter("")的值。
pageContext对象, 取得页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
JSTL表达语言定义了一系列隐含对象。这些隐含对象供JSP获取和使用其scoped attributes
(1)pageContext:指JSP的pageContext对象
(2)pageScope:一个Map对象,包括page范围的属性和值
(3)requestScope:一个Map对象,包括request范围的属性和值
(4)sessionScope:一个Map对象,包括session范围的属性和值
(5)ApplicationScope:一个Map对象,包括application范围的属性和值
(6)param:一个Map对象,包括Web请求参数(request parameter)的字符串值,对应了ServletRequest.getParameter(String)
(7)paramValues:一个Map对象,包括Web请求参数(request parameter)的多个字符串值,对应了ServletRequest.getParameterValues(String)
(8)header:一个Map对象,包括请求的头信息值,对应了ServletRequest.getHeader(String)
(9)headerValues:一个Map对象,包括请求的头信息多个值,对应了ServletRequest.getHeaders(String)
(10)cookie:一个Map对象,包括对应名称的Cookie,对应了HttpServletRequest.getCookie(String)
(11)initParam:一个Map对象,包括一个Web程序的初始化参数值,对应了ServletRequest.getInitParameter(String)
七:
(1).读取Map集合中的值
<%
HashMap hm = new HashMap();
hm.put("username","root");
hm.put("password","admin");
session.setAttribute("hm", hm);
%>
username:${hm.username}
password:${hm.password}
(2).读取数组中的数据
<%
String[] names = {"aaa","bbb","ccc"};
session.setAttribute("names",names);
%>
${names[0]}
${names[1]}
${names[2]}
(3).读取集合中的数据
<%
List<String> names = new ArrayList<String>();
names.add("aaa1");
names.add("bbb1");
names.add("ccc1");
session.setAttribute("names",names);
%>
${names[0]}
${names[1]}
${names[2]}
分享到:
相关推荐
《EL手册》是关于EL(Expression Language)的详尽指南,它是Java EE应用程序开发中的一个重要组成部分,主要用于在JSP(JavaServer Pages)和其他Java web组件中进行数据绑定和表达式处理。EL语言的设计目的是简化...
- 数组和集合索引:`[]` 用于访问数组或集合的元素,如`${users[0]}`获取`users`集合的第一个元素。 - 运算符:支持加减乘除、比较和逻辑运算,如`${a + b}`、`${a > b}`。 - 方法调用: `${object.method()}` 可以...
2. EL运算符 - 点运算符(.):用于访问对象的属性或调用方法,如`${user.address.city}`。 - 方括号运算符([]):动态访问属性,如`${user['address']['city']}`。 - 空值安全导航运算符(?.):如果对象为null,则...
通常,这些库可能包括Apache Tomcat或Jetty等Web服务器提供的实现,或者像Spring框架这样的第三方库提供的EL支持。 EL表达式的基本语法如下: 1. `${expression}`:这是EL表达式的标准形式,`expression`可以是...
3. **EL运算符** - **算术运算符**:+、-、*、/(或div)、%(或mod) - **关系运算符**:==(或eq)、!=(或ne)、<(或lt)、>(或gt)、(或le)、>=(或ge) - **逻辑运算符**:&&(或and)、||(或or)、!...
第三章 JSP 2.0 简介 第四章 JSP 语法 第六章 Expression Language 第七章 JSTL 1.1 第六章 Expression Language 6-1 EL简介 6-2 EL 语法 6-3 EL 隐含对象 6-4 EL 算术运算符 6-5 EL 关系运算符 6-6 EL 逻辑运算符 6...
#### 三、EL的运算符 ##### 1\. 点运算符(.)与方括号运算符([]) EL提供了两种方式来导航数据:点运算符(.)和方括号运算符([])。这两种方式大部分情况下可以互换使用,例如: - `${sessionScope.user.sex}...
3. **自动类型转换**:EL支持自动类型转换,可以方便地处理不同类型的数据。 4. **隐式对象**:EL提供了许多隐式对象,可以直接访问如请求、会话、应用程序等作用域内的数据。 **JSP表达式语言的语法** EL表达式的...
3. **示例3**:展示了如何在`<input>`标签中使用EL表达式`${param["num"]}`来获取请求参数`num`的值,同时使用`pageContext`对象的`setAttribute`方法设置了一个变量`color`,并在`<body>`标签的`bgcolor`属性中通过...
EL允许使用自定义函数,这些函数通常来自JSTL库或其他第三方库。例如,JSTL的`fn:length()`函数可以获取集合或字符串的长度,如`${fn:length(list)}`。 总的来说,Java Expression Language是JSP开发中不可或缺的一...
#### 三、EL表达式的运算符 - **算术运算符**:`+`、`-`、`*`、`/`、`%` - **关系运算符**:`==`、`!=`、`、`>`、`、`>=` - **逻辑运算符**:`&&`、`||`、`!` - **其他运算符**:`empty`、`? :`、`()`等。 #### 四...
EL表达式通常以`${}`包裹,其内部可以包含各种运算符和方法调用。例如,要访问一个名为`user`的对象的`name`属性,我们可以写作`${user.name}`。如果要调用一个方法,如`getAge()`,则可以写为`${user.getAge()}`。 ...
- `JSTL.pdf`:这可能是JSTL的官方文档或第三方编写的教程,提供了深入的介绍和示例。 - `JSP2.0-EL.pdf`:这个文件很可能是关于JSP 2.0版本中EL表达式的详细指南,涵盖了EL的基本概念、语法以及如何在实际项目中...
对于JavaBean、List、Array、Map等数据结构,EL提供了`.`和`[]`两个运算符来访问数据。当属性名包含特殊字符时,如`.`或`?`,应使用`[]`,例如`${user["My-Name"]}`。如果需要动态获取属性,`[]`是唯一选择,如`${...
#### 三、EL隐含对象 ##### 1. **与范围相关的隐含对象** - **pageScope**: 表示当前页面的作用域。 - **requestScope**: 表示当前 HTTP 请求的作用域。 - **sessionScope**: 表示当前会话的作用域。 - **...
3. EL表达式处理各种类型的数据: - 输出Bean的普通属性:如`${person.name}`可以获取`Person`对象的`name`属性。 - 输出数组属性:如`${person.phone[0]}`可以获取`phone`数组的第一个元素。 - 输出List集合属性...
#### 三、EL表达式的应用场景 在JSP页面中,传统的获取数据方式通常是通过脚本元素(`<% %>`)来实现,如: ```jsp User user = (User) session.getAttribute("user"); String sex = user.getSex(); %> ``` 而使用...
表达式中的第一个命名变量可以是隐式对象,或者是在四个作用域(页面、请求、会话、应用)之一中的属性。点号操作符(`. `)用于访问Map或bean的属性,例如 `${foo.bar}`。如果`bar`是Map`foo`的键或bean`foo`的属性...