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

下載本文檔

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

文檔簡介

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

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

//會話中存放登錄信息

session.setAttribute("LOGINED_USER",loginedUser);

//轉(zhuǎn)到后臺首頁

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

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

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

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

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

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

<%//從數(shù)據(jù)庫中獲取電影分類,并逐行顯示TypeDAOtypeDAO=newTypeDAOImpl();//創(chuàng)建電影分類數(shù)據(jù)庫訪問類對象Listlist=typeDAO.search();//查詢電影分類列表//循環(huán)遍歷電影分類列表在頁面顯示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ù):電影分類的ID根據(jù)分類瀏覽電影列表moviesList.jsp根據(jù)分類的ID,顯示對應(yīng)的電影列表<%

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

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

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的請求參數(shù):得到分類ID根據(jù)分類瀏覽電影列表四個作用域通信對象的區(qū)別四個作用域計(jì)數(shù)結(jié)果如圖所示。四個作用域通信對象的區(qū)別得出結(jié)論:1. pageContext里的變量沒法從scope1.jsp傳遞到scope2.jsp。頁面跳轉(zhuǎn),變量就不見了。2. request里的變量可以跨越forward

溫馨提示

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

最新文檔

評論

0/150

提交評論