EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!

语法: ${变量或表达式}

可以通过page指令来设置EL表示是否启用,false是不启用,true是启用,默认是true

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>

  

1)输出基本数据类型变量

1.1 从四个域获取

${name}

1.2 指定域获取

${pageScope.name}

域范围: pageScoep / requestScope / sessionScope / applicationScope

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
<%
//放入域对象中
pageContext.setAttribute("name", "gqxing");
%>
<%--下面代码等价于pageContext.findAttribute("name") --%>
${name}
<br>
<%--也可以从指定的域中获取数据 等价于 pageContext.getAttribute("name",pageContext.pageScope--%>
${pageScope.name}
</body>
</html>

运行结果

  2)输出对象的属性值

2、1)输出实体对象

首先创建实体对象:

package com.gqx.entity;

public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, int age) { this.name = name;
this.age = age;
}
public Student() {
} }

 然后去jsp页面设置域对象

 

<%@ page language="java" import="java.util.*,com.gqx.entity.Student" pageEncoding="UTF-8" isELIgnored="false"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
<%--用el去输出对象的属性 --%>
<% //保存对象
Student student = new Student("gqx",21);
pageContext.setAttribute("student", student);
%>
<%--使用域对象去获取数据 --%>
${student.name}——${student.age}
<%-- 等价于((Student)pageContext.findAttribute("student")).getName()--%>
<hr>
<%=((Student)pageContext.findAttribute("student")).getName() %>
</body>
</html>

 运行结果如图所示

这个时候我们要注意到一个细节问题,我们在student对象中设置了私有属性,我们却在jsp中访问到了,如下

private String name;
private int age;

这个时候我们想一想,这肯定是不可能的,所以,在这里查阅资料发现原来在el表达式中 ${student.name}的.name”就相当于getName()方法,这个时候我可以去验证一下,我可以在student类中去吧getName()方法改名字

发现结果正如我们想的一样。但并没有报出属性出错的问题,我们再来做一个实验,我们作如下更改,把name名字给改了,发现其还能正常的运行,这又完美的验证了我们的结论

public class Student {
private String name1;
private int age;
public String getName() {
return name1;
}
...........................

  

3)输出集合对象

List  和 Map

首先来看List的代码示例

 <   <% List<Student> list =new ArrayList<Student>();
list.add(new Student("gqx",21));
list.add(new Student("gqxing",22));
list.add(new Student("guoqingxing",22));
pageContext.setAttribute("list", list);
%>
<hr>
<%--使用EL获取List表达式 --%>
${list[0].name}-${list[0].age } <br>
${list[1].name}-${list[1].age } <br>
${list[2].name}-${list[2].age } <br>
<hr>
<%--等价于 --%>
<%=((Student)((List)pageContext.findAttribute("list")).get(0)).getName() %> <hr>

  将这段代码放入到jsp的body中去,运行结果如下

再来看看Map,同样,加入如下的代码

<% //MAP
Map<String,Student> map=new HashMap<String,Student>();
map.put("001", new Student("gqx",21));
map.put("002", new Student("gqxing",22));
map.put("003", new Student("guoqingxing",22));
//放入到域中去
pageContext.setAttribute("map", map);
%> <%--使用EL获取List表达式 --%>
${map['001'].name}-${map['001'].age } <br>
${map['002'].name}-${map['002'].age } <br>
${map['003'].name}-${map['003'].age } <br>

  运行结果如下:

4)、EL表达式计算

利用el表达式完成以下几种表达式的计算

10+5=${10+5} <br>
10*5=${10*5} <br>
10/5=${10/5} <br>
<hr>
<%-- 比较运算 --%>
10>5:${10>5}<br>
10<5:${10<5}<br>
2=2:${2==2}<br>
<hr>
<%-- 逻辑运算符 --%>
true && false :${true && false}<br>
true || false :${true || false}<br>
!true:${!true }<br>
<hr>
<%--判断是否为空 --%>
<%
String name= "gqxing";
String value1=null;
String value2="";
//放进域对象中
pageContext.setAttribute("name", name);
pageContext.setAttribute("value1", value1);
pageContext.setAttribute("value2", value2);
%>
${name==null}<br>
${value1==null}<br>
${value2==""}<br>
<%--一下两种方法去判断空字符串 --%>
${value1==null || value1==""}<br>
${empty name}<br>

  结果如下:

 

Jsp中的EL表达式的更多相关文章

  1. jsp中的el表达式没有解析

    今天发现jsp中的el表达式没有解析,把解决的过程记录一下 在web.xml的web-app节点的版本改成2.4以上

  2. SSH 框架controller向jsp传递List jsp中使用el表达式获取

    mvc可以使用ModelAndViev传递数据选择跳转的视图 controller中的代码, 把一个模拟的表单studentListSimulate传给ModelAndView @RequestMap ...

  3. JSP中的EL 表达式

    JSP中的EL 表达式 什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式主要是代替 jsp ...

  4. JavaWeb -- Jsp中的 EL表达式

    lEL 全名为Expression Language.EL主要作用: l获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web ...

  5. JSP中使用EL表达式

    EL表达式 :EL 全名为Expression Language,就是为了替代<%= %>脚本表达式. EL主要作用: 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,以从各种 ...

  6. 快速学会在JSP中使用EL表达式

    在没有学会EL表达式之前,我们想在JSP文件中获取servlet或者其他JSP页面传来的值,通常都是在JSP页面中编写java代码来实现.而在jsp页面编写Java 代码,这种做法时不规范的,将会产生 ...

  7. Java基础82 jsp中的EL表达式(网页知识)

    1.EL表达式的作用 EL表达式的作用:向浏览器输出域对象中的变量值或者表达式计算结果.语法:${变量或者表达式} 注: Jsp的核心语法:jsp的表达式<%= %>和jsp的脚本< ...

  8. JSP中的EL表达式详细介绍

    一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素.它们通常用于对象操作以及执行那些 ...

  9. JSP中,EL表达式向session中取出一个attribute和JSP脚本访问session取出一个attribute,写法有何不同?(转自百度知道)

    EL表达式使用起来会更简洁,假如session中有一个属性A(attrA),那么EL和jsp脚本取值的方式如下: EL表达式:${ sessionScope.attrA } JSP脚本:<%=s ...

随机推荐

  1. Python 修饰器

    描述:对于函数foo,使用修饰器修饰,在执行foo函数的同时统计执行时间.这样其他函数都可以使用此修饰器得到运行时间. (有返回值和没有返回值的函数要用不同的修饰器似乎) (对于有返回值的函数,不确定 ...

  2. S3C2440的LCD虚拟显示测试

    一.概述   S3C2440的LCD控制器支持虚拟显示,说的容易理解一点就是,可以显示比实际显示器大的图像.可以这样想象,有一个大的图片,但是显示器(显示串口)比较小,但是我们可以相对于大图片(即大图 ...

  3. ajax跨域调用

    http://redsky008.iteye.com/blog/1754328 http://www.cnblogs.com/mahatmasmile/archive/2013/03/29/29895 ...

  4. c/c++多级指针

    c/c++多级指针 如图: # include <stdio.h> int main(void) { ; int * p = &i; //p只能存放int类型变量的地址 int * ...

  5. UOJ179 线性规划

    Description 这是一道模板题. 本题中你需要求解一个标准型线性规划: 有\(n\)个实数变量\(x_1,x_2,\cdots,x_n\)和\(m\)条约束,其中第\(i\)条约束形如\(\s ...

  6. BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  7. 破解之关键CALL与关键跳查找方法

    找关键CALL和关键跳 方法一: 输入假码注册程序,记录下错误提示信息. OD载入程序--> 右键-->查找-->所有参考文本字串-->(右键-->查找文本,注:不要区分 ...

  8. Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录

    http://my.oschina.net/ydsakyclguozi/blog/413822

  9. C盘瘦身,可以让你的电脑C盘恢复到刚安装时的大小

    @echo offecho 正在清理系统垃圾文件,请稍等......del /f /s /q %systemdrive%\*.tmpdel /f /s /q %systemdrive%\*._mpde ...

  10. 【BZOJ 2154】Crash的数字表格 (莫比乌斯+分块)

    2154: Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能 ...