java web进阶篇(三) 表达式语言

表达式语言(Expression Language ,EL)是jsp2.0中新增的功能。可以避免出现许多的Scriptlet代码

格式: ${ 属性名称 },  使用表达式语言可以方便的访问对象中的属性,提交的参数或者进行各种数学运算,而且使用表达式语言最大的特点是如果输出的内容是null,则会自动使用空字符串("")表示。

<%request.setAttribute("name", "info");%>

<h1>${name}</h1>

表达式语言的主要功能就是进行内容的显示,为了显示的方便,在表达式语言中提供了许多内置对象,通过对不同内置对象的设置,表达式语言可以输出不同的内容。内置的对象如下:

NO 表达式内置对象 说明
1 pageCotext 表示javax.servlet.jsp.PageContext对象
2 pageScope 表示从page属性范围查找输出属性
3 requestScope 表示从request属性范围查找输出属性
4 sessionScope 表示从session属性范围查找输出属性
5 applicationScope 表示从application属性范围查找输出属性
6 param 接受传递到本页的参数
7 paramValues 接收传递到本页面的一组参数
8 header 取得一个头信息数据
9 headerValues 取得一组头信息数据
10 cookie 取出cookie中的数据
11 initParam 取得配置的初始化参数

访问四种属性的查找顺序是  page→request→session→application

但是如果我们要访问特定范围内的属性可以这样:   ${ sessionScope.info}   ,同理request范围的使用  requestScope.info。

接收请求参数,功能与request.getParameter()类似,格式是:  ${param.参数名称}

接收一组数据是,例如checkbox的值,我们可以用  ${ paramValues.inst[0]}  inst指的是checkbox的name属性。

下面我们卡一下集合操作,在表达式语言中已经很好的支持了集合的操作,可以方式使用表达式语言输出Collcetion(子接口 :list  set)、map集合中的内容。

例如<% List all=new ArrayList();         all.add("lingli");  all.add("[email protected]");  request.setAttribute("allinfo",all);%>

输出:${allinfo[0]}     ${allinfo[1]}

map集合操作<%Map map=new HashMap();  map.put("lxh","lingxinghua"); map.put("age","40"); request.setAttribute("mapinfo",map);%>

输出:${mapinfo["lxh"]}           ${mapinfo["age"]}

接着我们看在MVC中应用表达式

在一个java对象中我们假设定义了name,age ,address等属性,当然我们设置了set和get方法。

我们在通过实例化对象,并且应有set方法进行赋值了之后,我们通过request.setAttribute("people",  peo)把实例化对象传入进去,那么我们怎么用EL表达式来输出里面的值呢。

其实我们这样就可以输出  ${people.name}   ${people.age}    ${people.address}直接就可以输出里面的值。

如果我们把java对象的people加到一个List集合中,

List<People> all=new  ArrayList<People>();

People people=new People();

people.setName=("fzy");

people.setAge=(20);

people.setAddress("ShanDong");

all.add(people);

request.setAttribute("alllist",all);

request.getRequestDispatcher("next.jsp").forward(request,response);

接着我们在next.jsp页面中

<%

List  all=(List)request.getAttribute("alllist");

Iteratro it=all.iterator();

%>

<%

while(it.hasNext()){

pageContext.setAttribute("people",iter.next);

%>

${people.name}

${people.age}

${people.address}

<%

}

%>

这样我们就实现了输出。

java web进阶篇(三) 表达式语言

时间: 2024-11-02 23:34:33

java web进阶篇(三) 表达式语言的相关文章

java web进阶篇(四) Tomcat数据源

动态web开发的最大特点是可以进行数据库的操作,传统的jdbc操作由于步骤重复性造成程序性能下降. 先来回顾JDBC的操作原理 1.加载数据库驱动程序,数据库驱动程序通过classpath配置. 2.通过DirverManager类取得数据库连接对象. 3.通过Connection实例化PreparedStatement对象,编写sql语句命令操作数据库. 4.数据库属于资源操作,操作完成后要关闭数据库以释放资源. 其实以上操作,1.2.4步骤是重复的,保留3,实际上就是数据源产生的原因. 数据

JAVA Web学习篇--Servlet

Servlet由来 做过BS项目的人都知道,浏览器可以依据HTML静态标记语言来显示各式各样的网页.可是假设我们须要在网页上完毕一些业务逻辑:比方登陆验证.或者说网页显示的内容在server的数据库中.假设是这样,除了负责显示的HTML标记之外,必须还要有完毕这些业务功能的代码存在.这样的网页我们就叫做动态网页. 对于静态网页而言,server上存在的是一个个纯HTML文件.当client浏览器发出HTTP请求时,server能够依据请求的URL找到相应的HTML文件,并将HTML代码返回给cl

java基础进阶篇(六)_HashTable------【java源码栈】

一.概述 ??前面介绍了HashMap的结构和原理,这里介绍个类似HashMap的结构Hashtable. ??HashTable 官方解释是HashMap的轻量级实现, 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射. ??所以我们结合HashMap来介绍HashTable, 比较下两者的区别. ??HashTable 使用的很少, 它支持线程安全, 通过内部方法加上 synchronized 实现, 因此同步锁的密度太大了, 在实际情

java基础进阶篇(七)_LinkedHashMap------【java源码栈】

目录 一.概述 二.特点 三.应用场合 四.构造方法 1.参数为空 2.accessOrder 五.源码结构分析 六.常见问题 1.如何实现的元素有序? 2.如何保证顺序的正确以及同步 3.如何实现两种顺序(插入顺序或者访问顺序)? 4.为什么重写containsValue()而不重写containsKey()? 七.常用方法 一.概述 ??LinkedHashMap是HashMap的子类,关于HashMap可以看下前面的章节:java基础进阶篇 HashMap public class Lin

Java Web高性能开发(三)

今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提供了一项新服务,利用深度学习技术来理解视频内容. 深度学习需要借助一个模拟"神经元"的网络来处理数据,并且利用实例数据对其进行训练.Clarifai的技术源自纽约大学的研究,该公司2013年在一项著名的图片内容识别软件竞赛中取得前五名. 今日英文: http://docs.oracle.c

Java web基础总结三之—— java web 服务器

Java web基础总结三之-- java web 服务器 一.什么是java web服务器 首先来看一下什么是web服务器,它一般指网站服务器,是指一个再互联网一个主机上的一个程序.它可以解析客户端发送来的遵循http协议的请求,并且经过逻辑业务处理后,以http协议向浏览器等Web客户端提供文档. 互联网上供外界访问的Web资源可以分为两种:一个是静态web资源(如html 页面),指web页面中供人们浏览的数据始终是不变.另一个动态web资源,指web页面中供人们浏览的数据是由程序动态产生

Java Web进阶——Filter过滤器

一.过滤器的介绍: 在Servlet规范2.3中定义了过滤器,它是一个服务器端的组件,可以截取用户端的请求与响应信息,并且对这些信息进行过滤. Servlet过滤器本身并不生成请求和响应对象,只是提供过滤功能. Servlet过滤器能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容. Servlet过滤器可以过滤的Web组件包括Servlet,JSP和HTML等文件. 本文源码——GitHub:  https://github.com/i

Java Web 编码问题三:URL和URI以及QueryString的编码问题

在问题之前我们先来了解一下什么是URL,URI以及QueryString,如下图1所示: 图1:URL-URI-QueryString URL:是全球资源定位符的英文缩写,如上 其中localhost:是指Domain(IP或者主机名),8080:是端口 Web服务一般是80,8080是自己测试是候用的,避免和和浏览器的端口冲突. ROOT:是ContentPath,就是虚拟路径,如果是tomcat服务器对象的是servlet.xml配置文件中的<Context path="/ROOT&q

Java Web基础(三)(HttpServletRequest-请求基础)

之前已经详细讲解了Servlet/JSP的基础知识,包括Servlet和JSP的关系.Servlet基本的编写和配置,以及一个请求/响应过程中,HTTP服务器.web容器.Servlet是如何配合工作的. 对于一个web应用程序来说,请求/响应是其工作工程的基础,我们这里只考虑基于HTTP协议的请求/响应模型,HttpServletRequest代表请求及相关参数,HttpServletResponse代表响应及相关参数,这两个对象会随着一个请求的发起而建立,随着一个响应的结束而销毁被回收.当一