JSP中的内置标记(JSP动作)和 EL表达式
一、JSP的内置标记(JSP动作)
(一)JSP的内置标记都是以<jsp: 开始标记的
一般会用到<jsp:useBean/>,<jsp:setProperty/>,<jsp:getProperty/>,这三种是配合使用的
示例图:
显示效果:
再示例一个include :
静态包含:<%@include%>
动态包含:<jsp:include/>
先定义一个要被包含的文件main.jsp:
显示效果如下:
<jsp:forward/>:跳转——是服务端跳转——请求转发
图画的有点丑,将就将就
二、EL表达式
EL——Expreession Language :表达式语言,来自于ognl,ognl是一个开源项目。
简要的意思就是使用一系列的符号来描述一个表达式
示例图:
注释掉path的定义,你会看到下面会报错,由于在JSP中使用了没有定义变量的path,所以会报一个500的内部错误。
如果使用:${ 表达式 },会有什么变化呢,继续看下面
显示结果:
使用了 ${ 表达式 } :
使用EL表达式的前提是JSP页面的page指令的isELIgnored为false时使用,默认false。如果是使用true,编译器会把${path}原样显示,这里就不截图了,自己试试吧
对了EL表达式不是从页面获取值,而是从几个范围获取,继续看下面。
显示结果:
(一)、${ 表达式 } 就称为EL表达式
1.EL表达式是以 “ ${ ”开始 “ } ”结束,其中就是表达式。
2.主要的作用:用于获取内置范围对象的值。
3.EL表达式取值的原理:
首先从最小的范围去取值,如果没有就到更大的范围I去找值,如果还是没有,一直到applicatiion范围去找值,如果还是没有,不会报错,返回空白(什么都没有),如果是查null值,也返回空白。
4.EL表达式中表示范围对象是
JSP内置对象:application、session、request、pageContext。
EL表达式中范围对象:applicationScope。sessionScope、requestScope、pageScope。
EL表达式中表示范围对象示例:
显示结果:
(二)、EL表达式访问符号:
有两种:
1、使用 " . " 例如:${applicationScope.path}
2、使用” [ ] “ 符号 例如:${applicationScope[ " path " ] },注意中括弧里面是要用引号引起来
(三)、EL表达式中的运算符
1.算术运算符
+ :例如:${6+6} 。注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。
- :例如:${4-3}
* :例如:${4*3}
/ : 例如:${9/3}
2.EL关系运算符
关系运算符 说明 范例 结果
==或eq 等于 ${5==5}或${5eq5} true
!=或ne 不等于 ${5!=5}或${5ne5} false
<或lt 小于 ${3<5}或${3lt5} true
>或gt 大于 ${3>5}或{3gt5} false
<=或le 小于等于 ${3<=5}或${3le5} true
>=或ge 大于等于 ${3>=5}或${3ge5} false
* 表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其对应UNICODE值来比较大小的。
注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2}
或者
${ ${param.password1 } = = ${ param.password2 } }
而应写成
${ param.password1 = = param.password2 }
3.逻辑运算符
4.Empty运算符
Empty运算符主要用来判断值是否为空(NULL,空字符串,空集合)。
5.条件运算符
${ A ? B : C}