HttpServetlResponse
設(shè)置Http狀態(tài)碼:
setStatus(intcode);
設(shè)置Http響應(yīng)頭:
setHeader(headername,value);getHeader(headername)getHeaders()
設(shè)置響應(yīng)內(nèi)容類型:
response.setContentType(text/html);
--text/xml、image/gif、image/jpeg
設(shè)置Http消息體(出現(xiàn)在設(shè)置響應(yīng)內(nèi)容之后):
文本字符:PrintWriterout=response.getWriter();
二進制流:ServletOutputStream(extendsOutputStream)out=
response.getOutputStream();
設(shè)置字符編碼集(處理中文亂碼),要求出現(xiàn)在得到請求數(shù)據(jù)和響應(yīng)內(nèi)容的前面
客戶端重定向原理(302響應(yīng)嗎)及特點:
HttpServletResponse-----sendRedirect(url);
HttpServetRequest
得到請求行:getMethod()......
得到請求頭:getHeader(headername)、getHeaders()獲取瀏覽器信息getHeader(User-Agent);
得到請求參數(shù):getParameter(param)、getParameters(param)
服務(wù)器端轉(zhuǎn)發(fā):得到RequestDispatcher的方式有哪些?
request.getRequestDispatcher();
servletContext.getRequestDispatcher(/xxxx);
servletContext.getNamedServlet(serlvet-name);
forward(request,response)與include(request,response)的區(qū)別
forward方法是把請求的內(nèi)容轉(zhuǎn)發(fā)到另外的一個servlet/jsp.
include是把另一個servlet/jsp處理過后的內(nèi)容拿過來與此時servlet的內(nèi)容一同輸出.
轉(zhuǎn)發(fā)與客戶端重定向的區(qū)別?
重定向:以前的request中存放的變量全部失效,并進入一個新的request作用域。
轉(zhuǎn)發(fā):以前的request中存放的變量不會失效,就像把兩個頁面拼到了一起。
請求范圍:HttpServletRequest、ServletContext的范圍區(qū)別
setAttribute(Stringkey,Objectvalue);Objectobj=getAttribute(Stringkey);removeAttribute(Stringkey);
contenxt-param
param-name/param-name
param-value/param-value
/contenxt-param
Web應(yīng)用程序狀態(tài)管理方式:
隱藏字段、Cookie、HttpSession、URL重寫
為什么需要狀態(tài)管理?
根本原因是由于Http協(xié)議是無狀態(tài)的造成的
什么是Cookie?原理?如何使用?
Cookie原理:
ession是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務(wù)器端,通過SessionID來區(qū)分不同的客戶,session是以Cookie或URL重寫為基礎(chǔ)。默認使用Cookie來實現(xiàn),系統(tǒng)會創(chuàng)造一個名為JSESSIONID的輸出Cookie,或稱為SessionCookie,以區(qū)別PersistentCookies(通常所說的Cookie).SessionCookie是存儲在瀏覽器中,并不是寫在硬盤上的,但是把瀏覽器的Cookie禁止后,使用response對象的encodeURL或encodeRedirectURL方法編碼URL,WEB服務(wù)器會采URL重寫的方式傳遞Sessionid,用戶就可以在地址欄看到j(luò)sessionid=A09JHGHKHU68624309UTY84932之類的字符串。
通常SessionCookie是不能跨窗口使用,當用戶新開了一個瀏覽器進入相同的頁面時,系統(tǒng)會賦予用戶一個新的SessionID,這樣信息共享的目的就達不到,此時可以把SessionID保存在PersistentCookie中,然后再新的窗口中讀出來,就可以得到上一個窗口的SessionID了,這樣通過SessionCookie和PersistentCookie的結(jié)合,實現(xiàn)了跨窗口的會話跟蹤。
Cookie和會話狀態(tài)
什么是Cookie?
Cookie是一小段文本信息,伴隨著用戶請求和頁面在Web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問站點時,Web應(yīng)用程序都可以讀取Cookie包含的信息。Cookie的基本工作原理如果用戶再次訪問站點上的頁面,當該用戶輸入URLwww.*****.com時,瀏覽器就會在本地硬盤上查找與該URL相關(guān)聯(lián)的Cookie。如果該Cookie存在,瀏覽器就將它與頁面請求一起發(fā)送到您的站點。
Cookie有哪些用途?
最根本的用途是:Cookie能夠幫助Web站點保存有關(guān)訪問者的信息。更概括地說,Cookie是一種保持Web應(yīng)用程序連續(xù)性(即執(zhí)行“狀態(tài)管理”)的方法.使Web站點記住您.
什么是會話Session?
當用戶訪問您的站點時,服務(wù)器會為該用戶創(chuàng)建唯一的會話,會話將一直延續(xù)到用戶訪問結(jié)束。
session的工作原理
就session的實現(xiàn)而言,好像是這樣的:
(1)當有Session啟動時,服務(wù)器生成一個唯一值,稱為SessionID(好像是通過取進程ID的方式取得的)。
(2)然后,服務(wù)器開辟一塊內(nèi)存,對應(yīng)于該SessionID。
(3)服務(wù)器再將該SessionID寫入瀏覽器的cookie(一些在網(wǎng)頁的源代碼中有所體現(xiàn))。
(4)服務(wù)器內(nèi)有一進程,監(jiān)視所有Session的活動狀況,如果有Session超時或是主動關(guān)閉,服務(wù)器就釋放該內(nèi)存塊。
(5)當瀏覽器連入IIS(服務(wù)器)時并請求的ASP(腳本語言)內(nèi)用到Session時,IIS(服務(wù)器)就讀瀏覽器Cookie中的SessionID。
(6)然后,服務(wù)檢查該SessionID所對應(yīng)的內(nèi)存是否有效。
(7)如果有效,就讀出內(nèi)存中的值。
(8)如果無效,就建立新的Session。
注意:
(1)在大瀏覽量的網(wǎng)站,Session并不保險,我們過去的網(wǎng)站就經(jīng)常碰到存在Session中得值不正確(可能出現(xiàn)重復(fù)的SessionID)。
(2)SessionID不能從硬盤上的Cookie文件獲得,如果想在客戶端獲知自己的SessionID,只能通過Javascrīpt來讀取。
會話失效的三種情況(服務(wù)器重啟/關(guān)閉、會話超時(-1永不失效)、invalidate())
設(shè)置鍵值對setAttribute(key,value);Objectobj=getAttribute(key);
為什么需要URL重寫?
Stringstr=HttpServletResponse.encodeURL(Stringurl);url;jsessionid=sessionid
對于搜索引擎而言,在主觀上對靜態(tài)頁面和動態(tài)頁面并沒有特殊的好惡,只是很多動態(tài)頁面的參數(shù)機制不利于搜索引擎收錄,而靜態(tài)頁面更容易收錄而已。此外,頁面靜態(tài)化在一定程度上也提高了頁面訪問速度和系統(tǒng)性能及穩(wěn)定性—-這使得在搜索引擎優(yōu)化上面,為使得效果更加明顯,問題簡單快速解決,大家對站點的靜態(tài)化非常的看重。
URL應(yīng)當是用戶友好的;
URL應(yīng)當是可讀的;
URL應(yīng)當是可預(yù)測的;
URL應(yīng)當是統(tǒng)一的;
URL面向搜索引擎是友好的;
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |