一.get和post請(qǐng)求:
1.get請(qǐng)求:
a.哪一些情況下鸽凶,瀏覽器會(huì)發(fā)送get請(qǐng)求?
a1.在瀏覽器地址欄,直接輸入某個(gè)地址建峭。
a2.點(diǎn)擊鏈接玻侥。
a3.表單默認(rèn)的提交方式。
b.特點(diǎn)
b1.請(qǐng)求參數(shù)添加到了請(qǐng)求資源路徑的后面迹缀,只能提交少量的數(shù)據(jù)使碾。
注:
請(qǐng)求行只能存放約2k左右的數(shù)據(jù)。
b2.請(qǐng)求參數(shù)會(huì)顯示在瀏覽器地址欄祝懂,不安全训枢。
注:
有一些網(wǎng)絡(luò)設(shè)備瑟蜈,比如路由器荐绝,會(huì)記錄請(qǐng)求地址故源。
2.get請(qǐng)求:
a.哪一些情況下誉结,瀏覽器會(huì)發(fā)送get請(qǐng)求?
a1.在瀏覽器地址欄查刻,直接輸入某個(gè)地址圣贸。
a2.點(diǎn)擊鏈接限次。
a3.表單默認(rèn)的提交方式隔躲。
b.特點(diǎn)
b1.請(qǐng)求參數(shù)添加到了請(qǐng)求資源路徑的后面摩梧,只能提交少量的數(shù)據(jù)。
注:
請(qǐng)求行只能存放約2k左右的數(shù)據(jù)宣旱。
b2.請(qǐng)求參數(shù)會(huì)顯示在瀏覽器地址欄仅父,不安全。
注:
有一些網(wǎng)絡(luò)設(shè)備,比如路由器笙纤,會(huì)記錄請(qǐng)求地址耗溜。
二.轉(zhuǎn)發(fā)和重定向的區(qū)別:
重定向:
response.sendRedirect(String url);
轉(zhuǎn)發(fā):
1.綁訂數(shù)據(jù)到request對(duì)象上。
request.setAttribute(String name,Object obj);
2.獲得轉(zhuǎn)發(fā)器省容。
RequestDispatcher rd = request.getRequestDispatcher(String uri);
3.轉(zhuǎn)發(fā)
rd.forward(request,response);
a. 能否共享request?
轉(zhuǎn)發(fā)可以抖拴,而重定向不行?注:
當(dāng)容器收到請(qǐng)求,會(huì)立即創(chuàng)建request和response,當(dāng)
響應(yīng)發(fā)送完畢腥椒,容器會(huì)立即銷毀這兩個(gè)對(duì)象阿宅。也就是說(shuō),
request和response的生存時(shí)間是一次請(qǐng)求與響應(yīng)期間
存在笼蛛。
b.瀏覽器地址欄的地址有無(wú)變化?
轉(zhuǎn)發(fā)之后家夺,瀏覽器地址欄的地址不變。重定向有變化伐弹。
c.地址有無(wú)限制?
轉(zhuǎn)發(fā)地址有限制拉馋,重定向沒(méi)有限制。
三.servlet生命周期:
1.實(shí)例化
2.初始化
3.就緒
4.銷毀
四.request和reaponse:
通過(guò)Request對(duì)象可以在服務(wù)器端獲取客戶端發(fā)送的請(qǐng)求數(shù)據(jù)內(nèi)容惨好。
通過(guò)Response對(duì)象可以生成服務(wù)器端向客戶端響應(yīng)的數(shù)據(jù)內(nèi)容煌茴。
五.Servlet中文處理:
request.setCharacterEncoding("utf-8");//瀏覽器請(qǐng)求
response.setContentType("text/html;charset=utf-8");//服務(wù)器響應(yīng)
六.路徑問(wèn)題:
相對(duì)路徑:不以"/"開頭的路徑。
絕對(duì)路徑:鏈接日川、表單提交蔓腐、重定向從應(yīng)用名開始寫;轉(zhuǎn)發(fā)從應(yīng)用名之后開始寫龄句。String request.getContextPath()來(lái)獲得實(shí)際部署時(shí)的應(yīng)用名回论。
七.綁定數(shù)據(jù):
request、session分歇、Servlet上下文都提供了綁訂數(shù)據(jù)
相關(guān)的方法傀蓉,區(qū)別如下:
a.綁訂到這三個(gè)對(duì)象上的數(shù)據(jù)的生存時(shí)間是不一樣的。
request < session < Servlet上下文职抡。
注:
在滿足使用條件的情況下葬燎,優(yōu)先使用生命周期短的。
八.cookie:
1.在添加cookie時(shí)缚甩,使用encode方法來(lái)編碼
String URLEncoder.encode(String str,String charset);
在讀取cookie時(shí)谱净,使用decode方法來(lái)解碼
String URLDecoder.decode(String str,String charset);
2.a.cookie可以被用戶禁止。
b.cookie不安全擅威。
對(duì)于敏感數(shù)據(jù)壕探,一定要加密處理。
c.cookie只能存放少量數(shù)據(jù)郊丛。
大約4k左右李请。
d.cookie的數(shù)量也有限制瞧筛。
大約幾百個(gè)。
e.cookie只能存放字符串捻艳。
3.
session的工作原理就是依靠cookie來(lái)做支撐驾窟,第一次使用request.getSession()時(shí)session被創(chuàng)建,并且會(huì)為該session創(chuàng)建一個(gè)獨(dú)一無(wú)二的sessionid存放到cookie中认轨,然后發(fā)送會(huì)瀏覽器端绅络,瀏覽器端每次請(qǐng)求時(shí),都會(huì)帶著這個(gè)sessionid嘁字,服務(wù)器就會(huì)認(rèn)識(shí)該sessionid恩急,知道了sessionid就找得到哪個(gè)session。以此來(lái)達(dá)到共享數(shù)據(jù)的目的纪蜒。 這里需要注意的是衷恭,session不會(huì)隨著瀏覽器的關(guān)閉而死亡,而是等待超時(shí)時(shí)間纯续。
九.九大內(nèi)置對(duì)象:
- request
該對(duì)象代表了客戶端的請(qǐng)求信息随珠,主要用于接受通過(guò)HTTP協(xié)議傳送到服務(wù)器的數(shù)(包括頭信息、系統(tǒng)信息猬错、請(qǐng)求方式以及請(qǐng)求參數(shù)等)窗看。
request對(duì)象的作用域?yàn)橐淮握?qǐng)求。
2)response
response 代表的是對(duì)客戶端的響應(yīng)倦炒,主要是將JSP容器處理過(guò)的對(duì)象傳回到客戶端显沈。
response對(duì)象也具有作用域,它只在JSP頁(yè)面內(nèi)有效逢唤。
3)session
session 對(duì)象是由服務(wù)器自動(dòng)創(chuàng)建的與用戶請(qǐng)求相關(guān)的對(duì)象拉讯。服務(wù)器為每個(gè)用戶都生成一個(gè)session對(duì)象,用于保存該用戶的信息鳖藕,跟蹤用戶的操作狀態(tài)魔慷。session對(duì)象內(nèi)部使用Map類來(lái)保存數(shù)據(jù),因此保存數(shù)據(jù)的格式為 “Key/value”吊奢。 session對(duì)象的value可以使復(fù)雜的對(duì)象類型盖彭,而不僅僅局限于字符串類型。
4)application
application 對(duì)象可將信息保存在服務(wù)器中页滚,直到服務(wù)器關(guān)閉,否則application對(duì)象中保存的信息會(huì)在整個(gè)應(yīng)用中都有效铺呵。與session對(duì)象相比裹驰,application對(duì)象生命周期更長(zhǎng),類似于系統(tǒng)的“全局變量”片挂。
5)out
out 對(duì)象用于在Web瀏覽器內(nèi)輸出信息幻林,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)贞盯。在使用 out 對(duì)象輸出數(shù)據(jù)時(shí),可以對(duì)數(shù)據(jù)緩沖區(qū)進(jìn)行操作沪饺,及時(shí)清除緩沖區(qū)中的殘余數(shù)據(jù)躏敢,為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后整葡,要及時(shí)關(guān)閉輸出流件余。
6)pageContext
pageContext 對(duì)象的作用是取得任何范圍的參數(shù),通過(guò)它可以獲取 JSP頁(yè)面的out遭居、request啼器、reponse、session俱萍、application 等對(duì)象端壳。pageContext對(duì)象的創(chuàng)建和初始化都是由容器來(lái)完成的,在JSP頁(yè)面中可以直接使用 pageContext對(duì)象枪蘑。
7)config
config 對(duì)象的主要作用是取得服務(wù)器的配置信息损谦。通過(guò) pageConext對(duì)象的 getServletConfig() 方法可以獲取一個(gè)config對(duì)象。當(dāng)一個(gè)Servlet 初始化時(shí)岳颇,容器把某些信息通過(guò) config對(duì)象傳遞給這個(gè) Servlet照捡。 開發(fā)者可以在web.xml 文件中為應(yīng)用程序環(huán)境中的Servlet程序和JSP頁(yè)面提供初始化參數(shù)。
8)page
page 對(duì)象代表JSP本身赦役,只有在JSP頁(yè)面內(nèi)才是合法的麻敌。 page隱含對(duì)象本質(zhì)上包含當(dāng)前 Servlet接口引用的變量,類似于Java編程中的 this 指針掂摔。
9)exception
exception 對(duì)象的作用是顯示異常信息术羔,只有在包含 isErrorPage="true" 的頁(yè)面中才可以被使用,在一般的JSP頁(yè)面中使用該對(duì)象將無(wú)法編譯JSP文件乙漓。excepation對(duì)象和Java的所有對(duì)象一樣级历,都具有系統(tǒng)提供的繼承結(jié)構(gòu)。exception 對(duì)象幾乎定義了所有異常情況叭披。在Java程序中寥殖,可以使用try/catch關(guān)鍵字來(lái)處理異常情況; 如果在JSP頁(yè)面中出現(xiàn)沒(méi)有捕獲到的異常涩蜘,就會(huì)生成 exception 對(duì)象嚼贡,并把 exception 對(duì)象傳送到在page指令中設(shè)定的錯(cuò)誤頁(yè)面中,然后在錯(cuò)誤頁(yè)面中處理相應(yīng)的 exception 對(duì)象同诫。