javaweb(8)

javaweb(第七章)

一、
EL表达式
在JSP开发中,为了获取Servlet域对象中存储的数据,经常需要书写写很多java代码,这样的做法会使JSP页面混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式
初识EL
EL表达式:${表达式}
EL中的标识符
(1)不以数字开头
(2)不能是EL中的保留字,如:and,or,gt
(3)不能是EL隐式对象,如pageContext
(4)不能包含单引号(‘)、双引号(”)、减号(-)和正斜杠(/)等特殊符号
如以下是正确的标识符:
username
username123
user_name
_username
EL保留字:
and eq gt true instanceof
or ne le false empty
not lt ge null div mod
EL中的变量
${product} product是一个变量
EL的常量
(1)布尔常量
true和false
(2)整形常量
取值范围是java语言中的定义的常量Long.MLN_VALUE到Long.MAX_VALUE之间
(3)浮点数常量
取值范围是java语言中的定义的常量Double.MLN_VALUE到Double.MAX._VALUE之间
(4)字符串常量
常用使用单引号和双引号引起来的字符串,字符串本身包含单引号和双引号需要用单斜杠(/)进行转义
(5)Null常量
变量引用的对象为空,它只有一个值,用null表示
EL中的运算符
(1)EL运算符(.)
如:javaBean对象、List集合
语句格式:
${customer.name} 访问的是customer对象中的name属性
(2)方括号运算符([])
u s e r [ " M y − N a m e " ] 点 运 算 和 方 括 号 运 算 符 在 某 种 情 况 下 可 以 互 换 , 如 : { user[ "My-Name"]} 点运算和方括号运算符在某种情况下可以互换,如: user["My−Name"]点运算和方括号运算符在某种情况下可以互换,如: {student.name}等价于${student[“name”]}
(3)算术运算符
+加 ${10+2} 12
-减 ${10-2} 8
*乘 ${10乘2} 20
/或div 除 ${10/4}或 ${10 div 2} 2.5
%或mod 取模(取余) ${10%4}或 ${10 mod 2} 2
(4)比较运算符
=(=)或eq 等于 $ {10 == 2}或 ${10 eq 2} false
!=或ne 不等于 ${10!=2}或 ${10 ne 2} true
<或lt 小于 ${10<2}或 ${10 lt 2} false
大于或gt,小于等于或le,大于小于或ge大于等于
比较=(=)是两个等号,千万不可只写一个符号(我这是因为好写)
(5)逻辑运算符
&&(and) 逻辑与
||(or) 逻辑或
!(not) 逻辑非
(6)empty运算符
判断某个对象是否为空null或“ ”,结果为布尔类型,其基本语法格式:
${empty var}
例: ${empty name},如不存在name变量,就返回true
(7)条件运算符
${A?B:C}
例: ${1==2}?3:4} 结果为4
(8)"()"运算符
优先级 运算符
1 []
2 ()
3 -(unary) not ! empty
4 * / div % mod
5 + -(binary)
6 < ,>,<=,>=, lt,gt,le,ge
7 ==,!=,eq,ne
8 &&,and
9 ||,or
10 ?:
二、
EL隐式对象
pageContext 对应于JSP页面的pageContext 对象
pageScope 代表page域中用于保存属性的Map对象
requesScope 代表reques域中用于保存属性的Map对象
sessionScope 代表session域中用于保存属性的Map对象
applicationScope 代表application域中用于保存属性的Map对象
param 表示一个保存了所有请求参数的Map对象

(1)pageContext对象
${pageContext.response.characterEncoding}
pageContext对象用于response对象中的characterEncoding属性
(2)web域相关对象
${pageContext.userName}
${requesScope.userName}
${sessionScope.userName}
${applicationScope.userName}

(3)param和paramValues对象
${param.num}
请求参数的第一个值
${paramValues.nums[0]}
(4)Cooike对象
获取cookie对象的信息: ${cooike.userName}
获取cookie对象的名称: ${cooike.userName.name}
获取cookie对象的值: ${cooike.userName.value}
三、
JSTL
(1)测试JSTL
taglib指令导入Core标签库,如; <% taglib uri=“http://java.sum.com/jsp/jstl/core” prefix=“c”%>
(2)JSTL中的Core标签库
(1)<c:out>标签
语法1:没有标签体
<c:out value=“value” [defaulet=“defaultvalue”]
[excapeXml="{true|false}" ] />
语法2:有标签体
<c:out value=“value” [excapeXml="{true|false}"]>
defaultValue
</c:out>
value:用于指定输出的文本内容
default:指定输出的value属性的null时所输出的默认值,该属性是可选的(方括号中的属性都是可选)
escapeXml:用于指定>,<,&,’,“等特殊字符进行HTML编码转换后再进行输出,默认为true
(2)<c:if>标签
语法1:没有标签体
<c:if test=“testCondition” var=“result”
[scope=”{page|request|session|application}"]/>
语法2:有标签体
<c:if test=“testCondition” var=“result”
[scope="{page|request|session|application}"]/>
body content
</c:if>
test:用于设置逻辑表达式
var:用于指定逻辑表达式中的变量的名字
scope:用于指定var变量的作用范围,默认为page,如属性test的计算结果为true,那么标签体将被执行,否则标签体不会被执行
(3)<c:choose>标签
<c:choose>没有属性,在它的标签体中只能嵌套一个或多个<c:when>标签和零个或一个<c:otherwise>标签,并在同一个<c:choose>标签中所有的<c:choose>标签中所有的<c:when>子标签必须出现在<c:otherwise>子标签之前,其语法格式如下:
<c:choose>
body content(< when > ) and subtags)
</c:choose>
<c:when>标签只有一个test属性,该属性的值为布尔类型,test属性支持动态值,其值是一个条件表达式,如条件表达式的值为true,就执行<c:when>标签体的内容,其语法格式如下:
<c:when test=“testCondition”>
body cintent
</c:when>
<c:otherwise>标签没有属性,它必须作为<c:choose>标签最后分支出现,当所有的<c:when>标签test不成立时,才执行和输出<c:otherwise>标签体的内容,其语法格式如下:<c:otherwise> condittional block </c:otherwise>
四、
javaweb(8)

javaweb(8)
javaweb(8)
javaweb(8)
javaweb(8)
javaweb(8)
javaweb(8)
javaweb(8)

上一篇:2014第16周三CSS布局再学习摘录


下一篇:JavaWeb——EL表达式和JSTL