EL表达式

1.概念

 Expression Language 表达式语言

2.作用:

 1.替换和简化jsp页面中java代码的编写

 2.向浏览器输出域对象中的变量值或表达式计算的结果

3.语法:

 $(变量或者表达式)

4.注意项:

 jsp默认支持el表达式。如果要忽略el表达式

  设置jsp中的page指令:isELIgnored=“true”忽略当前jsp页面中所有的el表达式

5.使用

 1)运算符:

  1.算术运算符:+ -  *  /(div)  %(mod)

  2.比较运算符:>  <  >=  <=  ==  !=

  3.逻辑运算符:&&(and)  ||or  !(not)

  4.空运算符: empty

   功能:用于判断字符串、集合、数组对象是否为null或者长度是否为零

   $(empty list):判断字符串、集合、数组对象是否为null或者长度为0

   $(not empty str):表示判断字符串、集合、数组对象是否不为null 并且 长度 > 0

<body>

${ 3 + 5}
<%-- 输出 8 --%>
<hr>
${ 5 > 7}
<%-- 输出 false --%>
<hr>
${ true && false}
<%-- 输出 false --%>
<hr>
<%
    String str = null;//str = ""
%>
${empty str}
<%-- 输出 true --%>
<hr>
</body>

 2)获取值

  1.el表达式只能从域对象中获取值

  2.语法:

   1.$(域名.键名):从指定域中获取指定键的值

    域名称:

    1)pageScope    -->pageContext

    2)requestScope     -->request

    3)sessionScope     -->session

    4)applicationScope  -->application(ServletContext)

     例如:在request域中存储了name=张三

     获取:$(requestScope.name)

    2.${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

    等价于pageContext.findAttribute("键名")方法

   3.获取对象、List集合、Map集合的值

    1)对象:${域名称.键名.属性名}

     本质是会去调用对象的getter方法

    2)List集合:${域名称.键名[索引]}

    3)Map集合:

     $ {域名称.键名.key名称}    (注意:此方式键名不能以数字为开头)

     $ {域名称.键名["key名称"]}   (注意:此方式单引号或双引号都可以)

 3)动态获取当前web目录

  ${pageContext.request.contextPath}

代码实现

 定义一个User类

public class User {

    private Integer uid;
    private String username;
    private String password;

    public User() {

    }

    public User(Integer uid, String username, String password) {
        this.uid = uid;
        this.username = username;
        this.password = password;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

 定义UserController类继承HttpServlet类

import com.qf.jopo.User;

import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.HashMap;

@WebServlet("/usercontroller")
public class UserController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //web层 --> service层 --> dao层
        //模拟数据库查询
        //查询单个
        User user = new User(1001, "张三", "123");

        //查询所有
        //List集合
        ArrayList<User> list = new ArrayList<>();
        list.add(new User(2001,"jack","123"));
        list.add(new User(2002,"rose","456"));
        list.add(new User(2003,"tom","789"));

        //Map集合
        HashMap<String, User> map = new HashMap<>();
        map.put("3001",new User(3001,"李四","123"));
        map.put("3002",new User(3002,"王五","123"));
        map.put("3003",new User(3003,"赵六","123"));

        //保存数据
        req.setAttribute("user", user);
        req.setAttribute("list", list);
        req.setAttribute("map", map);

        //转发
        req.getRequestDispatcher("/11.page.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

 定义转发目标jsp

<%--
  Created by IntelliJ IDEA.
  User: yangl
  Date: 2021/5/14
  Time: 9:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%-- isELIgnored = "false" 表示此jsp中可以使用el --%>
<%-- 导入User包,不然无法调用User中的get方法 --%>
<%@ page import="com.qf.jopo.User" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%
    String str1 = "pageContext.value";
    String str2 = "request.value";
    pageContext.setAttribute("msg",str1);
    request.setAttribute("msg",str2);
%>
<%--相当于findAttribute方法--%>
<%--${msg}--%>
<%--指定域取值--%>
<%--${requestScope.msg}--%>

<%-- 相当于user.getUid() 等 --%> ${user.uid} -- ${user.username} -- ${user.password}
<%-- 相当于list[0].getUid() 等 --%> ${list[0].uid} -- ${list[0].username} --${list[0].password}
<br> ${list[1].uid} -- ${list[1].username} --${list[1].password} <br> ${list[2].uid} -- ${list[2].username} --${list[2].password} <br> <hr>
<%-- 相当于map['3001'].getUid() 等 --%> ${map['3001'].uid} -- ${map['3001'].username} --${map['3001'].password}
<br> ${map['3002'].uid} -- ${map['3002'].username} --${map['3002'].password} <br> ${map['3003'].uid} -- ${map['3003'].username} --${map['3003'].password} <br> </body> </html>
posted @ 2021-05-16 23:17  青草的骨头  阅读(84)  评论(3)    收藏  举报