四個作用域的差別
- pageContext 【PageContext】
作用域僅限于目前的頁面。還可以擷取到其他八個内置對象。
- request 【HttpServletRequest】
作用域僅限于一次請求, 隻要伺服器對該請求做出了響應。 這個域中存的值就沒有了。
- session 【HttpSession】
作用域限于一次會話(多次請求與響應) 當中。
- application 【ServletContext】
整個工程都可以通路, 伺服器關閉後就不能通路了。
EL表達式
是為了簡化JSP代碼,具體一點就是為了簡化jsp裡面寫的那些java代碼
- 寫法格式
${ }
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
按普通手段取值<br>
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
<br>使用EL表達式取出作用域中的值<br>
${ 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] }
%>
若要想先取值,必須先存值
pageContext.setAttribute("name", "zhangsan");
session.setAttribute("name", "lisi...");
- 如果是數組類型的:
<%
String [] array = {"aa","bb","cc"}
session.setAttribute("array",array);
${ array[1] }
%>
2.如果是直接建立對象類型的,可以直接用對象名.屬性名
<%
User user = new User("zhangsan",18);
session.setAttribute("u", user);
%>
${ u.name } , ${ u.age }
一般使用EL表達式,用的比較多的,都是從一個對象中取出它的屬性值,比如取出某一個學生的姓名。
作用域相關對象
- pageScope
- requestScope
- sessionScope
- applicationScope
頭資訊相關對象
- header
- headerValues
參數資訊相關對象
- param
- paramValues
-
cookie
全局初始化參數
- initParam