JavaWeb课程系列
4.el隐含对象解析
1)pageContext
它是代表当前页面的PageContext对象,通过它的get方法可以得到jsp中的其它八大隐含对象
2)四个域对象所对应的隐含对象:
①Map<String, Object> pageScope——对应pageContext域 ${ pageScope . username }
②Map<String, Object> requestScope——对应request域 ${ requestScope. username }
③Map<String, Object> sessionScope——对应session域 ${ sessionScope. username }
④Map<String, Object> applicationScope——对应application域 ${ applicationScope. username }
3)请求参数数据 param
Map<String, String> param:
保存的是请求参数的key--value(value只有一个),input ${ param. username }
Map<String, String[]> paramValues:
保存的是请求参数的key--value(value有多个),checkbox ${ paramValues. username }
5. el取值方式
1)使用“点”
如果对象是map类型对象: map.keyName -->得到对应的value值
实质: map.get(keyName)
如果对象是一般对象 : object.propertyName ---> 得到对就的属性值
实质是: object.getXxx()
[特别强调:字段和属性] EL表达式访问的是使用getXxx()、setXxx()方法定义的属性,而不是字段本身。例如:${user.userName }会去调用getUserName()方法,而不是userName字段。所以如果没有声明getUserName()方法或权限不允许则无法显示属性值。 getUserName()方法未定义或权限不足时会抛出异常:javax.el.PropertyNotFoundException: Property 'userName' not readable on type java.lang.String |
2)使用“[]”
map的键有时包含“点”,这时就不能再使用“点”取值了。
例如:
<input type="text" name="name.x" value=”aaa”>
${param['name.x']}
如果对象是map类型对象: map["keyName"] -->得到对应的value值
实质: map.get(key)
如果对象是一般对象 : object["propertyName"] ---> 得到对就的属性值
实质是: map.getXxx()
如果是取出list的元素,也使用[]:
如:
<input type="checkbox" name="username" value="1">
<input type="checkbox" name="username" value="2">
<input type="checkbox" name="username" value="3">
<input type="checkbox" name="username" value="4">
取值:<h1>多选:${paramValues.username[0]}</h1>
简化格式
域范围对象可以不用写,系统会自动按范围从小到大的顺序查找:
pageScope->requestScope-->sessionScope-->applicationScope |
找到就不会继续找了, 如果没有找到显示空白(不是null, 而是一个空串)不会报错
6. el表达式运算
- 算术运算:${5+3}
- 关系运算: ${5>3}
- 逻辑运算: ${true&&false}
- empty运算:${empty requestScope.emp }
①null
[1]变量的值是null
[2]域对象中不存在这个变量
②空集合
③空数组
- 空字符串
- 空字符
5)三目条件运算: ${16<5?'a':"big" }
7.获取项目虚拟路径
1)获取request对象${pageContext.request }
2)获取contextPath${pageContext.request.contextPath }