EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式
EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。
EL基本格式EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;
例如: ${loginInfoBean.suser}
此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;
例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}
EL语法组成-标识符EL表达式由标识符、存取器、文字和运算符组成。
标识符用来标识存储在作用域中的数据对象。EL 有11 个保留标识符,对应于11个EL隐式对象。除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。
标识符例:
${abc} 相当于
${og_1}
…等等;就是说{}内的标识符除了11个保留字之外都表示作用域中的数据对应的名.
${requestScope}中的requestScope是11个EL隐式对象之一,它不再表示作用域中数据,而是表示request作用域;
EL隐藏对象pageContext PageContext 实例对应于当前页面的处理pageScope 与页面作用域属性的名称和值相关联的Map类requestScope 与请求作用域属性的名称和值相关联的Map类sessionScope 与会话作用域属性的名称和值相关联的Map类applicationScope 与应用程序作用域属性的名称和值相关联的Map类param 按名称存储请求参数的主要值的Map 类paramValues 将请求参数的所有值作为String 数组存储的Map 类Header 按名称存储请求头主要值的Map 类headerValues 将请求头的所有值作为String 数组存储的Map 类cookie 按名称存储请求附带的cookie 的Map 类initParam 按名称存储Web 应用程序上下文初始化参数的Map类
EL存取器存取器用来检索对象的特性或集合的元素。
存取器: 通过“[]” 或“.” 符号获取相关数据
例:
${userBean.suser} 或${userBean[“suser”]}
//获取输出bean中的suser属性值;
${mcType[“id”]} //获取map中key为id对应的值;
EL运算符运算符允许对数据和文字进行组合以及比较。
EL运算符:
类别 运算符算术运算符+、-、*、/(或div)和%(或mod)关系运算符==(或eq)、!=(或ne)、(或gt)、<=(或le) 和>=(或ge)
逻辑运算符&&(或and)、||(或or)和!(或not)
验证运算符empty
验证运算符(empty):对于验证数据特别有用。empty 运算符采用单个表达式作为其变量(也即,${empty input}),并返回一个布尔值,该布尔值表示对表达式求值的结果是不是“空”值。求值结果为null 的表达式被认为是空,即无元素的集合或数组。如果参数是对长度为零的String 求值所得的结果,则empty 运算符也将返回true。
EL文字文字表示固定的值— 数字、字符、字符串、布尔型或空值。
在EL 表达式中,数字、字符串、布尔值和null 都可以被指定为文字值。字符串可以用单引号或双引号定界。布尔值被指定为true 和false
JSTL是什么JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和sql)和一对通用标记库验证器组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作URL 的标记。format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而sql 库定义了用来查询关系数据库的操作。 两个JSTL 标记库验证器允许开发人员在其JSP 应用程序中强制使用编码标准。
如果要使用JSTL,则必须引用jstl.jar和standard.jar两个包。为什么要用JSTL
我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:
jsp维护难度增加;
出错提示不明确,不容易调试;
分工不明确;(即jsp开发者是美工,也是程序员);
最终增加程序的开发成本;
解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使分工更明确。
Welcome, member!
Welcome, guest!
JSTL一般配合EL一起使用,因此先看看EL.
JSTL部署在EE应用程序中部署JSTL有两种方式:
已存在的工程上部署将jstl.jar和standard.jar两个包考到现有工程WebRoot / WEB-INF / lib 目录下将相关的.tld文件考到现有工程WebRoot /WEB-INF 目录下;
也可通过eclipse在已存在工程上部署新建工程的时候直接部署在JSP使用JSTL-core标签库core在jsp中的使用:
在web.xml 中添加
http://java.sun.com/jsp/jstl/core
/WEB-INF/c.tld
在jsp文件中添加或
使用
Core的操作作用域变量标签获取输出作用域中变量.
属性: value [default] [escapeXml]
定义作用域中变量 属性: value var [scope]
删除作用域中变量 属性: var [scope]
Core的条件控制标签单分支条件 属性:test [var] [scope]
多分支条件
属性: test
Core的其它标签输出转换成的URL:
属性:value [context] [var] [scope]
和相似用于包含其它页面的内容:
属性:url [context] [charEncoding] [var][scope]
重定向属性: url [context]
与配合使用,用于传参
Core的循环控制标签实现简单循环 var='item' begin='5' end='10' step='2‘ varStatus=‘’
实现迭代(遍历)
items='' var='item‘ varStatus=‘’
属性varStatus和var相似设置一个作用域变量;只是varStatus作用域变量中存的是包括运行状态的对象;此对象包含如下属性:
current index count first last begin end step
简单循环
testjstl1${i}
循环迭代
testjstl1当前遍历索引:${mcStatus.index} ; 商品名:${mcBean.sname}; ....
在JSP使用JSTL-format标签库format在jsp中的使用:
在web.xml 中添加
http://java.sun.com/jstl/fmt
/WEB-INF/fmt.tld
在jsp文件中添加
使用
Format常用标签格式化输出日期:
value type var pattern
type取值:
short: 10/19/00 6:07 PM
medium: Oct 19, 2000 6:07:01 PM
long: October 19, 2000 6:07:01 PM MDT
full: Thursday, October 19, 2000 6:07:01 PM MDT
例:
格式化输出数字:
value var pattern
例:
format实例
testjstl1