文章目錄
-
- 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}