zoukankan      html  css  js  c++  java
  • 06.十分钟学会表达式语言EL

    一、 概念:MVC设计模式一个主要好处就是让jsp中的代码越来越来少,而且规定只能出现三种代码:接收属性,判断语句,迭代输出。但是,在开发中,jsp输出至少还是需要接受VO对象的,这时候为了避免导入VO包,只能通过表达式完成

     

    作用:通过表达式语言可以方便的访问标志位方法和属性输出,如果属性不存在,则自动将null设置为“”

     

    二、 表达式语言的内置对象:在表达式中用的内置对象

    1,  要求

     

    2,  内置对象

    a,内置对象引入:对于如下情况

     

    简单的表达式输出属性时,如果在不同属性范围内保存了同名属性,则查找优先级为page>request>session>application

    为了区别不同属性范围内的属性,可以使用表达式的内置对象从不同属性范围查找输出属性。但开发中肯定要避免出现同名属性

    b,之前通过pageContext可以取得requset,session,application对象,现在EL通过pageContext可以直接完成 jsp各内置对象方法的调用

     

    分别对应HttpServletRequest接口的getRemoteAddr()和HttpSession接口的getId()、isNew()方法。完成机制当然是反射

    c,通过param内置对象接受请求参数:如果未传参数,则用“”表示

     

    以上是接收一个参数,现在有一个名为”inst“的checkbox参数数组,可通过paramValues取得

     

    但开发中一般只传递单个参数

    三、              集合操作

    1,  要求:可以使用表达式语言进行集合输出

    集合回顾:

     

    2,  Collection集合的输出

     

    首先将集合保存在属性范围内,然后通过属性输出集合。在实际开发中,JSP只完成紫色部分功能,具体的集合设置由servlet完成。

     

    3,  Map集合的输出

     

    依然是首先把集合保存在内置对象的属性范围内,然后通过key值取得相应value

     

    四、 在MVC中应用表达式语言

    1,  要求

     

    2,  下面设计一个简化的MVC,理解如何通过表达式语言,在jsp中不导入包即可访问VO对象

    VO设计

    package com.chen.ying;
    
    public class Person {
    
        private int age;
    
        private String name;
    
        public int getAge() {
    
           return age;
    
        }
    
        public void setAge(int age) {
    
           this.age = age;
    
        }
    
        public String getName() {
    
           return name;
    
        }
    
        public void setName(String name) {
    
           this.name = name;
    
        }
    
    }

    Servlet设计

    public class ELServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{
    
           Person per=new Person();
    
           per.setAge(10);
    
           per.setName("小明");
    
           req.setAttribute("person", per);//将VO对象保存在属性范围内
    
           req.getRequestDispatcher("test01.jsp").forward(req, res);//交给jsp显示结果
    
    }
    
    }
    
     

    Jsp设计

     

    可以看到,在jsp页面中,不导  入Person包即可访问VO对象属性。表达式语言在MVC设计模式中的应用即在此,在

    Servlet中将VO对象保存在属性范围内,然后jsp通过表达式语言直接访问VO对象属性而不用导包。事实上,jsp只负

    责接收、判断、输出,一般只导入java.util.*包

    3,  使用mvc传递集合

    Servlet设计

     

       public class ELServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{
    
           List list=new ArrayList();
    
           Person per01=new Person();
    
           per01.setAge(10);
    
           per01.setName("小明");
    
           list.add(per01);
    
           Person per02=new Person();
    
           per02.setAge(13);
    
           per02.setName("小敏");
    
           list.add(per02);
    
           req.setAttribute("list", list);//将集合保存在属性范围内
    
           req.getRequestDispatcher("test01.jsp").forward(req, res);//交给jsp显示结果
    
        }
    
     

    Jsp设计:只要是集合,不管任何情况下都要通过Iterator输出

     

    思想:利用属性范围保存需要传递的数据或需要输出的对象,利用表达式语言和属性输出对象

    4,小结

     

    五、 表达式中的运算符

    1,  运算符

     

    主要是不用考虑转型的问题,程序自动为我们转换,同时要明确一点,jsp只是用作显示之用。各种运算操作尽量在servlet中完成

    2,  数学运算符

     

    3,  关系运算符

     

    4,  逻辑运算符

      

    5,  其他运算符

     

    6,  小结

     

  • 相关阅读:
    定时器的应用---查询方式---让8个LED灯,左右各4个来回亮
    单片机实现60s定时器
    单片机不同晶振怎么计算延迟时间?
    573锁存器驱动8段数码管
    51单片机英文引脚等中文对照
    Java【小考】
    viso2010从mysql中导出ER图
    驱动继电器实验
    驱动蜂鸣器的实验
    驱动数码管的实验
  • 原文地址:https://www.cnblogs.com/chenxd/p/7813395.html
Copyright © 2011-2022 走看看