概述
EL
(全称
Expression Language
)表达式语言,用于简化
JSP
页面内的
Java
代码。
EL
表达式的主要作用是
获取数据
。其实就是从域对象中获取数据,然后将数据展示在页面上。
而
EL
表达式的语法也比较简单,
${expression}
。例如:
${brands}
就是获取域中存储的
key
为
brands
的数据。
代码演示
定义
servlet
,在
servlet
中封装一些数据并存储到
request
域对象中并转发到
el
-
demo.jsp
页面。
@WebServlet("/demo1")
public class ServletDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//1. 准备数据
List<Brand> brands = new ArrayList<Brand>();
brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
//2. 存储到request域中
request.setAttribute("brands",brands);
//3. 转发到 el-demo.jsp
request.getRequestDispatcher("/el-demo.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
this.doGet(request, response);
}
}
注意:
此处需要用转发,因为转发才可以使用
request
对象作为域对象进行数据共享
在
el
-
demo.jsp
中通过
EL
表达式 获取数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${brands}
</body>
</html>
在浏览器的地址栏输入
http://localhost:8080/jsp
-
demo/demo1
,页面效果如下:
![](https://img-blog.csdnimg.cn/cd37727b8cdb409a97853905b76d8922.png)
域对象
JavaWeb
中有四大域对象,分别是:
page
:当前页面有效
request
:当前请求有效
session
:当前会话有效
application
:当前应用有效
el
表达式获取数据,会依次从这
4
个域中寻找,直到找到为止。而这四个域对象的作用范围如下图所示
![](https://img-blog.csdnimg.cn/ca1aa319c78f471f915ca83ed966e4e8.png)
例如:
${brands}
,
el
表达式获取数据,会先从
page
域对象中获取数据,如果没有再到
requet
域对象中获取数据,如果再 没有再到 session
域对象中获取,如果还没有才会到
application
中获取数据。