jsp九大內置對象及四個做用域:html
何爲做用域java
先讓咱們看看效果:數組
大概流程是這樣的,咱們訪問index.jsp的時候,分別對pageContext, request, session,application四個做用域中的變量進行累加。(固然先判斷這個變量是否是存在,若是變量不存在,則要把變量初始化成1)。計算完成後就從index.jsp執行forward跳轉到test.jsp。在test.jsp裏再進行一次累加,而後顯示出這四個整數來。瀏覽器
從顯示的結果來看,咱們能夠直觀的得出結論:tomcat
page裏的變量無法從index.jsp傳遞到test.jsp。只要頁面跳轉了,它們就不見了。服務器
request裏的變量能夠跨越forward先後的兩頁。可是隻要刷新頁面,它們就從新計算了。網絡
session和application裏的變量一直在累加,開始還看不出區別,只要關閉瀏覽器,再次重啓瀏覽器訪問這頁,session裏的變量就從新計算了。session
application裏的變量一直在累加,除非你重啓tomcat,不然它會一直變大。app
做用域規定的是變量的有效期限jsp
若是把變量放到pageContext裏,就說明它的做用域是page,它的有效範圍只在當前jsp頁面裏。
從把變量放到pageContext開始,到jsp頁面結束,你均可以使用這個變量。
若是把變量放到request裏,就說明它的做用域是request,它的有效範圍是當前請求週期。
所謂請求週期,就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過程當中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裏你均可以使用這個變量。
若是把變量放到session裏,就說明它的做用域是session,它的有效範圍是當前會話。
所謂當前會話,就是指從用戶打開瀏覽器開始,到用戶關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要用戶不關瀏覽器,服務器就有辦法知道這些請求是一我的發起的,整個過程被稱爲一個會話(session),而放到會話中的變量,就能夠在當前會話的全部請求裏使用。
若是把變量放到application裏,就說明它的做用域是application,它的有效範圍是整個應用。
整個應用是指從應用啓動,到應用結束。咱們沒有說「從服務器啓動,到服務器關閉」,是由於一個服務器可能部署多個應用,固然你關閉了服務器,就會把上面全部的應用都關閉了。
application做用域裏的變量,它們的存活時間是最長的,若是不進行手工刪除,它們就一直能夠使用。
與上述三個不一樣的是,application裏的變量能夠被全部用戶共用。若是用戶甲的操做修改了application中的變量,用戶乙訪問時獲得的是修改後的值。這在其餘scope中都是不會發生的,page, request,session都是徹底隔離的,不管如何修改都不會影響其餘人的數據。
request經常使用方法
l得到客戶機信息
•getRequestURL方法返回客戶端發出請求時的完整URL。
•getRequestURI方法返回請求行中的資源名部分。
•getQueryString 方法返回請求行中的參數部分。
•getRemoteAddr方法返回發出請求的客戶機的IP地址
•getRemoteHost方法返回發出請求的客戶機的完整主機名
•getRemotePort方法返回客戶機所使用的網絡端口號
•getLocalAddr方法返回WEB服務器的IP地址。
•getLocalName方法返回WEB服務器的主機名
•getMethod獲得客戶機請求方式
response對象
response對象包含了響應客戶請求的有關信息,但在JSP中不多直接用到它。它是HttpServletResponse類的實例。
1 String getCharacterEncoding() 返回響應用的是何種字符編碼
2 ServletOutputStream getOutputStream() 返回響應的一個二進制輸出流
3 PrintWriter getWriter() 返回能夠向客戶端輸出字符的一個對象
4 void setContentLength(int len) 設置響應頭長度
5 void setContentType(String type) 設置響應的MIME類型
6 sendRedirect(java.lang.String location) 從新定向客戶端的請求
session對象
session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開鏈接爲止。它是HttpSession類的實例
1 long getCreationTime() 返回SESSION建立時間
2 public String getId() 返回SESSION建立時JSP引擎爲它設的唯一ID號
3 long getLastAccessedTime() 返回此SESSION裏客戶端最近一次請求時間
4 int getMaxInactiveInterval() 返回兩次請求間隔多長時間此SESSION被取消(ms)
5 String[] getValueNames() 返回一個包含此SESSION中全部可用屬性的數組
6 void invalidate() 取消SESSION,使SESSION不可用
7 boolean isNew() 返回服務器建立的一個SESSION,客戶端是否已經加入
8 void removeValue(String name) 刪除SESSION中指定的屬性
9 void setMaxInactiveInterval() 設置兩次請求間隔多長時間此SESSION被取消(ms)