天天看点

后台(17)——JSP(3)

<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页面中逻辑处理,如判断、循环等等操作。

&lt;%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %&gt;

利用taglib指令设置JSTL的路径和前缀名

导入包jstl.jar和standard.jar

&lt;c:set&gt;标签

用于设置各种域中的属性

&lt;c:out&gt;标签

用于输出一段文本内容到客户端浏览器

&lt;c:remove&gt;标签

用于删除各种域中的属性

&lt;c:if&gt;标签

用于条件判断

&lt;c:choose&gt;标签

该标签非常类似于Java中的switch语句,用于多个条件选择。它必须与&lt;c:when&gt;和&lt;c:otherwise&gt;一起使用

&lt;c:forEach&gt;标签

用于对集合对象进行循环迭代操作

运行后效果如下图所示:

后台(17)——JSP(3)