




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
作用域通信對象本講案例增加訪問控制。增加已訪問人數(shù)統(tǒng)計。根據(jù)分類瀏覽電影列表。本講目標掌握JSP作用域通信對象的用法pageContext對象request對象session對象application對象掌握使用超鏈接傳遞參數(shù)作用域通信對象對象的生命周期和可訪問性,稱為作用域(scope)。作用域:page、request、session和application作用域通信對象:pageContext、request、session、application4個通信對象的常用的方法:publicvoidsetAttribute(Stringname,Objectvalue)。publicObjectgetAttribute(Stringname)。上網時遇到的訪問控制系統(tǒng)如何判斷用戶已經登錄?點擊立即下載,轉到登錄頁面如何實現(xiàn)訪問控制系統(tǒng)如何保存不同用戶的登錄信息?JSP會話跟蹤機制,可以保存用戶的會話信息,即不同用戶保存不同的數(shù)據(jù)12用戶登錄進注冊頁面保存該用戶的登錄信息進入訪問的頁面是否注冊用戶否是訪問某頁面進入登錄頁面進入該頁面是否保存了該用戶登錄信息否是問題流程圖會話跟蹤請求1響應1請求n…………..服務器將唯一的會話對象和會話ID
分配給客戶端以跟蹤用戶響應nWeb應用服務器Session對象瀏覽器關閉,本次會話結束session是隱式對象,與瀏覽器一一對應,允許用戶存取會話狀態(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中保存登錄信息,并轉到后臺首頁后臺首頁(index.jsp)1、從session中提取該用戶信息2、如果存在,顯示首頁3、如果不存在,跳轉到登錄頁面已注冊123無登錄信息1、表users,存用戶名、密碼2、數(shù)據(jù)庫訪問類,包含doLogin方法驗證登錄3、登錄頁面(login.jsp)4、處理頁面(doLogin.jsp)<%//登錄驗證UsersloginedUser=null;UsersDAOusersDAO=newUsersDAOImpl();loginedUser=usersDAO.doLogin(userName,passWord);if(loginedUser!=null){//已注冊
//會話中存放登錄信息
session.setAttribute("LOGINED_USER",loginedUser);
//轉到后臺首頁
response.sendRedirect(path+"/admin/admin.jsp");}else{
//轉到后臺登錄
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");}%>不存在登錄信息,轉登錄頁面增加訪問控制測試,步驟如下:1、輸入URL,訪問后臺頁面2、通過登錄頁面進入頁面3、重開一個窗口,訪問后臺頁面每個步驟發(fā)生什么結果?為什么?增加訪問控制問題使用include指令許多頁面需加入訪問控制代碼。如何避免冗余代碼?代碼寫入單獨的JSP,通過include指令引用,降低代碼冗余,便于修改共性內容提問使用include指令創(chuàng)建驗證文件checkSession.jspadmin.jsp引用驗證文件<%@pageimport=".systop.jspt06.entity.Users"pageEncoding="UTF-8"%><%//如果會話中不存在登錄信息,轉到登錄頁面Usersuser=(Users)session.getAttribute("LOGINED_USER");if(user==null){response.sendRedirect(request.getContextPath()+"/admin/login.jsp");}%><%@includefile="checkSession.jsp
"%>小結登錄頁面login.html處理登錄頁面doLogin.jsp如果用戶名為admin,把用戶名存儲在session中,轉入index.jsp否則轉入login.html頁面admin.jsp如果session中沒有該用戶信息,轉入login.html否則顯示歡迎信息試一試為電影銷售系統(tǒng)增加已訪問人數(shù)統(tǒng)計升級系統(tǒng),增加已訪問人數(shù)統(tǒng)計功能,要求如下:點擊已訪問人數(shù)統(tǒng)計:顯示已訪問人數(shù),以及訪問者的登錄名稱登錄處理頁面(doLogin.jsp)1、在session中保存該用戶信息2、在全局范圍內保存該用戶信息1243增加訪問人數(shù)統(tǒng)計修改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");}
更新全局范圍內訪問者列表從全局范圍內取出原有的訪問者列表增加已訪問人數(shù)統(tǒng)計左導航頁面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");%>已經有<%=loginedUsers.size()%>人訪問過本網站!<br><br>他們是:<br><%
for(inti=0;i<loginedUsers.size();i++){ UsersloginedUser=(User)loginedUsers.get(i); out.print(loginedUser.getUserName()); out.print("<br/>");}%>
從全局范圍內取值逐行顯示每個訪問者測試已訪問人數(shù)統(tǒng)計:1、通過登錄進入系統(tǒng),查看人數(shù)統(tǒng)計2、重開一個窗口,用不同的用戶登入系統(tǒng),查看人數(shù)統(tǒng)計每個步驟發(fā)生什么結果?為什么?增加已訪問人數(shù)統(tǒng)計問題application對象application類似于“全局變量”,實現(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ù)分類瀏覽電影列表要求:前臺首頁顯示電影分類點擊電影分類顯示電影列表“動作”對應的超鏈接“動作”類的電影列表點擊“動作”前臺頁面(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,顯示對應的電影列表<%
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ū)別四個作用域計數(shù)結果如圖所示。四個作用域通信對象的區(qū)別得出結論:1. pageContext里的變量沒法從scope1.jsp傳遞到scope2.jsp。頁面跳轉,變量就不見了。2. request里的變量可以跨越forward
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)互聯(lián)網平臺霧計算協(xié)同機制在智能工廠生產效率評估中的應用報告001
- 2025年新能源商用車輛在快遞分揀中心的運用與市場需求報告
- 綠色供應鏈管理在軌道交通制造業(yè)的應用與綠色生產2025年行業(yè)洞察報告
- 市場代理分銷協(xié)議及補充協(xié)議說明
- 我的語文老師:一位影響深遠的人像作文13篇范文
- 森林童話故事創(chuàng)作6篇
- 寵物醫(yī)療健康合作協(xié)議
- 軟件企業(yè)軟件產品創(chuàng)新開發(fā)流程設計
- 化工工藝流程及操作原理試題集
- 論生活態(tài)度的議論文11篇范文
- 《外科醫(yī)學病歷書寫》課件
- 意外險采購服務投標方案
- 異常子宮出血護理查房
- DL-T 5861-2023 電化學儲能電站初步設計內容深度規(guī)定
- 二手車鑒定評估報告書(范本)
- 深圳市房地產登記申請表
- 淺談小班幼兒進餐問題及良好用餐習慣的養(yǎng)成
- 中華人民共和國漁撈日志
- 牛津自然拼讀
- 單位政審證明
- 員工宿舍衛(wèi)生評比方案
評論
0/150
提交評論