Apprenez facilement les expressions EL

 

1. Le concept et les principales fonctions des expressions EL

(1) Concept

En une phrase: EL (Expression Language) est un mécanisme pour simplifier l'acquisition et la traversée des données de page jsp.

En d'autres termes, EL peut simplifier l'écriture d'expressions dans jsp, alors qu'est-ce qu'une expression jsp? C'est une phrase au format "<% = xxx%>" dans la page jsp.

Quelle est la fonction des expressions jsp? Il s'agit d'obtenir et de sortir des données. L'expression EL est une simplification de l'expression jsp, donc que pouvez-vous faire avec l'expression EL est d'accéder facilement aux données et de les imprimer.

(2) Fonctions principales

  • Pour accéder à la page de données Contexte, magasin d'objets de demande, de session et d'application.

  • Obtenir la valeur du paramètre de demande;
  • Accédez aux propriétés de l'objet Bean;
  • Accéder aux données de la collection;
  • Produisez des résultats de calcul simples.

Le prérequis de l'expression EL: obtenir des données à partir de plusieurs objets intégrés jsp de pageContext , request , session  et  application.

pageContext: représente valide dans la page courante;

request: Représente valide dans la demande actuelle;

session: Représente valide dans la session en cours;

application: Représente valide dans le serveur actuel.

Champ d'action: pageContext <request <session <application

Étant donné que le cœur des expressions EL consiste à récupérer des données à partir de ces objets intégrés , nous devons d'abord placer les données dans les objets intégrés. Comment les insérer?

Définir les attributs: <% objet intégré.setAttribute ("clé", "valeur");%>

Ensuite, expliquez les principales fonctions des expressions EL une par une.

2. Les expressions EL accèdent aux données des objets intégrés

(1) manière originale de JSP

如 : <% = request.getAttribute ("varName")%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现从内置对象中获取数据并打印</title>
</head>
<body>
<%
    pageContext.setAttribute("name1", "pageContext对象中的属性值:zhangfei");
    request.setAttribute("name2", "request对象中的属性值:guanyu");
    session.setAttribute("name3", "session对象中的属性值:liubei");
    application.setAttribute("name4", "session对象中的属性值:zhaoyun");
%>

<%-- 使用JSP中原始方式获取数据和打印--%>
<%= "name1的数值为:" + pageContext.getAttribute("name1") %><br/>   <%-- zhangfei --%>
<%= "name2的数值为:" + request.getAttribute("name2") %><br/>       <%-- guanyu --%>
<%= "name3的数值为:" + session.getAttribute("name3") %><br/>       <%-- liubei --%>
<%= "name4的数值为:" + application.getAttribute("name4") %><br/>   <%-- zhaoyun --%>

</body>
</html>

résultat courant

 (2) Mode d'expression EL

Tels que: $ {varName}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现从内置对象中获取数据并打印</title>
</head>
<body>
<%
    pageContext.setAttribute("name1", "pageContext对象中的属性值:zhangfei");
    request.setAttribute("name2", "request对象中的属性值:guanyu");
    session.setAttribute("name3", "session对象中的属性值:liubei");
    application.setAttribute("name4", "session对象中的属性值:zhaoyun");
%>

<%-- 使用EL表达式实现获取数据和打印 --%>
<h1>name1的数值为:${name1}</h1><br/>
name2的数值为:${name2}<br/>
name3的数值为:${name3}<br/>
name4的数值为:${name4}<br/>

</body>
</html>

Effet d'exécution

 Comment est-ce, n'est-ce pas simple? Utilisez simplement le format du signe dollar $ {nom de la propriété}.

(3) Lorsque les noms d'attribut des objets intégrés sont les mêmes, la priorité de la valeur EL

Lorsque plusieurs objets intégrés ont le même nom d'attribut, quelle valeur prendra l'expression EL? Regardez l'exemple:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现从内置对象中获取数据并打印</title>
</head>
<body>
<%
    pageContext.setAttribute("name", "pageContext对象中的属性值:zhangfei");
    request.setAttribute("name", "request对象中的属性值:guanyu");
    session.setAttribute("name", "session对象中的属性值:liubei");
    application.setAttribute("name", "session对象中的属性值:zhaoyun");
%>

<h1>name的数值为:${name}</h1><br/>
</body>
</html>

Effet d'exécution

       Comme vous pouvez le voir, la valeur obtenue ici est la valeur de pageContext, donc pageContext a la priorité la plus élevée.

Plus le champ d'action est restreint, plus la priorité est grande. L' ordre de priorité est donc: pageContext> request> session> application

3. L'expression EL accède aux données du paramètre de requête

  Créez la page de formulaire, param.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现一个简单页面负责向JSP页面传递参数</title>
</head>
<body>
<form action="el_param.jsp" method="post">
    姓名:<input type="text" name="name"/><br/>
    爱好:<input type="checkbox" name="hobby" value="唱歌"/>唱歌<br/>
         <input type="checkbox" name="hobby" value="跳舞"/>跳舞<br/>
         <input type="checkbox" name="hobby" value="学习"/>学习<br/>
    <input type="submit" value="提交"/><br/>
</form>
</body>
</html>

(1) manière originale de JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现请求参数数值的获取</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<%-- 使用JSP语法中的原始方式获取请求参数值 --%>
<%= "姓名是:" + request.getParameter("name") %><br/>
<%= "爱好是:" + Arrays.toString(request.getParameterValues("hobby")) %><br/>

</body>
</html>

(2) Mode d'expression EL

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现请求参数数值的获取</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<%-- 使用EL表达式中的方式获取请求参数值 --%>
姓名是:${param.name}<br/>
爱好是:${paramValues.hobby[0]}<br/>

</body>
</html>

Ici, param et paramValues ​​peuvent être considérés comme des objets intégrés d'expressions EL.

4. L'expression EL accède à la valeur d'attribut de l'objet Bean

Créer la classe Bean: Person.java

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

(1) manière originale de JSP

<%@ page import="com.test.demo01.Person" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现Bean对象中属性的获取和打印</title>
</head>
<body>
<%-- 使用JSP语法规则中的原始方式实现对象的创建和设置以及输出 --%>
<%
    Person person = new Person();
    person.setName("zhangfei");
    person.setAge(30);
    pageContext.setAttribute("person", person);
%>

<%= "获取到的姓名为:" + person.getName() %><br/>
<%= "获取到的年龄为:" + person.getAge()  %><br/>

</body>
</html>

(2) Mode d'expression EL

  a, manière: $ {nom d'objet . nom d' attribut } , par exemple: $ {} le nom d'utilisateur

 

<%@ page import="com.test.demo01.Person" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现Bean对象中属性的获取和打印</title>
</head>
<body>
<%-- 使用JSP语法规则中的原始方式实现对象的创建和设置以及输出 --%>
<%
    Person person = new Person();
    person.setName("zhangfei");
    person.setAge(30);
    pageContext.setAttribute("person", person);
%>

<%-- 使用EL表达式实现属性的获取和打印,方式1 --%>
获取到的姓名是:${person.name}<br/>
获取到的年龄是:${person.age}<br/>

</body>
</html>

b. Méthode 2: $ { object name [" attribute name "]} , par exemple: $ {user ["name"]}

c. La différence entre les deux méthodes

  • Lorsque le nom d'attribut pour accéder à la table contient un certain nombre de caractères spéciaux, tels que: . Ou , comme les chiffres de référence ne sont pas des lettres ou des chiffres, pour être sûr d'utiliser le [] et
    Non . Le chemin
  • La valeur peut être obtenue dynamiquement en utilisant la méthode de [] , la méthode spécifique est la suivante:
<% request.setAttribute(“prop”,“age”); %><!-- 相当于表达式中写一个变量 --> ${ user[prop] }

5. Les expressions EL accèdent aux données de la collection

<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现集合中数据内容的获取和打印</title>
</head>
<body>
<%
    // 准备一个List集合并添加数据内容
    List<String> list = new LinkedList<>();
    list.add("two");
    list.add("one");
    list.add("three");
    // 将整个集合放入指定的内置对象中
    pageContext.setAttribute("list", list);

    // 准备一个Map集合并添加数据
    Map<String, Integer> map = new HashMap<>();
    map.put("one", 1);
    map.put("two", 2);
    map.put("th.ree", 3);
    // 将整个集合放入指定的内置对象中
    pageContext.setAttribute("map", map);
%>

<%-- 使用EL表达式实现集合中数据内容的获取 --%>
集合中下标为0的元素是:${list[0]}<br/>    <%-- two --%>
集合中下标为1的元素是:${list[1]}<br/>    <%-- one --%>
集合中下标为2的元素是:${list[2]}<br/>    <%-- three --%>
<hr/>
<%-- 使用EL表达式实现Map集合中数据内容的获取 不支持下标 --%>
整个Map集合中的元素有:${map}<br/>
获取带有特殊字符key对应的数值为:${map["th.ree"]}<br/>   <%-- 3 --%>
</body>
</html>

6. Objets intégrés couramment utilisés dans les expressions EL

7. Utilisation d'opérations communes dans les expressions EL

<%@ page import="java.util.List" %>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.Arrays" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现常用运算符的使用</title>
</head>
<body>
<%
    // 通过内置对象设置属性的方式来准备操作数
    request.setAttribute("ia", 5);
    request.setAttribute("ib", 2);
    request.setAttribute("b1", true);
    request.setAttribute("b2", false);
%>

<%-- 实现上述所有操作数的获取和打印 --%>
ia的数值为:${ia}<br/>      <%-- 5 --%>
ib的数值为:${ib}<br/>      <%-- 2 --%>
b1的数值为:${b1}<br/>      <%-- true --%>
b2的数值为:${b2}<br/>      <%-- false --%>
<hr/>

<%-- 实现算术运算符的使用 --%>
ia+ib的结果为:${ia+ib}<br/>    <%-- 7 --%>
ia-ib的结果为:${ia-ib}<br/>    <%-- 3 --%>
ia*ib的结果为:${ia*ib}<br/>    <%-- 10 --%>
ia/ib的结果为:${ia/ib}<br/>    <%-- 2.5 --%>
ia%ib的结果为:${ia%ib}<br/>    <%-- 1 --%>
<hr/>

<%-- 实现关系运算符的使用 --%>
ia大于ib的结果为:${ia > ib}<br/>  <%-- true --%>
ia大于等于ib的结果为:${ia >= ib}<br/>  <%-- true --%>
ia小于ib的结果为:${ia < ib}<br/>  <%-- false --%>
ia小于等于ib的结果为:${ia <= ib}<br/>  <%-- false --%>
ia等于ib的结果为:${ia == ib}<br/>  <%-- false --%>
ia不等于ib的结果为:${ia != ib}<br/>  <%-- true --%>
<hr/>

<%-- 实现逻辑运算符的使用 --%>
b1并且b2的结果为:${b1 && b2}<br/>  <%-- false --%>
b1或者b2的结果为:${b1 || b2}<br/>  <%-- true --%>
b1取反的结果为:${ !b1 }<br/>  <%-- false --%>
b2取反的结果为:${ !b2 }<br/>  <%-- true --%>
<hr/>

<%
    String str1 = null;
    String str2 = "";
    String str3 = "hello";

    List<Integer> list1 = new LinkedList<>();
    List<Integer> list2 = Arrays.asList(11, 22, 33, 44, 55);

    request.setAttribute("str1", str1);
    request.setAttribute("str2", str2);
    request.setAttribute("str3", str3);
    request.setAttribute("list1", list1);
    request.setAttribute("list2", list2);

%>
<%-- 实现条件运算符和验证运算符的使用 --%>
ia和ib之间的最大值为:${ia>ib? ia: ib}<br/>
判断是否为空的结果是:${empty str1}<br/>    <%-- true --%>
判断是否为空的结果是:${empty str2}<br/>    <%-- true --%>
判断是否为空的结果是:${empty str3}<br/>    <%-- false --%>
判断是否为空的结果是:${empty list1}<br/>    <%-- true --%>
判断是否为空的结果是:${empty list2}<br/>    <%-- false --%>

</body>
</html>

 

 

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/u012660464/article/details/109017417
conseillé
Classement