天天看點

PageContext request session application差別以及EL表達式四個作用域的差別EL表達式若要想先取值,必須先存值

四個作用域的差別

  • 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...");
           
  1. 如果是數組類型的:
<%
	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