复习
-
JSP
-
jsp 三大指令
page
include
taglib
-
jsp 三个动作标签
<jsp:include>
<jsp:forward>
<jsp:param>
-
jsp 九个内置对象
pageContext
request
session
application
out
exception
response
page
config
-
-
EL
${ 表达式 }
取4个作用域中的值
有11个内置对象。
pageContext
pageScope
requestScope
sessionScope
applicationScope
header
headerValues
param
paramValues
cookie
initParam
-
JSTL
使用1.1的版本, 支持EL表达式, 1.0不支持EL表达式
拷贝jar包, 通过taglib 去引入标签库
一、EL表达式
全名为Expression Language,用来替代<%= %>脚本表达式。
作用是为了简化咱们的jsp代码,具体一点就是为了简化在jsp里面写的那些java代码
1.写法格式
基本结构:
${ 表达式 }
EL只能获取域中的数据!!
EL只能获取不能设置!!!
EL只能获取不能遍历!!!
2.常见的取值
- 获取数据
-
获取常量: 支持 数字/字符串/布尔值, 整个el表达式的值就是当前常量的值
-
获取变量:
el表达式可以获取变量的值,在获取时它的底层会调用pageContext的findAttribut e()方法按照由小到大的顺序在四大作用中搜寻指定名称的值,如果找到就直接返回该值, 如果找不到就什么也不输出
-
获取数组中的数据: 可以通过
数组变量名[数字]
来获取域中数组中的内容 -
获取集合中的数据: 可以通过
集合变量名[数字]
来获取域中集合中的内容 -
获取map中的数据: 可以通过
map变量名[键]
或者是map变量名.键
获取map中的数据需要注意,map变量名.键的形式,可能产生歧义,比如map.wife.another,因此这种情况下优先使用map变量名[“键”]
-
获取javaBean中的属性: 在获取javaBean中的属性值时, 点什么就相当于get什么。
-
比如: p.username <==> p.getUsername())
之前获取web应用的名称是通过 <%= request.getContextPath() %>
但是这种写法不推荐, 推荐使用el表达式来获取:
${
pageContext.request.contextPath }
3.${表达式 }
如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完都没有, 就没有显示。
- 取出4个作用域中存放的值方式比较 。
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
按普通手段取值
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
使用EL表达式取出作用域中的值
${
pageScope.name }
${
requestScope.name }
${
sessionScope.name }
${
applicationScope.name }
- 如果域中所存的是数组
<%
String [] a = {
"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
使用EL表达式取出作用域中数组的值<br>
${
array[0] } , ${
array[1] },${
array[2] },${
array[3] }
- 如果域中锁存的是集合
使用EL表达式取出作用域中集合的值
${
li[0] } , ${
li[1] },${
li[2] },${
li[3] }
- 取出Map集合的值
<------------Map数据----------