




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
作用域通信對象本講案例增加訪問控制。增加已訪問人數統計。根據分類瀏覽電影列表。本講目標掌握JSP作用域通信對象的用法pageContext對象request對象session對象application對象掌握使用超鏈接傳遞參數作用域通信對象對象的生命周期和可訪問性,稱為作用域(scope)。作用域:page、request、session和application作用域通信對象:pageContext、request、session、application4個通信對象的常用的方法:publicvoidsetAttribute(Stringname,Objectvalue)。publicObjectgetAttribute(Stringname)。上網時遇到的訪問控制系統如何判斷用戶已經登錄?點擊立即下載,轉到登錄頁面如何實現訪問控制系統如何保存不同用戶的登錄信息?JSP會話跟蹤機制,可以保存用戶的會話信息,即不同用戶保存不同的數據12用戶登錄進注冊頁面保存該用戶的登錄信息進入訪問的頁面是否注冊用戶否是訪問某頁面進入登錄頁面進入該頁面是否保存了該用戶登錄信息否是問題流程圖會話跟蹤請求1響應1請求n…………..服務器將唯一的會話對象和會話ID
分配給客戶端以跟蹤用戶響應nWeb應用服務器Session對象瀏覽器關閉,本次會話結束session是隱式對象,與瀏覽器一一對應,允許用戶存取會話狀態的信息session對象存儲會話的所有信息常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將對象的值存到session中ObjectgetAttribute(Stringkey):根據名稱獲取session中對象的值session.setAttribute("name","admin");Stringname=(String)session.getAttribute("name");訪問控制可否用session完成?為電影銷售系統增加訪問控制登錄才能訪問后臺登錄按鈕的處理1、獲取輸入信息2、查詢數據庫,判斷是否注冊3、如果已注冊,session中保存登錄信息,并轉到后臺首頁后臺首頁(index.jsp)1、從session中提取該用戶信息2、如果存在,顯示首頁3、如果不存在,跳轉到登錄頁面已注冊123無登錄信息1、表users,存用戶名、密碼2、數據庫訪問類,包含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、重開一個窗口,訪問后臺頁面每個步驟發生什么結果?為什么?增加訪問控制問題使用include指令許多頁面需加入訪問控制代碼。如何避免冗余代碼?代碼寫入單獨的JSP,通過include指令引用,降低代碼冗余,便于修改共性內容提問使用include指令創建驗證文件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否則顯示歡迎信息試一試為電影銷售系統增加已訪問人數統計升級系統,增加已訪問人數統計功能,要求如下:點擊已訪問人數統計:顯示已訪問人數,以及訪問者的登錄名稱登錄處理頁面(doLogin.jsp)1、在session中保存該用戶信息2、在全局范圍內保存該用戶信息1243增加訪問人數統計修改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");}
更新全局范圍內訪問者列表從全局范圍內取出原有的訪問者列表增加已訪問人數統計左導航頁面left.jsp的創建右邊已訪問人數頁面countLoginedUsers.jsp的創建。
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/>");}%>
從全局范圍內取值逐行顯示每個訪問者測試已訪問人數統計:1、通過登錄進入系統,查看人數統計2、重開一個窗口,用不同的用戶登入系統,查看人數統計每個步驟發生什么結果?為什么?增加已訪問人數統計問題application對象application類似于“全局變量”,實現用戶間的數據共享常用方法:voidsetAttribute(Stringkey,Objectvalue):鍵/值方式ObjectgetAttribute(Stringkey):根據鍵獲取對象的值application.setAttribute("LOGINED_USER",newArrayList());if(application.getAttribute("LOGINED_USER")!=null){ListloginedUsers=(List)application.getAttribute("LOGINED_USER");}根據分類瀏覽電影列表要求:前臺首頁顯示電影分類點擊電影分類顯示電影列表“動作”對應的超鏈接“動作”類的電影列表點擊“動作”前臺頁面(index.jsp)使用DIV把頁面分為n塊左下欄顯示電影分類,引用showMoviesType.jsp中下欄顯示電影列表,引用moviesList.jsp中下欄左下欄根據分類瀏覽電影列表showMoviesType.jsp
<%//從數據庫中獲取電影分類,并逐行顯示TypeDAOtypeDAO=newTypeDAOImpl();//創建電影分類數據庫訪問類對象Listlist=typeDAO.search();//查詢電影分類列表//循環遍歷電影分類列表在頁面顯示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><%
}%>超鏈接中傳遞參數:電影分類的ID根據分類瀏覽電影列表moviesList.jsp根據分類的ID,顯示對應的電影列表<%
StringsTypeID=request.getParameter("typeID");if(sTypeID!=null){inttypeID=Integer.parseInt(sTypeID);
//根據分類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的請求參數:得到分類ID根據分類瀏覽電影列表四個作用域通信對象的區別四個作用域計數結果如圖所示。四個作用域通信對象的區別得出結論:1. pageContext里的變量沒法從scope1.jsp傳遞到scope2.jsp。頁面跳轉,變量就不見了。2. request里的變量可以跨越forward
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冀中職業學院《衛生管理信息系統》2023-2024學年第二學期期末試卷
- 景德鎮學院《設計藝術史》2023-2024學年第一學期期末試卷
- 四川省成都市金堂縣2025屆三下數學期末預測試題含解析
- 重慶文化藝術職業學院《大學英語上》2023-2024學年第二學期期末試卷
- 興山縣2024-2025學年五年級數學第二學期期末學業水平測試試題含答案
- 沈陽醫學院《醫療保險學》2023-2024學年第一學期期末試卷
- 新疆現代職業技術學院《生物醫學》2023-2024學年第二學期期末試卷
- 創業企業品牌營銷模式創新重點基礎知識點
- 創業企業品牌價值評估重點基礎知識點
- 五谷道場策劃案例的分析
- 期中 (試題) -2023-2024學年魯科版(五四學制) (三起)英語三年級下冊
- 抗戰勝利紀念日抗日戰爭勝利愛國主題教育宣傳PPT
- 高中物理學法指導講座
- 《神經系統發育》課件
- 2024年中通服網盈科技有限公司招聘筆試參考題庫含答案解析
- 供應鏈安全:知識產權的保護
- 胰島素泵胰島素筆結構設計與材料
- 七年級語文下冊期中試卷含答案【部編版】
- 運營保密協議
- 人工智能圖像識別與分析工具項目需求分析
- 小學教育教學常規工作精細化管理實施方案
評論
0/150
提交評論