zoukankan      html  css  js  c++  java
  • 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
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    【rust】Rust 的构建系统和包管理工具Cargo认识并初步使用(2)
    【rust】rust安装,运行第一个Rust 程序 (1)
    linux 双网卡桥接,实现网卡流量镜像与转发
    【原创】使用golang访问windows telnet服务器
    使用centos 7安装conpot
    用Redis作Mysql数据库缓存
    python解析处理snmp回显----snmp
    snmp自定义OID与文件下载----服务器端配置
    golang map输出排序
    计算机组成原理---第1章 计算机系统概述
  • 原文地址:https://www.cnblogs.com/RioTian/p/15646789.html
Copyright © 2011-2022 走看看