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】aassert 断言

    语法 : assert 3>4 结果Traceback (most recent call last): File "<pyshell#0>", line 1, ...

  2. eval 如何定义函数

    eval(compile('''def fun(): print 'bbb' ''', '<string>', 'exec')) fun()

  3. Github readme语法-- markdown

    README 该文件用来测试和展示书写README的各种markdown语法.GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Mar ...

  4. No Hibernate Session bound to thread, and configuration does not allow creat

    No Hibernate Session bound to thread, and configuration does not allow creat 今天遇到这么一个错误,在网上差了很多都没有能解 ...

  5. bzoj 3597: [Scoi2014]方伯伯运椰子 0/1分数规划

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 144  Solved: 78[Submit][Status ...

  6. the apply of backbone

    http://www.developer.com/print/lang/jscript/creating-a-javascript-driven-online-notebook-with-backbo ...

  7. 测来测去,感觉REQUESTS最实在

    URLLIB,URLLIB2,PYCURL,HTTPIE,,,在测试PUT及认证时,还是REQUESTS胜出.. 测试过程及样例代码如下: import urllib import urllib2 i ...

  8. SPRING IN ACTION 第4版笔记-第一章-003-AOP介绍

    一.目标 要在BraveKnight调用embarkOnQuest()前后各做一些处理(调用Minstrel的方法) 二. 1.minstrel.xml <?xml version=" ...

  9. 忽然想到,为什么以前iOS的工资高

    听说做iOS的在上海工资也可以  前几年还行,现在也不太行了除非你水平很高 现在移动应用已经100多万了,基本饱和了以前是新的商业模式要抢时间,会的人也少

  10. Adobe Flash Builder 4.7下载地址及破解补丁(32位&64位)

    Adobe FlashBuilder 4.7是开发flex的利器,能显著提高flex的开发效率.最新版的是4.7,去官网上下载时每次都要登录才能下载,特麻烦,这次下载时就把相关的下载地址给记录了下来, ...