• EL表达式(Expression Language)


    语法:

    ${Expression}

    来取代难以维护的Java脚本元素,或笨拙的jsp:useBean和jsp:getProperty;

    尤其重要的是,表达式语言支持下面的功能:

    1.精确地访问存储对象;

    要输出“作用域变量”(用setAttribute存储在PageCentext, HttpServletRequest,HttpSession或ServletCnntext中的对象)saleItem .我们使用${saleItem}。

    2.bean属性的简略记法;

    要输出作用域变量company的campanyName属性(即getCampanyName方法的结果),我们使用${company.companyName}。而要访问作用域变量company的president属性的firstName属性,我们使用${company.president.firstIVame}

    3对集合元素的简单访问;

    要访问数组、List或Map的元素,我们使用$ {variable[indexOrkey]}。如果索引或键所采用的形式可以满足合法java变量名的要求,则bean的点号记法可以和集合的括号记法互换。

    4对请求参数、cookie和其他请求数据的简单访问;

    如果要访问标准的请求数据,我们可以使用几个预定义隐式对象。

    5一组为数不多但有效的简单运算符;

    在EL表达式内操作对象时,可以使用任何算术、关系、逻辑或空值检查(empty-testing)运算符。

    6条件性输出;

    在进行有选择地输出时,我们可以不必借助于java脚本元素。取而代之,我们可以使用${test ? option1 : option2}来完成这一功能。


    7自动类型转换;
    表达式语言移除了大多数类型转换的需求,可以省略很多将字符串解析成数字的代码。


    8.空值取代错误消息。
    大多数情况下,没有相应的值或NullPointerExceptions异常都会导致空字符串的出现,而非抛出异常。

    示例:

    bean:

    package cn.donghaua.bean;

    public class Person {

    private String name;
    private int age;

    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;
    }

    }

    servlet:

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    Person p1 = new Person("zhangsan",25);
    Person p2 = new Person("zhaoliu",29);
    req.setAttribute("person1", p1);
    HttpSession session = req.getSession();
    session.setAttribute("person2", p2);
    RequestDispatcher disp = req.getRequestDispatcher("/WEB-INF/forward2.jsp");
    disp.forward(req, resp); }

    forward2.jsp

    <body>
    Resqust peson name:
    ${person1.name} <br>
    Resqust peson age:
    ${person1.age}<br>

    Session peson name:
    ${person2.name} <br>
    Session peson age:
    ${person2.age}<br>

    </body>

    访问输出结果:

    Resqust peson name: zhangsan
    Resqust peson age: 25
    Session peson name: zhaoliu
    Session peson age: 29

  • 相关阅读:
    洛谷P2516 [HAOI2010]最长公共子序列 动态规划 容斥原理
    [LeetCode]235. Lowest Common Ancestor of a Binary Search Tree
    [LeetCode]144. Binary Tree Preorder Traversal二叉树前序遍历
    [LeetCode]129. Sum Root to Leaf Numbers路径数字求和
    [leetcode]645. Set Mismatch
    [leetcode]110BalancedBinaryTree平衡二叉树
    [leetcode]199. Binary Tree Right Side View
    [LeetCode]116. Populating Next Right Pointers in Each Node
    [leetcode]720. Longest Word in Dictionary字典中最长的单词
    [LeetCode]690. Employee Importance员工重要信息
  • 原文地址:https://www.cnblogs.com/daxiong225/p/4778914.html
Copyright © 2020-2023  润新知