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ù)