# EL表达式
EL能够极大的简化我们的开发
EL 全名为 Expression Language,它原本是 JSTL 1.0 为方便存取数据所自定义的语言。当时 EL只能在JSTL标签中使用。到了JSP2.0 之后,EL已经正式纳入成为标准规范之一。
## 语法
EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍 EL 主要的语法结构
~~~
${sessionScope.user.sex}
~~~
所有 EL 都是以 ${ 为起始、以} 为结尾的。上述 EL范例的意思是:从 Session 的范围中,取得用户的性别。假若依照之前的写法如下:
~~~
User user = (User)session.getAttribute("user");
String sex = user.getSex( );
~~~
两者相比较之下,可以发现 EL 的语法比传统 JSP更为方便、简洁。
### .与 [ ] 运算符
多数情况下使用.,特殊情况使用[ ]
~~~
<%@page import="com.neusoft.mvcapp.dao.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Person person = new Person();
person.setName("neusoft");
session.setAttribute("com.neusoft.person", person);
%>
name:${sessionScope["com.neusoft.person"].name }
</body>
</html>
~~~
### EL变量
EL 存取变量数据的方法很简单,例 如 :${username}。它的意思是取出某一范围中名称为 username的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,再依序到 Request、Session、Application 范围。假如途中找到 username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
![](https://box.kancloud.cn/4a0f35db60850542f386d6cf171df24c_492x178.png)
***
### 自动类型转换
el.jsp
~~~
<%@page import="com.neusoft.mvcapp.dao.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="el2.jsp?score=20">To EL2 Page</a>
</body>
</html>
~~~
el2.jsp
~~~
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${ param.score+30 }
<%= request.getParameter("score")+30 %>
</body>
</html>
~~~
### EL 隐含对象
①与范围有关的隐含对象
applicationScope
sessionScope
requestScope
pageScope
举一个例子,其他同理
el.jsp
~~~
<%@page import="com.neusoft.mvcapp.dao.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="el2.jsp?score=20">To EL2 Page</a>
<%
application.setAttribute("app", "appValue");
%>
</body>
</html>
~~~
el2.jsp
~~~
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${ app }<br>
${ applicationScope.app }
</body>
</html>
~~~
②与输入有关的隐含对象
param
~~~
${ param.score }
<%= request.getParameter("score") %>
~~~
paramValues
~~~
${ paramValues.score[1] }
<%= request.getParameterValues("score")[1] %>
~~~
EL本身没有遍历paramValues的能力,JSTL可以,之后讲
如果获取的参数还有无参的get方法,可以一直使用.找到需要的方法,例如:
~~~
${ requestScope.user.age }
~~~
③其他的隐含对象
cookie
~~~
${ cookie.JESESSIONID.name } -- ${ cookie.JESESSIONID.value }
~~~
initParam
~~~
${ initParam.initName }
~~~
**pageContext**
~~~
${ pageContext.request.contextPath }
~~~
- 第一章 配置和安装Tomcat
- 第二章 Servlet(一)
- 第三章 Servlet(二)
- 练习 一 . Servlet配置级获取初始化参数
- 第四章 JSP(一)
- 第五章 JSP(二)
- 第六章 MVC设计模式
- 第七章 Cookie
- 第八章 Session
- 练习 二 . 简易版购物车
- 第九章 EL表达式
- 第十章 JSTL
- 第十一章 过滤器
- 第十二章 监听器
- 第十三章 文件的上传与下载
- 复习总结
- 如何手动启动Tomcat
- 如何修改Tomcat端口号
- 如何在web.xml中配置Servlet
- Servlet生命周期
- load-on-startup参数
- Servlet映射路径
- POST和GET的区别
- JSP中9个隐式对象及功能
- 请求转发及请求重定向的区别
- JSP指令有哪些
- 简述对MVC设计模式的理解
- 简述Cookie机制
- 简述Session机制
- HttpSession的生命周期
- Cookie和Session有什么区别
- 简述创建过滤器步骤
- 过滤器经典案例--统一编码字符集
- getParameter与getAttribute的区别
- JSP页面中可以包含哪些元素
- web应用中,是如何跟踪用户的
- InteliJ创建web项目