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, 小结

06.十分钟学会表达式语言EL的更多相关文章
- 表达式语言EL
表达式语言EL 表达式语言 EL(Expression Language,表达式语言)主要是用在JSP页面中,用来辅助我们产生无脚本的JSP页面,此处的脚本指的是JSP中的Java代码. EL的语法是 ...
- PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony
这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...
- 表达式语言EL简单学习
Jsp2.0最重要的特性就是表达式语言EL.jsp用户可以用它来访问应用程序数据. EL表达式以${开头并以}结束. ${expresion} ${x+y} 它也常用来连接两个表达式,取值将从 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- Python十分钟学会
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 十分钟学会 tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理.在 macOS 下,使用 iTerm2 能应付绝大多数窗口管理的需求. 如上图所示,iTerm2 能新建多个标签页(快捷键 ...
- Java EE之表达式语言EL(上)
1.了解表达式语言 表达式语言(EL)用于在不使用脚本.声明或者表达式的情况下,在JSP页面中渲染数据. EL曾是JSTL 1.0规范(与JSP 1.2)中的一部分,并且只可以用作JSTL标签的特性. ...
- 【jsp】详解JSP表达式语言(EL)
一.JSP EL语言定义 E L(Expression Language) 目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 ...
随机推荐
- 基于Apache axis2开发Java Web服务
1.安装配置axis2环境 1)下载axis2-1.4.1-war(发布webservice)和axis2-1.4.1-bin.zip(webservice调用使用的各种包) 下载好后把axis2-1 ...
- 不要62 hdu2089
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- ubuntu中运行python脚本
1. 运行方式一 新建test.py文件: touch test.py 然后vim test.py打开并编辑: print 'Hello World' 打开终端,输入命令: python test.p ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
- js系列教程1-数组操作全解
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- NDK Jni 开发(1)
1. 学习地址 http://my.oschina.net/lifj/blog/177087 http://www.cnblogs.com/devinzhang/archive/2012/02/29/ ...
- JS对象深度克隆
首先看一个例子: var student = { name:"yxz", age:25 } var newStudent = student; newStudent.sex = & ...
- 系统讲解CSS,前端开发最神奇的技术,新手的你一定不能错过
前面小编带领大家重温了前端开发中最基本的HTML语言.如果你已经掌握了这门语言,那么恭喜你,可以去深入了解CSS技术了.CSS技术最主要的功能就是弥补HTML标记对在页面中显示外观的不足,对这些标记对 ...
- BZOJ-1045-[HAOI2008] 糖果传递(中位数原理)
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数nn<=1'000'000,表示小朋友的个 ...
- zabbix杂文
ps:这是从我原来记录的地方直接copy的,很杂乱,不过主要我想记录当时的思路,乱就乱了...... 背景: 这是进公司的第一个正式任务(之前在测试环境熟悉),所以基本上最近一段时间都在弄这个东西,一 ...