1死宣、需求:實(shí)現(xiàn)點(diǎn)擊注冊,將頁面數(shù)據(jù)保存到數(shù)據(jù)庫翁脆,成功跳轉(zhuǎn)頁面
? ? 首先設(shè)計頁面----->servlet獲取表單參數(shù)------>設(shè)計數(shù)據(jù)庫
2剩燥、MVC架構(gòu)模式
????V:View:視圖
? ? C:Controller:控制層? ? Servlet進(jìn)行請求和響應(yīng)的處理
? ? M:模型層
? ? ? ? Service層:業(yè)務(wù)處理,事務(wù)處理
? ? ? ? Dao層:提供和數(shù)據(jù)庫交互的功能
? ? ? ? Bean層:提供javaBean類
3阀圾、編寫業(yè)務(wù)邏輯代碼
service層方法的設(shè)計------》實(shí)體類的設(shè)計------》servlet得到的表單值封裝傳遞給service----》dao層設(shè)計哪廓,引出接口實(shí)現(xiàn)類的方式(如果更換數(shù)據(jù)庫,接口不用動初烘,另寫一套實(shí)現(xiàn)即可)
Controller層:
Service層:
Dao層:
javaBean:
4涡真、數(shù)據(jù)校驗(yàn)(用戶名案例,不能為空肾筐,是否重復(fù))锌唾,代碼提取
????Servlet代碼:
? ? Service層代碼:
? ? Dao層代碼:
5瑞眼、頁面跳轉(zhuǎn)
請求轉(zhuǎn)發(fā):
? ? ? ? 路徑不發(fā)生變化白修、毫缆、、
????????可以以“/”開頭唬渗,也可以不用“/”開頭典阵,都是相對于當(dāng)前路徑跳轉(zhuǎn)、镊逝、壮啊、
? ? ? ? 不支持站外跳轉(zhuǎn)
? ? ? ? 整個過程涉及到的是同一個request對象,不產(chǎn)生新的請求對象????
重定向:? ??
? ? ? ? 路徑發(fā)生變化蹋半、他巨、、
????????不能以“/”開頭减江,相對于tomcat服務(wù)器跳轉(zhuǎn)染突、、辈灼、
????????支持站外跳轉(zhuǎn)
? ? ? ? 重新產(chǎn)生一個request份企,當(dāng)前請求對象失效,整個過程涉及2個請求對象
6巡莹、數(shù)據(jù)共享
? ? ? ? 4個共享數(shù)據(jù)的作用域:范圍由大到小
????????????????4-1:ApplicationContext:整個應(yīng)用
? ? ? ? ? ? ? ? 4-2:HttpSession:會話對象
? ? ? ? ? ? ? ? 4-3:HttpServletRequest:請求
? ? ? ? ? ? ? ? ?4-4:PageContext:頁面
? ? ? ? 選擇作用域的原則:盡可能使用作用范圍小的作用域
? ? ? ? ? ?存放數(shù)據(jù):setAttribute("",):第一個參數(shù)是唯一標(biāo)識司志,第二個參數(shù)是具體的值
? ? ? ? ? ? 獲取數(shù)據(jù):getAttribute(""):參數(shù)就是存放數(shù)據(jù)定義的唯一標(biāo)識
舉例將用戶名重復(fù)的消息回顯到頁面上甜紫,HTML做不到,提出JSP技術(shù)
7骂远、JSP技術(shù)
? ? ? ? ? ? JSP的本質(zhì)是Servlet囚霸,
? ? ? ? 執(zhí)行過程:生命周期
? ? ? ? ? ? 1、初始化階段:
? ? ? ? ? ? ? ? ? ? 首先被翻譯成Servlet源文件激才,然后編譯成字節(jié)碼文件拓型,執(zhí)行構(gòu)造方法,執(zhí)行Init方法
? ? ? ? ? ? 2瘸恼、業(yè)務(wù)處理階段:
? ? ? ? ? ? ? ? ? ?執(zhí)行Service方法
? ? ? ? ? ? 3劣挫、銷毀階段:
? ? ? ? ? ? ? ? ? ? 執(zhí)行Destroy方法
8、JSP頁面結(jié)構(gòu)
? ? ? ? 指令(三種? ?page,include,taglib):
? ? ? ? ? ? ? ? 基本語法:<%@? ?指令名稱? 屬性名=“值”??屬性名=“值” %>
? ? ? ? ? ? ? ? 第一種:page指令(設(shè)定頁面相關(guān)屬性信息)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? language:jsp頁面支持的腳本語言东帅,默認(rèn)java压固,,當(dāng)前也只支持java
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?contentType:指定jsp頁面響應(yīng)時的頁面格式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pageEncoding:jsp頁面本身的編碼格式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? import:用來指定導(dǎo)入的包或者類
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? include指令:用來引入另外一個頁面
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? taglib指令:用來引入自定義標(biāo)簽庫
? ? ? ? 腳本元素:
? ? ? ? ? ? ? ? 腳本: <%? 聲明變量////代碼塊? %>
? ? -? ? ? ? ? ? ? ? ? ? ? ? 該部分代碼被翻譯到j(luò)spService方法中靠闭,所以可以聲明變量帐我,可以寫代碼塊
? ? ? ? ? ? ? ? ? ? ? ? ????但是不能聲明方法,因?yàn)檠忠悖琷ava不支持方法的嵌套????
? ? ? ? ? ? ? ? ?聲明:焚刚,<%!? 聲明變量/////方法 %>
? ? ? ? ? ? ? ? 表達(dá)式:<%=? 輸出語句中要寫的表達(dá)式 %>
? ? ? ? HTML元素:? ? ? ??
9、JSP內(nèi)置對象
? ? 9-1:request:請求對象
? ? 9-2:response:響應(yīng)對象
? ? 9-3:out:輸出對象
? ? 9-4:session:會話對象
????9-5:context:整個應(yīng)用程序?qū)ο?/p>
? ? 9-6:pageContext:頁面對象
? ? 9-7:config/page/exception
10扇调、繼續(xù)錯誤信息的顯示功能,將HTML改成JSP
首先把jsp頁面的頭文件拷貝到HTML上邊取抢肛,然后將后綴改成jsp? ??
11狼钮、驗(yàn)證碼實(shí)現(xiàn)
12、自動登錄實(shí)現(xiàn)(Cookie)
????Cookie:存在于瀏覽器中的數(shù)據(jù)對象(不安全)
? ? 步驟一:分析需要在什么時候需要自動登錄捡絮?用戶登錄成功熬芜,然后將用戶名密碼存儲在cookie中
? ? 步驟二:頁面如何處理?剛進(jìn)頁面就需要判斷福稳,不能刷新出頁面涎拉,需要帶標(biāo)志位
步驟三:頁面寫完之后,雖然是自動登錄的圆,同樣需要走后臺查詢數(shù)據(jù)鼓拧,