JSP 学习笔记 | 三、EL 表达式简述

前文:JSP 学习笔记 | 二、JSP 脚本 & 案例实现 & 缺点分析

前文:JSP 学习笔记 | 一、JSP 原理理解

概述

EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。EL 表达式既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。

EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。

而 EL 表达式的语法也比较简单,==\({expression}== 。例如:\){brands} 就是获取域中存储的 key 为 brands 的数据。

更多细节推荐在 Runoob(Click Here) 中查阅

代码演示

  • 定义servlet,在 servlet 中封装一些数据并存储到 request 域对象中并转发到 el-demo.jsp 页面。
@WebServlet("/Demo1")
public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //准备数据
        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.doPost(request, response);
    }
}

注意: 此处需要用转发,因为转发才可以使用 request 对象作为域对象进行数据共享

  • el-demo.jsp 中通过 EL表达式 获取数据

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>el-demo.jsp</title>
    </head>
    <body>
    ${brands}
    </body>
    </html>
    
  • 在浏览器的地址栏输入 http://localhost:8080/jsp-demo/Demo1 ,页面效果如下:

域对象

JavaWeb中有四大域对象,分别是:

  • page:当前页面有效
  • request:当前请求有效
  • session:当前会话有效
  • application:当前应用有效

EL 表达式获取数据,会依次从这4个域中寻找,直到找到为止。而这四个域对象的作用范围如下图所示

image-20210818152857407

例如: ${brands},el 表达式获取数据,会先从page域对象中获取数据,如果没有再到 request 域对象中获取数据,如果再没有再到 session 域对象中获取,如果还没有才会到 application 中获取数据。


The desire of his soul is the prophecy of his fate
你灵魂的欲望,是你命运的先知。

原文地址:https://www.cnblogs.com/RioTian/p/15646789.html