JSP4隱式對(duì)象之作用域通信對(duì)象_第1頁(yè)
JSP4隱式對(duì)象之作用域通信對(duì)象_第2頁(yè)
JSP4隱式對(duì)象之作用域通信對(duì)象_第3頁(yè)
JSP4隱式對(duì)象之作用域通信對(duì)象_第4頁(yè)
JSP4隱式對(duì)象之作用域通信對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

作用域通信對(duì)象本講案例增加訪問(wèn)控制。增加已訪問(wèn)人數(shù)統(tǒng)計(jì)。根據(jù)分類(lèi)瀏覽電影列表。本講目標(biāo)掌握J(rèn)SP作用域通信對(duì)象的用法pageContext對(duì)象request對(duì)象session對(duì)象application對(duì)象掌握使用超鏈接傳遞參數(shù)作用域通信對(duì)象對(duì)象的生命周期和可訪問(wèn)性,稱(chēng)為作用域(scope)。作用域:page、request、session和application作用域通信對(duì)象:pageContext、request、session、application4個(gè)通信對(duì)象的常用的方法:publicvoidsetAttribute(Stringname,Objectvalue)。publicObjectgetAttribute(Stringname)。上網(wǎng)時(shí)遇到的訪問(wèn)控制系統(tǒng)如何判斷用戶已經(jīng)登錄?點(diǎn)擊立即下載,轉(zhuǎn)到登錄頁(yè)面如何實(shí)現(xiàn)訪問(wèn)控制系統(tǒng)如何保存不同用戶的登錄信息?JSP會(huì)話跟蹤機(jī)制,可以保存用戶的會(huì)話信息,即不同用戶保存不同的數(shù)據(jù)12用戶登錄進(jìn)注冊(cè)頁(yè)面保存該用戶的登錄信息進(jìn)入訪問(wèn)的頁(yè)面是否注冊(cè)用戶否是訪問(wèn)某頁(yè)面進(jìn)入登錄頁(yè)面進(jìn)入該頁(yè)面是否保存了該用戶登錄信息否是問(wèn)題流程圖會(huì)話跟蹤請(qǐng)求1響應(yīng)1請(qǐng)求n…………..服務(wù)器將唯一的會(huì)話對(duì)象和會(huì)話ID

分配給客戶端以跟蹤用戶響應(yīng)nWeb應(yīng)用服務(wù)器Session對(duì)象瀏覽器關(guān)閉,本次會(huì)話結(jié)束session是隱式對(duì)象,與瀏覽器一一對(duì)應(yīng),允許用戶存取會(huì)話狀態(tài)的信息session對(duì)象存儲(chǔ)會(huì)話的所有信息常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將對(duì)象的值存到session中ObjectgetAttribute(Stringkey):根據(jù)名稱(chēng)獲取session中對(duì)象的值session.setAttribute("name","admin");Stringname=(String)session.getAttribute("name");訪問(wèn)控制可否用session完成?為電影銷(xiāo)售系統(tǒng)增加訪問(wèn)控制登錄才能訪問(wèn)后臺(tái)登錄按鈕的處理1、獲取輸入信息2、查詢數(shù)據(jù)庫(kù),判斷是否注冊(cè)3、如果已注冊(cè),session中保存登錄信息,并轉(zhuǎn)到后臺(tái)首頁(yè)后臺(tái)首頁(yè)(index.jsp)1、從session中提取該用戶信息2、如果存在,顯示首頁(yè)3、如果不存在,跳轉(zhuǎn)到登錄頁(yè)面已注冊(cè)123無(wú)登錄信息1、表users,存用戶名、密碼2、數(shù)據(jù)庫(kù)訪問(wèn)類(lèi),包含doLogin方法驗(yàn)證登錄3、登錄頁(yè)面(login.jsp)4、處理頁(yè)面(doLogin.jsp)<%//登錄驗(yàn)證UsersloginedUser=null;UsersDAOusersDAO=newUsersDAOImpl();loginedUser=usersDAO.doLogin(userName,passWord);if(loginedUser!=null){//已注冊(cè)

//會(huì)話中存放登錄信息

session.setAttribute("LOGINED_USER",loginedUser);

//轉(zhuǎn)到后臺(tái)首頁(yè)

response.sendRedirect(path+"/admin/admin.jsp");}else{

//轉(zhuǎn)到后臺(tái)登錄

response.sendRedirect(path+"/admin/login.jsp");}%>session中存放登錄信息增加訪問(wèn)控制后臺(tái)首頁(yè)面(admin.jsp)加入訪問(wèn)控制<%Usersuser=(Users)session.getAttribute("LOGINED_USER");if(user==null){response.sendRedirect(request.getContextPath()+"/admin/login.jsp");}%>不存在登錄信息,轉(zhuǎn)登錄頁(yè)面增加訪問(wèn)控制測(cè)試,步驟如下:1、輸入U(xiǎn)RL,訪問(wèn)后臺(tái)頁(yè)面2、通過(guò)登錄頁(yè)面進(jìn)入頁(yè)面3、重開(kāi)一個(gè)窗口,訪問(wèn)后臺(tái)頁(yè)面每個(gè)步驟發(fā)生什么結(jié)果?為什么?增加訪問(wèn)控制問(wèn)題使用include指令許多頁(yè)面需加入訪問(wèn)控制代碼。如何避免冗余代碼?代碼寫(xiě)入單獨(dú)的JSP,通過(guò)include指令引用,降低代碼冗余,便于修改共性內(nèi)容提問(wèn)使用include指令創(chuàng)建驗(yàn)證文件checkSession.jspadmin.jsp引用驗(yàn)證文件<%@pageimport=".systop.jspt06.entity.Users"pageEncoding="UTF-8"%><%//如果會(huì)話中不存在登錄信息,轉(zhuǎn)到登錄頁(yè)面Usersuser=(Users)session.getAttribute("LOGINED_USER");if(user==null){response.sendRedirect(request.getContextPath()+"/admin/login.jsp");}%><%@includefile="checkSession.jsp

"%>小結(jié)登錄頁(yè)面login.html處理登錄頁(yè)面doLogin.jsp如果用戶名為admin,把用戶名存儲(chǔ)在session中,轉(zhuǎn)入index.jsp否則轉(zhuǎn)入login.html頁(yè)面admin.jsp如果session中沒(méi)有該用戶信息,轉(zhuǎn)入login.html否則顯示歡迎信息試一試為電影銷(xiāo)售系統(tǒng)增加已訪問(wèn)人數(shù)統(tǒng)計(jì)升級(jí)系統(tǒng),增加已訪問(wèn)人數(shù)統(tǒng)計(jì)功能,要求如下:點(diǎn)擊已訪問(wèn)人數(shù)統(tǒng)計(jì):顯示已訪問(wèn)人數(shù),以及訪問(wèn)者的登錄名稱(chēng)登錄處理頁(yè)面(doLogin.jsp)1、在session中保存該用戶信息2、在全局范圍內(nèi)保存該用戶信息1243增加訪問(wèn)人數(shù)統(tǒng)計(jì)修改doLogin.jsp,把已登錄用戶保存在application。if(loginedUser!=null){//已注冊(cè)//存到會(huì)話中session.setAttribute("LOGINED_USER",loginedUser);ListloginedUsers=newArrayList();//定義對(duì)象,存已訪問(wèn)用戶列表//取出已訪問(wèn)用戶列表if(application.getAttribute("LOGINED_USER")!=null){loginedUsers=(List)application.getAttribute("LOGINED_USER");}//新登錄用戶信息存入已訪問(wèn)用戶列表loginedUsers.add(loginedUser);//更新全局范圍中的已訪問(wèn)用戶列表application.setAttribute("LOGINED_USER",loginedUsers);//重定向到后臺(tái)管理首頁(yè)response.sendRedirect(path+"/admin/admin.jsp");}

更新全局范圍內(nèi)訪問(wèn)者列表從全局范圍內(nèi)取出原有的訪問(wèn)者列表增加已訪問(wèn)人數(shù)統(tǒng)計(jì)左導(dǎo)航頁(yè)面left.jsp的創(chuàng)建右邊已訪問(wèn)人數(shù)頁(yè)面countLoginedUsers.jsp的創(chuàng)建。

countLoginedUsers.jsp片斷<%ListloginedUsers=newArrayList();//訪問(wèn)者列表if(application.getAttribute("LOGINED_USER")!=null)loginedUsers=(List)application.getAttribute("LOGINED_USER");%>已經(jīng)有<%=loginedUsers.size()%>人訪問(wèn)過(guò)本網(wǎng)站!<br><br>他們是:<br><%

for(inti=0;i<loginedUsers.size();i++){ UsersloginedUser=(User)loginedUsers.get(i); out.print(loginedUser.getUserName()); out.print("<br/>");}%>

從全局范圍內(nèi)取值逐行顯示每個(gè)訪問(wèn)者測(cè)試已訪問(wèn)人數(shù)統(tǒng)計(jì):1、通過(guò)登錄進(jìn)入系統(tǒng),查看人數(shù)統(tǒng)計(jì)2、重開(kāi)一個(gè)窗口,用不同的用戶登入系統(tǒng),查看人數(shù)統(tǒng)計(jì)每個(gè)步驟發(fā)生什么結(jié)果?為什么?增加已訪問(wèn)人數(shù)統(tǒng)計(jì)問(wèn)題application對(duì)象application類(lèi)似于“全局變量”,實(shí)現(xiàn)用戶間的數(shù)據(jù)共享常用方法:voidsetAttribute(Stringkey,Objectvalue):鍵/值方式ObjectgetAttribute(Stringkey):根據(jù)鍵獲取對(duì)象的值application.setAttribute("LOGINED_USER",newArrayList());if(application.getAttribute("LOGINED_USER")!=null){ListloginedUsers=(List)application.getAttribute("LOGINED_USER");}根據(jù)分類(lèi)瀏覽電影列表要求:前臺(tái)首頁(yè)顯示電影分類(lèi)點(diǎn)擊電影分類(lèi)顯示電影列表“動(dòng)作”對(duì)應(yīng)的超鏈接“動(dòng)作”類(lèi)的電影列表點(diǎn)擊“動(dòng)作”前臺(tái)頁(yè)面(index.jsp)使用DIV把頁(yè)面分為n塊左下欄顯示電影分類(lèi),引用showMoviesType.jsp中下欄顯示電影列表,引用moviesList.jsp中下欄左下欄根據(jù)分類(lèi)瀏覽電影列表showMoviesType.jsp

<%//從數(shù)據(jù)庫(kù)中獲取電影分類(lèi),并逐行顯示TypeDAOtypeDAO=newTypeDAOImpl();//創(chuàng)建電影分類(lèi)數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)對(duì)象Listlist=typeDAO.search();//查詢電影分類(lèi)列表//循環(huán)遍歷電影分類(lèi)列表在頁(yè)面顯示for(inti=0;i<list.size();i++){Typetype=(Type)list.get(i);%>

<imgsrc="images/arr.gif"> <ahref="index.jsp?typeID=<%=type.getTypeID()%>"class="menu">

<%=type.getTypeName()%>

</a><br><br><%

}%>超鏈接中傳遞參數(shù):電影分類(lèi)的ID根據(jù)分類(lèi)瀏覽電影列表moviesList.jsp根據(jù)分類(lèi)的ID,顯示對(duì)應(yīng)的電影列表<%

StringsTypeID=request.getParameter("typeID");if(sTypeID!=null){inttypeID=Integer.parseInt(sTypeID);

//根據(jù)分類(lèi)ID獲取電影列表,暫不分頁(yè)

MoviesDAOmoviesDAO=newMoviesDAOImpl();ListmoviesList=moviesDAO.search(1,typeID);

if(moviesList!=null&&moviesList.size()!=0){

for(inti=0;i<moviesList.size();i++){Moviesmovie=(Movies)moviesList.get(i);%>處理URL的請(qǐng)求參數(shù):得到分類(lèi)ID根據(jù)分類(lèi)瀏覽電影列表四個(gè)作用域通信對(duì)象的區(qū)別四個(gè)作用域計(jì)數(shù)結(jié)果如圖所示。四個(gè)作用域通信對(duì)象的區(qū)別得出結(jié)論:1. pageContext里的變量沒(méi)法從scope1.jsp傳遞到scope2.jsp。頁(yè)面跳轉(zhuǎn),變量就不見(jiàn)了。2. request里的變量可以跨越forward

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論