文章目录
-
- JSP内置对象作用域
- EL表达式
-
- EL执行表达式
JSP内置对象作用域
-
page、request、session、application
- 都具有
方法来存取数据setAttribute、getAttribute
-
作⽤域:对应的内置对象是page
。pageContext
-
作⽤域:对应的内置对象是request
。 利用转发跳转是同一个请求,重定向是不同的请求。request
-
作⽤域:对应的内置对象是session
。session
-
作⽤域:对应的内置对象是application
。application
-
page < request < session < application
-
只在当前⻚⾯有效。page
-
在⼀次请求内有效。 转发可以,重定向不可以。request
-
在⼀次会话内有效。 转发和重定向都可以。session
-
对应整个 WEB 应⽤的。application
不关闭,都可以进行存取数据。Tomcat
- 网站访问量统计
<%
Integer count = (Integer) application.getAttribute("count");
if (count == null){
count = 1;
application.setAttribute("count",count);
}else{
count++;
application.setAttribute("count",count);
}
%>
您是当前的第<%=count%>位访客
EL表达式
-
表达式语⾔,替代Expression Language
⻚⾯中数据访问时的复杂编码,可以⾮常便捷地取出域对象JSP
中保存的数据,前提是⼀定要先(pageContext、request、session、application)
setAttribute,
就相当于在简化EL
getAttribute
- 语法:
变量名就是${变量名}
对应的setAttribute
值。key
<%
String name = (String) request.getAttribute("name");
%>
<%=name%>
<hr/>
${name}
//二者功能相同
- 1、EL 对于 4 种域对象的默认查找顺序:
-
pageContext -》request-〉session-》application
- 按照上述的顺序进⾏查找,找到⽴即返回,在
中也⽆法找到,则返回application
null
- 2、指定作⽤域进⾏查找
pageContext
:
${pageScope.name}
request
:
${requestScope.name}
session
:
${sessionScope.name}
application
:
${applicationScope.name}
数据级联:
<%
// pageContext.setAttribute("name","page");
// request.setAttribute("name","request");
// session.setAttribute("name","session");
// application.setAttribute("name","application");
User user = new User(1,"张三",86.5,new Address(1,"⼩寨"));
System.out.println(user.toString());
pageContext.setAttribute("user",user);
%>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>成绩</th>
<th>地址</th>
</tr>
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
<td>${user.address}</td>
</tr>
</table>
-
:也可以取出,不如第一种常用${user["id"]}
EL执行表达式
- 写到一个花括号里面
${num1&&num2}
&& || ! < > <= <= ==
&& and
|| or
! not
== eq
!= ne
< lt
> gt
<= le
>= ge
empty 变量为 null,⻓度为0的String,size为0的集合
${empty num3}