• 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
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    border-radius
    快速搭建本地服务器
    sublime中侧边栏字体大小的设置
    关于git中git pull --rebase中的一些坑
    css中外边距合并
    php中$row=mysql_fetch_row()出错问题
    学习笔记2
    AMD Ryzen的性价比
    javascript变量提升
    手机网页里的模态对话框
  • 原文地址:https://www.cnblogs.com/RioTian/p/15646789.html
Copyright © 2020-2023  润新知