<a href="http://blog.csdn.net/lfdfhl/article/details/52415390" target="_blank">探索Android软键盘的疑难杂症</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/53332936" target="_blank">深入探讨Android异步精髓Handler</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/52673536" target="_blank">详解Android主流框架不可或缺的基石</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/53143114" target="_blank">站在源码的肩膀上全解Scroller工作机制</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/52735103" target="_blank">Android多分辨率适配框架(1)— 核心基础</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/52877866" target="_blank">Android多分辨率适配框架(2)— 原理剖析</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/53046113" target="_blank">Android多分辨率适配框架(3)— 使用指南</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51671038" target="_blank">自定义View系列教程00–推翻自己和过往,重学自定义View</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51324275" target="_blank">自定义View系列教程01–常用工具介绍</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51347818" target="_blank">自定义View系列教程02–onMeasure源码详尽分析</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51393131" target="_blank">自定义View系列教程03–onLayout源码详尽分析</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51435968" target="_blank">自定义View系列教程04–Draw源码分析及其实践</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51508727" target="_blank">自定义View系列教程05–示例分析</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51559847" target="_blank">自定义View系列教程06–详解View的Touch事件处理</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51603088" target="_blank">自定义View系列教程07–详解ViewGroup分发Touch事件</a>
<a href="http://blog.csdn.net/lfdfhl/article/details/51656492" target="_blank">自定义View系列教程08–滑动冲突的产生及其处理</a>
今天我们继续学习JSP中的EL和JSTL。
EL(expression language)表达式是JSP中获取数据的一种规范,它主要用于简化jsp中java代码开发。
我们利用EL表达式获取数据,但是请务必注意它只可以获取存在4个作用域中的数据。
语法格式:${ }
比如,我们在session中存了数据:
session.setAttribute(“name”, “波少野结衣”);
那么我们可以利用EL表达式获取存的数据
${name}
嗯哼,这里使用EL表达式就非常简单了,究其根本是因为${}背后执行的是pageContext.findAttribute( )。
与此类似,如果我们有一个User类,其中有name属性,user是该类的对象。现在将该对象保存到域中后,如果要获取该对象的name可以这么写:
${user.name}
该方式就等效于user.getName()。也就是说在EL表达式中.运算符相当于调了getter方法。同理如果User中有一个Address属性,Address中又有一个city,我们也可以通过该方式获取city的值
${user.address.city}
还有一个功能与.运算符非常类似的运算符[],但它比.运算符要强大许多,在此不再赘述。
我们还可以利用EL表达式做一些简单的运算。
利用empty判断null
它会将空字符串和没有元素的集合都判断为null即返回true,示例如下:
${empty object}
EL的三元运算符
请看如下示例:
${empty user ? “未登录”:”已经登录”}
在之前的文章中介绍了JSP的内置对象,在此列举几个EL表达式的常用对象
pageContext
对应于JSP页面中的pageContext对象
pageScope
代表page域中用于保存属性的Map对象
requestScope
代表request域中用于保存属性的Map对象
sessionScope
代表session域中用于保存属性的Map对象
applicationScope
代表application域中用于保存属性的Map对象
param
表示一个保存所有请求参数的Map对象
paramValues
表示一个保存了所有请求参数的Map对象,它对于某个请求参数返回一个string类型数组
header
表示一个保存了所有http请求头字段的Map对象
headerValues
表示一个保存了所有http请求头字段的Map对象,返回string类型数组
cookie
表示一个保存了所有cookie的Map对象
initParam
表示一个保存了所有web应用初始化参数的map对象
从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签极大地降低了JSP页面的复杂度,同时增强了代码的重用性,所以自定义标签在WEB应用中被广泛使用。故,许多WEB应用厂商都开发出了自己的一套标签库,这导致出现了许多功能相同的标签,令开发人员手忙脚乱,无所适从。为了解决该问题,Apache开发了一套用于解决这些常用问题的自定义标签库,这套标签库被SUN公司定义为标准标签库(The JavaServer Pages Standard Tag Library),简称JSTL。在开发中可使用JSTL实现JSP页面中逻辑处理,如判断、循环等等操作。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
利用taglib指令设置JSTL的路径和前缀名
导入包jstl.jar和standard.jar
<c:set>标签
用于设置各种域中的属性
<c:out>标签
用于输出一段文本内容到客户端浏览器
<c:remove>标签
用于删除各种域中的属性
<c:if>标签
用于条件判断
<c:choose>标签
该标签非常类似于Java中的switch语句,用于多个条件选择。它必须与<c:when>和<c:otherwise>一起使用
<c:forEach>标签
用于对集合对象进行循环迭代操作
运行后效果如下图所示: