Java-EL表达式

Java-EL表达式

      • 一、EL表达式基本介绍
      • 二、EL表达式使用
        • 2.1.进行运算
        • 2.2.获取值

一、EL表达式基本介绍

EL:Expression Language(表达式语言),用于替换JSP页面中Java代码,简化书写。
语法格式:${表达式} (表达式可以是字符串,数字,字母等不带有任何运算性质的内容,也可以是带有运算性质的表达式,如果是字符串、数字之类的,会在页面直接输出内容,如果是带有运算性质的表达式,输出的内容为表达式的结果)。
注意事项
 JSP默认支持EL表达式,如果想要忽略El表达式,有两种方式:
  1.在JSP页面的page指令行中,添加书写isELIgnored=“true”,会忽略当前页面所有EL表达式。
  2.在EL表达式前加"\",即\${表达式},会忽略当前这一条语句。

<%@ page contentType="text/html;charset=UTF-8"  isELIgnored="false" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>

${2>1}
\${3>4}



body>
html>

二、EL表达式使用

2.1.进行运算

运算符:
 *算术运算符:+、-、*、/(div)、%(mod)
 *比较运算符:>、<、 ==、 >=、 <=
 *逻辑运算符:&&(and) 、||(or) 、!(not)
 *空运算符:empty
 ${empty 对象名}用于判断数组、集合、字符串对象的长度是否为0或者是否为null。
 ${not empty 对象名}用于判断数组、集合、字符串对象的长度是否不为0或者不为null。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL2title>
head>
<body>

${1+2}
${1-2}
${1*2}
${1/2}
${1 div 2}
${1%2}
${1 mod 2}



${1>2}
${1<2}
${1==2}
${1!=2}
${1>=2}
${1<=2}


${1>2&&3>2}
${1>2||3>2}
${!(1>2&&3>2)}


<%
    ArrayList al = new ArrayList();
    al.add(1);
    al.add(2);
    
    request.setAttribute("al",al);
%>

${empty al}
body>
html>

2.2.获取值

EL对象只能从域对象获取值。
域对象:
 pageScope:对应pageContext
 requestScope:对应于request
 sessionScope:对应于session
 applicationScope:对应于application
1.获取已定义好的数据类型数据
 语法格式:
 *${域名称.键名}:从对应的域中获取键名所对应的值
 *${键名}:如果有多个域有相同的键,便从最小的域开始找,与语句定义的为止无关,一旦找到,便不再向上寻找。
 域范围:pageScope

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL3title>
head>
<body>

<%
  //为了进行展示,写一些java代码

    application.setAttribute("name","hehe");
    session.setAttribute("name","jim");
    request.setAttribute("name","jack");
    pageContext.setAttribute("name","tom");
%>

<%--通过${域名称.键名}进行获取--%>
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}

<%--通过${键名}进行获取--%>
${name}


body>
html>

2.获取对象的值
 一般使用的类都为JavaBean,但可以直接写键名.属性名,因为默认调用的是getXxx()方法,因此想要调用方法,直接写键名.xxx即可进行调用。
语法格式:
 ${域名称.键名.属性名}
 ${键名.属性名}

import java.text.SimpleDateFormat;
import java.util.Date;

public class User {
    private String name;
    private Date date;

    public User(String name,Date date){
        this.name = name;
        this.date = date;
    }
    public User(){

    }
    /*
    逻辑视图
     */
    public String getSdf(){
        if(date!=null){
        //1.获取日期对象
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.进行格式化
        return sdf1.format(date);
    }else{
            return "";
        }}
    public void setName(String name) {
        this.name = name;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public Date getDate() {
        return date;
    }
}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取的值title>
head>
<body>

<%
    User user = new User();
    user.setName("hehe");
    user.setDate(new Date());
    request.setAttribute("user",user);


    ArrayList<Integer> al = new ArrayList<>();
    al.add(123);
    al.add(321);
    request.setAttribute("al",al);


    Map map = new HashMap();
    map.put("name","tom");
    map.put("age",18);
    map.put("user",user);
    request.setAttribute("map",map);
%>

${requestScope.user}   <%--  打印地址值 JSP.User@3bcb159e --%>
<%--获取属性值

属性名可以直接写,因为默认调用的是getXxx方法,比较方便.
即在调用属性时,可以直接将JavaBean中的getXxx方法名写成xxx,就可以直接调用
--%>
${requestScope.user.name}  <%--hehe--%>
${user.name}
${requestScope.user.date}   <%-- Wed Mar 17 18:24:11 CST 2021--%>
<%--${user.date}--%>
<%--将日期进行格式化输出,在User中定义getSdf()方法--%>
${user.sdf}  <%-- 2021-03-17 18:46:31--%>


body>
html>

3.获取集合与数组的值
List集合与数组
格式:
 ${域名.键名[索引值]}
 ${键名[索引值]}

<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取的值title>
head>
<body>

<%


    ArrayList<Integer> al = new ArrayList<>();
    al.add(123);
    al.add(321);
    request.setAttribute("al",al);

%>


<%--获取list集合数据--%>
${requestScope.al}  <%--[123, 321]--%>
${al}  <%--[123, 321]--%>
${al[0]} <%--123--%>
${al[1]} <%--321--%>
${al[2]} <br><%--不打印异常,不显示值--%>

<%--获取数组数据--%>
${requestScope.array[1]}
${array[2]}
body>
html>

Map集合
语法格式:
 ${域名.键名.key}
 ${域名.键名[“key”]}(双引号必须带上)
 ${键名.key}
 ${键名[“key”]}(双引号必须带上)

<%@ page import="JSP.User" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: if shining
  Date: 2021/3/17
  Time: 18:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取的值title>
head>
<body>

<%
  
    Map map = new HashMap();
    map.put("name","tom");
    map.put("age",18);
    map.put("user",user);
    request.setAttribute("map",map);
%>



<%--获取map集合数据--%>
${requestScope.map}  <%--{name=tom, user=JSP.User@6fa1558d, age=18} --%>
${map.name}  <%--tom --%>
${map["name"]}  <%--tom --%>
${map.user}  <%--JSP.User@6fa1558d --%>
body>
html>

你可能感兴趣的:(Java,java,jsp)