jsp/servlet會話是什么意思-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關jsp/servlet會話是什么意思的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,龍?zhí)镀髽I(yè)網(wǎng)站建設,龍?zhí)镀放凭W(wǎng)站建設,網(wǎng)站定制,龍?zhí)毒W(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,龍?zhí)毒W(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

 客戶端打開與服務器的連接,發(fā)出請求直到服務器響應客戶端請求的全過程稱之為會話 。

瀏覽器與服務器之間的通信是通過HTTP協(xié)議進行通信的,而HTTP協(xié)議是”無狀態(tài)”的協(xié)議,它不能保存客戶的信息,即一次響應完成之后連接就斷開了,下一次的請求需要重新連接,當用戶在同一網(wǎng)站的多個頁面之間轉(zhuǎn)換時,根本無法確定是否是同一個客戶,會話跟蹤技術(shù)就可以實現(xiàn)這種要求 。

Cookie

服務器在響應請求時可以將一些數(shù)據(jù)以"鍵-值"對的形式通過響應信息保存在客戶端。當瀏覽器再次訪問相同的應用時,會將原先的存有session ID的Cookie通過請求信息帶到服務器端,網(wǎng)絡服務器通過識別唯一的session ID來代表每個客戶端,從而識別這個客戶端接下來的請求。

Cookie不是內(nèi)置對象,需要自己創(chuàng)建Cookie的實例。是服務器往客戶端寫的一段文本信息,該信息是可以修改的,所以一般情況cookie會存儲一些非敏感信息,當客戶端再次請求服務器的時候,會將Cookie以請求頭的方式發(fā)送到服務器,這個時候服務器就能區(qū)分是誰在訪問了。

用于會話跟蹤的Cookie叫做會話Cookie。Servlet規(guī)范中會話跟蹤的cookie名字必須是JSESSIONID,保存在瀏覽器的內(nèi)存中。

Cookie可以用于保持用戶的會話狀態(tài),但Cookie信息保存在客戶端,存在較大的安全隱患,且一般瀏覽器對Cookie的數(shù)目及數(shù)據(jù)大小有嚴格的限制。在Web應用中,一般情況下通過HttpSession對象保持會話狀態(tài)

Cookie cookie = new Cookie("鍵", "值");       //創(chuàng)建cookie
cookie.setMaxAge(60*60*24);                 //設置cookie的有效期
cookie.setPath("/");                        //設置cookie的有效范圍(路徑)
response.addCookie(cookie);                 //將cookie寫入到客戶端

Session

Session 是存放在服務器端的,更加安全。每一個用戶都有一個不同的session,各個用戶之間是不能共享的。

Session是依賴Cookie的,如果Cookie被禁用,那么session也將失效 。

Session技術(shù)則是服務端的解決方案,它是通過服務器來保持狀態(tài)的。在Java中是通過調(diào)用HttpServletRequest的getSession方法(使用true作為參數(shù))創(chuàng)建的。在創(chuàng)建了Session的同時,服務器會為該Session生成唯一的Session id,而這個Session id在隨后的請求中會被用來重新獲得已經(jīng)創(chuàng)建的Session;在Session被創(chuàng)建之后,就可以調(diào)用Session相關的方法往Session中增加內(nèi)容了,而這些內(nèi)容只會保存在服務器中,發(fā)到客戶端的只有Session id;當客戶端再次發(fā)送請求的時候,會將這個Session id帶上,服務器接受到請求之后就會依據(jù)Session id找到相應的Session,從而再次使用之。正式這樣一個過程,用戶的狀態(tài)也就得以保持了。

session.setAttribute(String name,Object obj);       //往session中存放內(nèi)容(通過鍵和值的形式)
session.getAtrribute(String name);                  //通過鍵從session中獲取內(nèi)容
session.removeAttribute(String name);               //把存儲在session中的對象移除
session.invalidate();                               //銷毀session

隱藏表單域

隱藏表單域是將會話ID添加到HTML的隱藏表單中(類型為hidden的input)。重定向和轉(zhuǎn)發(fā)

通過<input type="hidden" name="">進行信息的傳遞 。通過表單形式提交到服務器,但是本身不顯示。

比如第二個表單中獲取第一個表單中的內(nèi)容,并以隱藏域( 文本框type為 hidden) 的方式接受第一個表單中的內(nèi)容,再次傳遞到第三個表單中。通俗點說請求的順序是這樣的:表單一 - - > 表單二 - - >表單三,但是表單三需要用到表單一提交的內(nèi)容,所以就會需要表單二作為過渡,把表單一的內(nèi)容以隱藏域的形式保存,然后再傳遞到表單三中。

重寫URL

把會話ID編碼在URL中。 例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980這樣,即使瀏覽器不支持cookie,也能夠?qū)崿F(xiàn)會話跟蹤。

對于URL復寫,服務器從請求的URI中提取出會話ID,并把該請求與相應的會話關聯(lián)起來,然后在訪問會話數(shù)據(jù)的時候,JSP頁面所進行的處理方式就和使用cookie跟蹤會話id時所使用的方式完全相同。所以sesssion的實現(xiàn)要依靠cookie或URL復寫技術(shù)。

String sessionId = request.getRequestedSessionId();     //獲得sessionId

通過response對象的encodeURL(StringURL)實現(xiàn)URL地值重寫:

<a href="<%=response.encodeURL("index.jsp") %>"> 
    index頁面</a>

該方法會自動判斷客戶端是否支持Cookie。如果客戶端支持Cookie,會將URL原封不動地輸出來。如果客戶端不支持Cookie,則會調(diào)用encodeURL()方法之后會自動將用戶Session的id重寫到URL中。重寫后的輸出可能是這樣的:

a href="index.jsp?jsessionid=0E0C61100AEB06DE6A95EB1CD1DA8158">index頁面</a>

HttpServletResponse接口定義了兩個用于URL重寫的方法:

encodeURL方法,用于超鏈接和form表單的action屬性中設置的URL進行重寫

encodeRedirectURL 方法 用于對傳遞給HttpServletResponse.sendRedirect()方法的URL進行重寫

他們根據(jù)請求消息中是否含有Cookie頭字段來決定是否進行url重寫。把URL作為參數(shù)傳遞給這兩個方法,他們就能完成url重寫,在url后面添加 jsessionid參數(shù)及其值??梢躁P閉瀏覽器的Cookie,然后,進行實驗,在網(wǎng)頁源文件中查看URL后面是否有jsessionid參數(shù)及其值。

感謝各位的閱讀!關于jsp/servlet會話是什么意思就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

名稱欄目:jsp/servlet會話是什么意思-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://muchs.cn/article44/dcpsee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、品牌網(wǎng)站設計網(wǎng)站收錄、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設