Servlet從了解到放棄(05)
VRD項(xiàng)目
準(zhǔn)備工作:
創(chuàng)建工程 名字VRD 把jar改成war
改錯(cuò) 右鍵最長(zhǎng)的點(diǎn)擊最長(zhǎng)的 , 替換工程中的web.xml 從蒼老師文檔服務(wù)器下載Servlet3.0 里面的web.xml 替換掉工程中自動(dòng)生成的web.xml
關(guān)聯(lián)Tomcat 工程上右鍵 Properties 找到TargetedRuntimes 打鉤
把之前工程中用到的jar包坐標(biāo)復(fù)制到新工程 檢查奶瓶是否出現(xiàn)
配置文件jdbc.properties 復(fù)制到新工程
創(chuàng)建四個(gè)包 復(fù)制兩個(gè)工具類到工程中
在終端中創(chuàng)建vrd數(shù)據(jù)庫(kù)
create database vrd character set utf8;
use vrd;
下載code.zip 解壓 把三個(gè)文件夾放到工程webapp下面, 把兩個(gè)頁(yè)面放到工程的resources目錄下面 和jdbc.properties同級(jí)
實(shí)現(xiàn)登錄功能
在vrd數(shù)據(jù)庫(kù)中創(chuàng)建 user表 并且插入測(cè)試數(shù)據(jù)
create table user (id int primary key auto_increment, username varchar(20),
password varchar(20))charset=utf8;
insert into user values(null,‘a(chǎn)dmin’,‘a(chǎn)dmin’);
創(chuàng)建ShowLoginServlet ,留下doGet方法 ,在里面通過THUtils 把login.html頁(yè)面返回給瀏覽器
創(chuàng)建LoginServlet,留下doPost方法,在方法里面先設(shè)置字符集,再獲取傳遞過來的用戶名和密碼, 把用戶名和密碼封裝到User實(shí)體類中(此時(shí)需要先創(chuàng)建User實(shí)體類和UserDao), 創(chuàng)建UserDao 并調(diào)用login方法,把封裝好的user對(duì)象傳遞到方法中,返回值為User對(duì)象 通過User對(duì)象是否為null來判斷是否登錄成功,如果登錄成功重定向到/HomeServlet(還沒寫), 如果登錄失敗 重定向到/ShowLoginServlet
在登錄成功的時(shí)候用Session保存登錄成功的User對(duì)象
實(shí)現(xiàn)記住用戶名和密碼, 在登錄成功時(shí)并且判斷是記住用戶名和密碼的時(shí)候把用戶名和密碼保存在cookie中并下發(fā)到瀏覽器
在ShowLoginServlet里面 取出Cookie中保存的用戶名和密碼 放到Context容器里面并顯示到login.html頁(yè)面中
Cookie和Session
為什么使用Cookie和Session?
瀏覽器和服務(wù)器之間數(shù)據(jù)傳輸遵循的是HTTP數(shù)據(jù)傳輸協(xié)議,此協(xié)議屬于無狀態(tài)協(xié)議(一次請(qǐng)求對(duì)應(yīng)一次響應(yīng),服務(wù)器無法跟蹤客戶端的請(qǐng)求),通過Cookie服務(wù)器可以給客戶端設(shè)置一個(gè)標(biāo)識(shí),設(shè)置完之后客戶端之后的請(qǐng)求都會(huì)帶著這個(gè)標(biāo)識(shí),從而識(shí)別客戶端. 但是Cookie由于是明文保存在客戶端的數(shù)據(jù),可以被客戶端偽造造成安全隱患, 這時(shí)Session的產(chǎn)生解決了此問題,Session基于Cookie實(shí)現(xiàn),但是數(shù)據(jù)保存在了服務(wù)器端,這樣保存的數(shù)據(jù)就不能被偽造從而提高了安全性
作用: Cookie和Session都是為了實(shí)現(xiàn)多個(gè)Servlet之間共享數(shù)據(jù)而存在的
Cookie:數(shù)據(jù)保存在客戶端,類似于打孔式的會(huì)員卡,
保存時(shí)間: 默認(rèn)保存在內(nèi)存中瀏覽器關(guān)閉時(shí)就會(huì)被刪除,如果設(shè)置了保存時(shí)間,數(shù)據(jù)會(huì)保存到磁盤中,時(shí)間到了后再銷毀
保存數(shù)據(jù)大小: cookie保存的數(shù)據(jù)不能超過4k
只能保存字符串?dāng)?shù)據(jù)
應(yīng)用場(chǎng)景: 長(zhǎng)時(shí)間保存的數(shù)據(jù)
Session:數(shù)據(jù)保存在服務(wù)器,類似于銀行卡
Session保存時(shí)間為半個(gè)小時(shí), 這個(gè)時(shí)間可以修改但不建議,因?yàn)镾ession對(duì)象保存在服務(wù)器中會(huì)占用資源,Session不建議數(shù)據(jù)存儲(chǔ)時(shí)間太久,而且Session的工作原理基于Cookie,在Cookie中保存了sessionId,并且是在內(nèi)存中保存,瀏覽器關(guān)閉時(shí)sessionId就刪除.
保存數(shù)據(jù)大小:沒有限制
可以保存任意對(duì)象
應(yīng)用場(chǎng)景: 記錄登錄狀態(tài)
3. 實(shí)現(xiàn)首頁(yè)頁(yè)面顯示
創(chuàng)建home.html頁(yè)面 創(chuàng)建HomeServlet 留下doGet方法 方法中 顯示home.html頁(yè)面
在終端中創(chuàng)建tag表并添加數(shù)據(jù)
create table tag(id int primary key auto_increment,name varchar(10))charset=utf8;
insert into tag(name) values(‘手繪’),(‘次時(shí)代’),(‘雕刻’),(‘室內(nèi)設(shè)計(jì)’),(‘產(chǎn)品設(shè)計(jì)’),(‘地圖編輯’);
創(chuàng)建Tag實(shí)體類 有id和name屬性 生成各種方法 , 創(chuàng)建TagDao ,在HomeServlet的doGet方法中創(chuàng)建TagDao 并調(diào)用里面的findAll方法 返回值是名為tags的List集合里面裝的是Tag對(duì)象,把tags裝進(jìn)Context中
在home.html頁(yè)面中 取出Context中的數(shù)據(jù)顯示到頁(yè)面中
添加搜索框并且添加各種樣式
搜索框右側(cè)超鏈接, 需要和是否登錄建立關(guān)系 再次使用了th:if屬性
HTML Servlet
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。