cookie session 表單登錄 Ajax登錄

cookie

客戶端的緩存技術(shù)泛释,瀏覽器技術(shù)

作用:

提高網(wǎng)頁效率腊嗡,減輕服務器的負載

Cookie的創(chuàng)建和發(fā)送

Cookie的創(chuàng)建和發(fā)送

Cookie的創(chuàng)建

Cookie cookie=new Cookie("名稱"洽沟,"值")

Cookie的發(fā)送:

resp.addCookie(cookie)

Cookie到期時間的設置

到期時間疫萤,用來指定該cookie何時失效草穆。默認為當前瀏覽器關(guān)閉即失效

大于0的整數(shù)

表示cookie存活指定的秒數(shù)

小于0的整數(shù)

表示不存儲戚揭,默認關(guān)閉瀏覽器失效

0

表示刪除

獲取Cookie的值

req.getCookies();

設置到期時間:

Cookie對象名.setMaxAge();.

Cookie的注意點:

1、cookie不跨電腦和瀏覽器

2儒搭、cookie設置中文問題

Cookie中不能出現(xiàn)中文吠架,如果有中文則通過URLEncoder.encode()來進行編碼

獲取時通過URLDecoder.decode()來進行解碼

Cookie的覆蓋

在相同的domain和path下,如果出現(xiàn)相同的name的cookie對象搂鲫,后面的cookie對象會將前面的覆蓋

Cookie的路徑

1傍药、cookie.setPath("/");當前服務器下,所有的資源都可以獲得Cookie

2魂仍、在相同的domain下拐辽,只有訪問資源的路徑中包含cookie設置的path值,才能訪問到cookie對象


session

session是一次會話蓄诽,在會話中可以存在多次請求

1薛训、創(chuàng)建|獲取session對象(當訪問資源時,會先判斷session對象是否存在仑氛,存在,則獲取闸英,或者創(chuàng)建)

HttpSession session=req.getSession();

2锯岖、會話標識符

session.isNew();

3、是否為新的會話

session.isNew();

4甫何、創(chuàng)建的時間

session.getCreationTime();

5出吹、最后的訪問時間

session.getLastAccessedTime();

Session域?qū)ο?/p>

Session用來表示一次會話,在一次會話中數(shù)據(jù)是可以共享的辙喂,這是session作為域?qū)ο蟠嬖?/p>

通過setAttribute(name,value)方法向域?qū)ο笾刑砑訑?shù)據(jù)

通過getAttribute(name)方法從域?qū)ο笾蝎@取數(shù)據(jù)

通過removeAttribute(name)方法從域?qū)ο笾幸瞥鰯?shù)據(jù)

session的銷毀

1捶牢、默認到期時間

當最大不活動時間到達默認到期時間鸠珠,session會銷毀

在服務器規(guī)定時間內(nèi)沒有任何有效的操作,session對象就會銷毀

Tomcat服務器默認時間是30分鐘秋麸。單位是分鐘

可以修改默認的時間:

Tomcat下的web渐排。xml目錄中

<session-config>

<session-timeout></session-timeout>

</session-config>

2、自己設置到期時間

通過session.setMaxInactiveINterval(int)方法來設置session最大活動時間灸蟆,單位為秒

通過session.getMaxInactiveINterval(int)方法來獲取最大不活動時間

3驯耻、默認關(guān)閉瀏覽器即失效

session底層依賴cookie;默認關(guān)閉瀏覽器即失效

4炒考、關(guān)閉服務器(非正常關(guān)閉)

當非正常關(guān)閉服務器時可缚,session 銷毀;

當正常關(guān)閉服務器時斋枢,Session 將被序列化 到磁盤上帘靡,在工作空間 work 目錄下的 SESSION.ser 文件中,下次啟動服務時瓤帚,自動加 載到內(nèi)存

5测柠、手動銷毀

session.invalidate()方法;

ServletContext 對象,又稱 Application 對象

作用:

1、作為域?qū)ο笥脕砉蚕頂?shù)據(jù)缘滥,此時數(shù)據(jù)在整個應用程序中共享

2轰胁、該對象中保存了當前應用程序相關(guān)信息

獲取ServletContext 對象的方法:

1、通過request對象獲取

ServletContext sc =request.getServletContext();

2朝扼、通過session對象獲取

ServletContext sc1=request.getSession().getServletContext();

3赃阀、通過Config對象獲取

ServletContext sc2=getServletConfig().getServletContext();

4、直接獲取

ServletContext sc3=getServletContext();

常用方法:

1擎颖、獲取服務器的版本信息

.getServerInfo()

2榛斯、獲取項目在服務器的真實路徑

.getRealPath("/");

文件上傳

? 需要第三方的jar包的支持。

? commons-fileupload.jar 是文件上傳的核心包

? commons-io.jar 是 filefupload 的依賴包搂捧,同時又是一個工具包驮俗。

? 注:jar包需要放在項目的WEB-INF的lib目錄下,不需要bulid path允跑。

? 核心對象:

DiskFileItemFactory – 設置磁盤空間王凑,保存臨時文件。只是一個工具類

? ServletFileUpload – 文件上傳的核心類聋丝,此類接收 request索烹,并解析

核心方法:

ServletFileUpload.parseRequest(request); – List 解析 request

實現(xiàn)步驟:

1、 創(chuàng)建一個 DiskFileItemFactory 工廠類弱睦,并制定臨時文件和大小

2百姓、 創(chuàng)建 ServletFileUpload 核心類,接收臨時文件况木,做請求的轉(zhuǎn)換

3垒拢、 通過 ServletFileUpload 類轉(zhuǎn)換原始請求旬迹,得到 FileItem 集合

4、 遍歷集合中的各個元素并處理

5求类、 判斷每個元素是否是普通表單項奔垦,如果是則按照普通表單項處理

6、 如果不是普通表單項仑嗅,則是文件宴倍,通過處理的方式進行處理(上傳)

具體步驟:

1、設置請求的編碼(處理POST請求)

2仓技、需要在項目的WebContent目錄下創(chuàng)建兩個文件夾 (upload:文件最終上傳的目錄? temp:臨時目錄)

3鸵贬、得到兩個文件夾的路徑(在服務器下的真實路徑)

4、聲明DiskFileItemFactory工廠類脖捻,用于在指定磁盤上設置一個臨時目錄

5阔逼、聲明ServletFileUpload,接收上面的臨時文件地沮。

6嗜浮、通過ServletFileUpload核心上傳類,解析請求摩疑,返回集合 List<FileItem>

7危融、判斷集合是否為空

8、遍歷集合雷袋,得到集合中每一個元素

9吉殃、判斷元素是否是普通表單,如果是楷怒,按照普通表單項取值

10蛋勺、如果是非普通表單,則為文件上傳

a鸠删、得到文件名抱完,通過判斷和截取得到文靜后綴,生成隨機文件名刃泡,拼接成新的文件名

b巧娱、將文件寫入指定目錄中(upload目錄)

c、刪除臨時文件

文件下載方式:

1捅僵、超鏈接下載

瀏覽器遇到能夠識別的資源會直接顯示家卖,遇到不能識別的資源則會進行下載

download屬性

當a標簽設置download屬性時,點擊鏈接會進行下載庙楚;

download屬性如果沒有設置對應的值,下載時的文件就是下載名趴樱;如果設置過屬性值則下載名為設置的值


表單登錄

前臺:

表單

表單提交地址

表單類型

id屬性值

表單元素

文本框

設置name和id屬性值

密碼框

設置name和id屬性值

普通按鈕

設置id屬性值馒闷,綁定點擊事件

表單校驗

1酪捡、獲取表單元素的值

2、判斷表單元素的值是否為空

如果為空纳账,顯示提示信息

如果不為空逛薇,則提交表單

后臺:

1、獲取前臺傳遞的姓名和密碼? request.getParameter("表單元素的name屬性值");

2疏虫、參數(shù)的非空校驗(姓名和密碼)

如果為空永罚,請求轉(zhuǎn)發(fā)跳轉(zhuǎn)到登錄頁面,并return

3卧秘、通過姓名和密碼去數(shù)據(jù)庫查詢用戶對象呢袱,返回用戶對象(創(chuàng)建JavaBean User類)

JDBC的查詢操作(創(chuàng)建DBUtil工具類)

1、通過DBUtil工具類得到數(shù)據(jù)庫連接

2翅敌、定義sql語句

3羞福、預編譯sql語句

4、設置參數(shù)蚯涮,下標從1開始

5治专、執(zhí)行查詢,返回resultSet結(jié)果集

6遭顶、判斷并分析結(jié)果集

如果查詢到數(shù)據(jù)张峰,將數(shù)據(jù)填充到用戶對象中

7、關(guān)閉資源

8棒旗、返回用戶對象

注:需要將mysql的jar包拷貝到項目的WEB-INF的lib目錄下

4喘批、判斷用戶對象是否為空

如果為空,表示賬號密碼不正確嗦哆,登錄失敗谤祖,請求轉(zhuǎn)發(fā)跳轉(zhuǎn)到登錄頁面,并return

5老速、如果用戶對象不為空

表示登錄成功粥喜,重定向跳轉(zhuǎn)到首頁


Ajax登錄

前臺:

表單元素

文本框

設置id屬性值

密碼框

設置id屬性值

普通按鈕

設置id屬性值,綁定點擊事件

非空校驗

1橘券、獲取表單元素的值

2额湘、判斷表單元素的值是否為空

如果為空,顯示提示信息

如果不為空旁舰,則發(fā)送ajax請求

$.ajax({

type:"post", // 請求類型 GET|POST

url:"loginServlet", // 請求路徑

data:{ // 需要傳遞給后臺的參數(shù)

"uname":uname,

"upwd":upwd

},

success:function(result){ // 回調(diào)函數(shù):用來接收后臺返回的結(jié)果

/*

需要得到數(shù)據(jù):

成功或失敗 1=成功锋华,0=失敗

為什么失敗 ? 字符串:錯誤原因

{

code:0,

msg:"xxx失敗"

}

*/

// 判斷是否登錄成功

if (result.code == 1) { // 登錄成功

// 通過js跳轉(zhuǎn)頁面

window.location.href = "index.html";

} else {

// 登錄失敗

// 設置提示信息

$("#msg").html(result.msg);

}

}

});

后臺:

1、獲取前臺傳遞的參數(shù)

2箭窜、參數(shù)的非空校驗(姓名和密碼)

如果為空毯焕,需要通過輸出流將結(jié)果響應給ajax的回調(diào)函數(shù),并return

3、通過姓名和密碼去數(shù)據(jù)庫查詢用戶對象纳猫,返回用戶對象(創(chuàng)建JavaBean User類)

JDBC的查詢操作(創(chuàng)建DBUtil工具類)

1婆咸、通過DBUtil工具類得到數(shù)據(jù)庫連接

2、定義sql語句

3芜辕、預編譯sql語句

4尚骄、設置參數(shù),下標從1開始

5侵续、執(zhí)行查詢倔丈,返回resultSet結(jié)果集

6、判斷并分析結(jié)果集

如果查詢到數(shù)據(jù)状蜗,將數(shù)據(jù)填充到用戶對象中

7需五、關(guān)閉資源

8、返回用戶對象

注:需要將mysql的jar包拷貝到項目的WEB-INF的lib目錄下

4诗舰、判斷用戶對象是否為空

如果為空警儒,需要通過輸出流將結(jié)果響應給ajax的回調(diào)函數(shù),并return

5眶根、如果用戶對象不為空

表示登錄成功蜀铲,需要通過輸出流將結(jié)果響應給ajax的回調(diào)函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市属百,隨后出現(xiàn)的幾起案子记劝,更是在濱河造成了極大的恐慌,老刑警劉巖族扰,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厌丑,死亡現(xiàn)場離奇詭異,居然都是意外死亡渔呵,警方通過查閱死者的電腦和手機怒竿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扩氢,“玉大人耕驰,你說我怎么就攤上這事÷疾颍” “怎么了朦肘?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長双饥。 經(jīng)常有香客問我媒抠,道長,這世上最難降的妖魔是什么咏花? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任趴生,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冲秽。我一直安慰自己舍咖,他們只是感情好矩父,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布锉桑。 她就那樣靜靜地躺著,像睡著了一般窍株。 火紅的嫁衣襯著肌膚如雪民轴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天球订,我揣著相機與錄音后裸,去河邊找鬼。 笑死冒滩,一個胖子當著我的面吹牛微驶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播开睡,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼因苹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篇恒?” 一聲冷哼從身側(cè)響起扶檐,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胁艰,沒想到半個月后款筑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡腾么,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年奈梳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片解虱。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡攘须,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饭寺,到底是詐尸還是另有隱情阻课,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布艰匙,位于F島的核電站限煞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏员凝。R本人自食惡果不足惜署驻,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旺上,春花似錦瓶蚂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至征候,卻和暖如春杭攻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疤坝。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工兆解, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跑揉。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓锅睛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親历谍。 傳聞我的和親對象是個殘疾皇子现拒,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容