java web複習(二)

3、四種屬性範圍及應用java

setAttribute(String name,Object o)設置屬性web

getAttribute(String name)根據屬性名取得屬性瀏覽器

removeAttribute(String name)根據屬性名刪除屬性安全

(一)session服務器

session範圍爲同一個瀏覽器有效。每個瀏覽器鏈接到服務器後實際上都表示本身的session屬性,因此打開一個新的瀏覽器沒法取得之前打開的瀏覽器的sessions屬性。cookie

session是javax.servlet.http.HttpSession接口的實例化對象,因此session只能用在Http協議中session

經常使用方法app

            方法 用途
String getId() 取得session id
long getCreationTime() 取得建立session 時間
long getLastAccessedTime 取得最後一次操做session時間
bollean isNew() 判斷是否爲新session
void invalidate() 讓session失效
Enumeration getAttributeNames() 獲得所有屬性名

注意:session的生命週期是能夠修改的jsp

session應用編碼

一、網頁重寫

網址重寫是一種Session追蹤技術,須要將一個或多個token做爲一個查詢字符串添加到URL中。Token的格式通常是鍵=值:

url?key1=value1&ke2=value2

缺點:

(1)在有些web瀏覽器中,URL限制2000個字符。

(2)僅當有連接要插入值時,值才能轉換成後面的資源。

(3)某些字符,例如空格、&符號及問號都必須進行轉碼。

(4)添加到URL中的信息隱蔽性很差。

(5)網址重寫必須在服務器端有效。全部的連接都必須帶有值,這樣可能出現一個問題,即一個頁面可能有許多個連接。

二、隱藏域

利用隱藏域來保持狀態,與採用網址重寫技術相似。將要傳遞的信息放在HTML表單的隱藏域中。當用戶提交表單時,隱藏域中的值也傳遞到服務器端。只有當頁面包含表單,或者能夠在頁面中添加表單時,才適合隱藏域。

優點:(1)能傳遞更多的信息。

(2)隱蔽性更好。

(3)傳遞的信息不須要進行編碼。

三、cookie

網頁重寫和隱藏域都只適合於保持哪些不須要跨越許多頁面的信息。若是這些信息須要跨越不少頁面,這兩種技術就變得很難實現,由於必須管理每個頁面的信息。cookie能解決網頁重寫和隱藏域都沒法解決的問題。

那什麼是Cookie呢?

Cookie是瀏覽器提供的一種技術,它能夠熱情服務端的程序將一些只須保存在客戶端,或者在和客戶端處理的數據放在自己使用的計算機中。(安全性不好)Cookie是自動在web服務器和瀏覽器之間來回傳遞的一小塊信息。Cookie適用於跨越多個頁面的信息。傳輸的過程由HTTP協議處理。每臺Web服務器最多能夠支持20個cookie。

Cookie的不足之處在於,用戶能夠經過修改瀏覽器設置來拒絕接收cookie。

要使用Cookie,必須熟悉javax.servlet.http.cookie類,以及HttpServletRequest和HttpServletResponse接口中的幾個方法。

方法 描述
Cookie(String name,String value) 構造Cookie對象,同時設置名稱和內容
String getName() 取得Cookie的名稱
String getValue() 取得Cookie的內容
void setMaxAge(int expiry) 設置Cookie保存時間,單位s
void addCookie(C哦Okie cookie) 向客戶端設置Cookie
Cookie[] getCookie() 取得客戶端設置的所有Cookie

一個瀏覽器最多保存300個Cookie,要設置Cookie的保存時間才能真正在瀏覽器保存Cookie,系統會在每個客戶端訪問服務器時自動設置一個Cookie

(二)page

只在一個頁面內有效,跳轉以後就無效了

在javax.servlet.jsp.PageContext的setAttribute(String name,Object o,int scope)方法還能夠指定保存範圍

public static final int PAGE_SCOPE              page屬性範圍,默認

public static final int REQUEST_SCOPE       request屬性範圍

public static final int SESSION_SCOPE         session屬性範圍

public static final int APPLICATION_SCOPE  application屬性範圍

(三)request

只在一次請求中保存,服務器跳轉後有效(客戶端跳轉無效,如超連接跳轉)

request是javax.servlet.http.HttpServletRequest接口的實例化對象,而HttpServletRequest是ServletRequest的子接口,因此查找request對象的方法時可一從這兩個接口的方法中找

經常使用方法:

1 Sting  getParameter(String name) 取得參數內容
2 Sting[]  getParameterValues(String name) 取得一組參數的內容
3 Enumeration getParameterNames() 取得所有參數名稱
4 void setCharacterEncoding(String env) 設置請求編碼
5 HttpSession getSession() 取得sessin對象
6 StringBuffer getRequestUrl() 返回正在請求的路徑
7 boolean isUserInRole(String role) 用戶驗證
8 Enumeration getHeaderNames() 獲取所有頭信息
9 String getHeader(String name) 根據名稱獲取頭信息
10 String getMethod() 獲取用戶提交方式
11 String getServletPath() 獲取訪問路徑
12 String ContextPath() 獲取上下文
13 String getRemoteAddr() 獲取客戶端ip地址
                       方法       做用

 

通常還須要request.setCharacterEncoding("GBK")設置中文編碼防止亂碼

說到request那就必須說說response對象了

response

response是javax.servlet.http.HttpServletResponse接口的實例

經常使用方法:

方法 描述
void addCookie(Cookie cookie) 向客戶端增長cookie
void serHeader(String name,String value) 設置迴應頭信息
void sendRedirct(String location)throws IOException 頁面跳轉

response.serHeader("refresh",3;URL=");//設置頭信息名,3秒後跳轉到指定的url(屬於客戶端跳轉)

response.serHeader("refresh",3");//設置3秒刷新一次

response.setHeader("Set-Cookie","MLDN=www.wawawa.com");//設置Cookie

response.sendRedirct和<jsp:forward>的區別

response.sendRedirct屬於客戶端跳轉,跳轉後地址欄地址會改變,<jsp:forward>是服務端調轉;並且在使用request屬性時只有服務端跳轉才能將request屬性保存到跳轉頁;服務端跳轉會在該跳轉語句直接執行,客戶端跳轉則是在整個頁面執行完後才跳轉。

(四)application

在服務器上保存,全部用戶均可以使用

application對象是javax.servlet.ServletContext接口的實例化對象,能夠由getServletContext()方法代替

經常使用方法

方法 描述
StringgetRealPath(String path) 獲得虛擬目錄的絕對路徑
String getContextPath() 取得當前虛擬目錄的名稱
Enumeration getAttributeNames() 取得全部屬性名稱
相關文章
相關標籤/搜索