版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
JSP內(nèi)置對象第五章預習檢查什么是JSP內(nèi)置對象?本章目標掌握JSP基本語法內(nèi)置對象的使用什么是JSP內(nèi)置對象JSP內(nèi)置對象是Web容器創(chuàng)建的一組對象JSP內(nèi)置對象的名稱是JSP的保留字JSP內(nèi)置對象是可以直接在JSP頁面使用的對象,無需使用“new”獲取實例<%
request.setCharacterEncoding("GBK"); StringtitleName=
request.getParameter("titlename");%>沒有出現(xiàn)new關鍵字,但卻可以使用request對象JSP內(nèi)置對象常用的JSP內(nèi)置對象常用內(nèi)置對象requestresponseoutapplicationsessionconfigpagepagecontextexceptionJSP內(nèi)置對象request6-1request對象主要用于處理客戶端請求JSP頁面request對象客戶端請求請求信息JSP內(nèi)置對象request6-2方法名稱
說明StringgetParameter(Stringname)根據(jù)頁面表單組件名稱獲取頁面提交數(shù)據(jù)String[]getParameterValues(Stringname)獲取一個頁面表單組件對應多個值時的用戶的請求數(shù)據(jù)voidsetCharacterEncoding(Stringcharset)指定每個請求的編碼,在調(diào)用getParameter()之前進行設定,可以解決中文亂碼問題StringgetRemoterAddr()返回提交請求的客戶機的IP地址request對象常用方法JSP內(nèi)置對象request6-3編程實現(xiàn)學員的注冊功能注冊信息包括:用戶名、密碼、你從哪里知道ACCP頁面提交后,顯示學員輸入的數(shù)據(jù)12JSP內(nèi)置對象request6-4學員注冊頁面
<formname="form1"method="post"action="reginfo.jsp"><tableborder="0"align="center"><tr><td>用戶名</td><td><inputtype="text"name="name"></td></tr><tr><td>密碼</td><td><inputtype="password"name="pwd"></td></tr><tr><td>你從哪里知道ACCP</td><td><inputtype="checkbox"name="channel"value="報刊">報刊
<inputtype="checkbox"name="channel"value="網(wǎng)絡">網(wǎng)絡
<inputtype="checkbox"name="channel"value="朋友推薦">朋友推薦
<inputtype="checkbox"name="channel"value="電視">電視
</td></tr><!--以下是提交、取消按鈕--></table></form>JSP內(nèi)置對象request6-5信息讀取顯示頁面<% //讀取用戶名和密碼 Stringname=request.getParameter("name"); Stringpwd=request.getParameter("pwd");
…HTML頁面代碼… //讀取復選框選擇項 String[]channels=request.getParameterValues("channel"); if(channels!=null){ for(inti=0;i<channels.length;i++){ out.println(channels[i]); } }%>為什么我們輸入的中文都是亂碼顯示?JSP內(nèi)置對象request6-6在進行頁面開發(fā)時,存在多種字符集編碼設置,我們只需要在頁面設置支持中文字符的字符集就可以了<% 以GET方式提交數(shù)據(jù)時 //讀取用戶名和密碼 Stringname=request.getParameter("name"); //對請求數(shù)據(jù)進行字符編碼
name=newString(name.getBytes("ISO-8859-1"),"GBK");%><% 以POST方式提交數(shù)據(jù)時 //設置讀取請求信息的字符編碼為GBK或者GB2312
request.setCharacterEncoding("GBK"); //讀取用戶名和密碼 Stringname=request.getParameter("name"); Stringpwd=request.getParameter("pwd");%>JSP內(nèi)置對象response3-1response對象用于響應客戶請求并向客戶端輸出信息response對象常用方法voidsendRedirect(Stringlocation):將請求重新定位到一個不同的URL,即頁面重定向JSP頁面response對象客戶端響應從服務器中檢索的信息存儲信息,以在響應客戶端請求時發(fā)送此信息<formname="form1"method=postaction="control.jsp">用戶名:<inputtype="text"name="userName">密碼:<inputtype="password"name="pwd"><inputtype="submit"value="登錄"><form>JSP內(nèi)置對象response3-2根據(jù)業(yè)務邏輯實現(xiàn)頁面跳轉(zhuǎn)input.jsp客戶端重新建立鏈接<%request.setCharacterEncoding("GBK");Stringname=request.getParameter("userName");Stringpwd=request.getParameter("pwd");if(name.equals("sa")&&pwd.equals("sa")) response.sendRedirect("welcome.jsp");%>跳轉(zhuǎn)至歡迎頁面control.jspJSP內(nèi)置對象response3-3頁面實現(xiàn)跳轉(zhuǎn)了,請求的信息是否也一起轉(zhuǎn)移呢?那么如何才能實現(xiàn)頁面跳轉(zhuǎn)后,請求信息不丟失呢?使用轉(zhuǎn)發(fā)取代重定向?qū)崿F(xiàn)頁面跳轉(zhuǎn)頁面的轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)的作用:在多個頁面交互過程中實現(xiàn)請求數(shù)據(jù)的共享轉(zhuǎn)發(fā)的實現(xiàn):RequestDispatcher對象forward()方法<%RequestDispatcherrd=request.getRequestDispatcher("welcome.jsp");rd.forward(request,response);%>將當前接收的用戶請求,發(fā)送給服務器的其他資源使用轉(zhuǎn)發(fā)與重定向的比較轉(zhuǎn)發(fā)是在服務器端發(fā)揮作用,通過forward方法將提交信息在多個頁面間進行傳遞。轉(zhuǎn)發(fā)是在服務器內(nèi)部控制權(quán)的轉(zhuǎn)移,客戶端瀏覽器的地址欄不會顯示出轉(zhuǎn)向后的地址重定向是在客戶端發(fā)揮作用,通過請求新的地址實現(xiàn)頁面轉(zhuǎn)向重定向是通過瀏覽器重新請求地址,在地址欄中可以顯示轉(zhuǎn)向后的地址JSP訪問數(shù)據(jù)庫<%@pageimport=“java.sql.*"%><%try{Class.forName(JDBC驅(qū)動類);Connectioncon=DriverManager.getConnection(JDBCURL,數(shù)據(jù)庫用戶名,密碼);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}con.close();}catch(Exceptione){e.printStackTrace();}%>獲得數(shù)據(jù)庫連接發(fā)送Sql語句處理結(jié)果注冊JDBC驅(qū)動釋放資源必須處理的異常JSP中實現(xiàn)數(shù)據(jù)庫訪問就是將數(shù)據(jù)庫訪問代碼以小腳本的方式體現(xiàn)在JSP頁面當中注意:需要使用page指令導入相應的類庫導入類庫JSP訪問數(shù)據(jù)庫應用4-1用戶注冊功能實現(xiàn),要求如下:從頁面上添加用戶注冊信息如果保存成功,返回登錄頁面保存失敗,返回失敗頁面control.jsp
1、獲得用戶輸入2、插入數(shù)據(jù)庫3、根據(jù)保存結(jié)果返回不同頁面成功頁面失敗頁面保存成功保存失敗123JSP訪問數(shù)據(jù)庫應用4-2創(chuàng)建表users字段名稱字段說明數(shù)據(jù)類型大小uid序號number4uname用戶名稱varchar250upwd密碼varchar250JSP訪問數(shù)據(jù)庫應用4-3創(chuàng)建注冊頁面<formname="form1"method="post"action="control.jsp"><table><tr><td>用戶名</td><td><inputtype="text"name="userName"></td></tr><tr><td>輸入登錄密碼</td><td><inputtype="password"name="pwd"></td></tr>…省略余下的代碼<td>提交:</td><td><inputtype="submit"value="注冊"></td></tr></table></form>JSP訪問數(shù)據(jù)庫應用4-4創(chuàng)建業(yè)務處理頁面try{Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("連接字符串","用戶名","密碼");stmt=con.createStatement();Stringstr="selectmax(id)fromloguser";intmaxid=0;rs=stmt.executeQuery(str);if(rs.next())maxid=rs.getInt(1)+1; //獲取新的用戶編號Stringsql="insertintologuservalues("+maxid+",'"+name+"','"+pwd+"')";validate=stmt.executeUpdate(sql);}catch(Exceptione){ e.printStackTrace();}
JavaScript頁面驗證與JSP的集成代碼片斷<scriptlanguage="JavaScript"type="">functioncheckUserInfo(){if(document.myform.username.value==""){ alert("用戶名不能為空"); returnfalse;}}</script>在JSP頁面中增加JavaScript驗證:如果用戶輸入的信息為空,表單不能提交<inputtype="submit"name="Submit“value="確定"
onClick="returncheckUserInfo()"/>通過onClick事件觸發(fā)checkOneTitle()方法生活中的Cookie瀏覽購物網(wǎng)站查看不同商品時,系統(tǒng)會自動記錄已經(jīng)瀏覽過的商品什么是CookieCookie是Web服務器保存在客戶端的一系列文本信息Cookie的作用對特定對象的追蹤統(tǒng)計網(wǎng)頁瀏覽次數(shù)簡化登錄安全性能容易信息泄露Cookie的語法2-1導入包創(chuàng)建Cookieparameter:用于代表cookie的名稱(key)value:用于表示當前key名稱所對應的值寫入CookieCookienewCookie=newCookie("parameter","value");response.addCookie(newCookie)import="javax.servlet.http.Cookie"Cookie的語法2-2設置Cookie屬性的常用方法類型方法名稱說明voidsetMaxAge(intexpiry)設置Cookie的有效期,以秒為單位voidsetValue(Stringvalue)在Cookie創(chuàng)建后,對Cookie進行賦值StringgetName()獲取Cookie的名稱StringgetValue()獲取Cookie的值StringgetMaxAge()獲取Cookie的有效時間,以秒為單位JSP中應用Cookie2-1用戶登錄成功后,將用戶信息保存到Cookie中,在頁面讀取Cookie并顯示JSP中應用Cookie2-2從登錄驗證頁面表單中獲取用戶名<%Stringusername=reqeust.getParameter("username");//以key/value的形式創(chuàng)建CookieCookieuname=newCookie("uname",username);
response.addCookie(uname);......%>在顯示頁面顯示用戶名<%//獲取請求中的Cookie,以數(shù)組方式保存Cookiecookies[]=request.getCookies();//循環(huán)遍歷數(shù)組,得到key=uname的Cookiefor(inti=0;i<cookies.length;i++){Cookieucookie=cookies[i];if(ucookie.getName().equals("uname”));//判斷Cookie的名稱
%>
歡迎你:<%=ucookie.getValue()%>//獲取key對應的value,輸出顯示<%}%>創(chuàng)建Cookie,使用response的addCookie方法保存Cookie使用reqeust獲取Cookie數(shù)組,通過cookie的名稱獲取對應的內(nèi)容生活中的訪問控制下載電子書時,系統(tǒng)會提示用戶登錄網(wǎng)站點擊下載,系統(tǒng)轉(zhuǎn)入登錄頁面每次下載之前,系統(tǒng)如何判斷用戶是否已經(jīng)登錄?如何實現(xiàn)訪問控制系統(tǒng)如何保存不同用戶的登錄信息?使用JSP會話跟蹤機制,可以維持每個用戶的會話信息,也就是為不同的用戶保存不同的數(shù)據(jù)12用戶登錄進入用戶注冊頁面系統(tǒng)保存該用戶的登錄信息進入欲訪問的頁面是否是注冊用戶否是用戶直接訪問某個頁面進入用戶登錄頁面顯示該頁面內(nèi)容系統(tǒng)是否保存了該用戶登錄信息否是訪問流程控制分析瀏覽器關閉,本次會話結(jié)束什么是會話一個會話就是瀏覽器與服務器之間的一次通話,包含瀏覽器與服務器之間的多次請求、響應過程瀏覽器session對象請求1瀏覽器請求2…nsession是JSP內(nèi)置對象,與瀏覽器一一對應,允許用戶存儲和提取會話狀態(tài)的信息響應1響應2…nsession對象JSP內(nèi)置對象sessionsession對象用來存儲有關用戶會話的所有信息session對象常用方法:類型方法名稱說明voidsetAttribute(Stringkey,Objectvalue)以key/value的形式保存對象值ObjectgetAttribute(Stringkey)通過key獲取對象值intgetMaxInactiveInterval()獲取session的有效非活動時間,以秒為單位StringgetId()獲取session對象的編號voidinvalidate()設置session對象失效session與窗口的關系一個session對應一個窗口,那么通過超鏈接打開的窗口是否也是新的session呢?每個session對象都與瀏覽器一一對應重新開啟一個瀏覽器,相當于重新創(chuàng)建一個session對象重新開啟一個IE窗口,直接訪問系統(tǒng)首頁面通過超鏈接打開的新窗口,新窗口的session與其父窗口的session相同在系統(tǒng)中,增加訪問控制功能,具體要求如下:提供用戶登錄功能管理員有權(quán)對信息實現(xiàn)增刪改的操作使用session實現(xiàn)訪問控制4-1登錄處理頁面1、獲得登錄信息2、查詢數(shù)據(jù)庫,判斷該用戶是否注冊3、如果該用戶已注冊,在session中保存該用戶的登錄信息4、如果用戶時管理員就跳轉(zhuǎn)到管理員界面;否則跳轉(zhuǎn)到新聞發(fā)布系統(tǒng)的首頁面管理員界面1、從session中提取該用戶信息2、如果用戶信息存在,顯示管理員界面內(nèi)容4、如果用戶信息不存在,跳轉(zhuǎn)到登錄頁面用戶已注冊session中無法提取到用戶信息123使用session實現(xiàn)訪問控制4-2在控制頁面獲取用戶請求的登錄信息進行驗證登錄處理頁面的代碼片斷<%if(rs.next()){//如果是已注冊用戶session.setAttribute("LOGINED_USER",loginedUser);response.sendRedirect("index.jsp");}else{response.sendRedirect("login.html");}%>在session中存放用戶登錄信息使用session實現(xiàn)訪問控制4-3
在信息管理頁面增加登錄驗證<%Useruser=(User)session.getAttribute("LOGINED_USER");if(user==null){response.sendRedirect("login.jsp");}%>如果session中不存在該用戶的登錄信息,轉(zhuǎn)入登錄頁面使用session實現(xiàn)訪問控制4-4訪問控制效果驗證,步驟如下:直接在IE地址欄中輸入URL,訪問系統(tǒng)首頁面通過登錄頁面進入系統(tǒng)首頁面重新開啟一個IE窗口,直接訪問系統(tǒng)首頁面Cookie與session的比較session是在服務器端保存用戶信息,Cookie是在客戶端保存用戶信息session中保存的是對象,Cookie保存的是字符串session隨會話結(jié)束而關閉,Cookie可以長期保存在客戶端Cookie通常用于保存不重要的用戶信息,重要的信息使用session保存JSP內(nèi)置對象applicationapplication類似于系統(tǒng)的“全局變量”,用于實現(xiàn)用戶之間的數(shù)據(jù)共享application對象的常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將一個對象的值存放到application中ObjectgetAttribute(Stringkey):根據(jù)鍵去獲取application中存放對象的值application.setAttribute("LOGINED_USER",newArrayList());if(application.getAttribute("LOGINED_USER")!=null){ListloginedUsers=(List)application.getAttribute("LOGINED_USER");}application對象application是JSP內(nèi)置對象實現(xiàn)服務內(nèi)數(shù)據(jù)的共享在服務內(nèi)值存在一個對象實例application對象的常用方法類型方法名稱說明voidsetAttribute(Stringkey,Objectvalue)以key/value的形式保存對象值ObjectgetAttribute(Stringkey)通過key獲取對象值StringgetRealPath(Stringpath)返回相對路徑的真實路徑實現(xiàn)訪問人數(shù)統(tǒng)計2-1創(chuàng)建登錄處理頁面登錄處理頁面代碼片斷if(rs.next()){Userlogineduser=newUser(name,pass);session.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人股權(quán)委托管理轉(zhuǎn)讓合同范本3篇
- 2025年度個人合伙退伙合同范本精要3篇
- 現(xiàn)代社會生活中的常見隱患及其家庭預防策略研究報告
- 智慧醫(yī)療與健康科技的發(fā)展
- 二零二五年度車間承包與安全生產(chǎn)責任合同4篇
- 游戲化學習小學生注意力培養(yǎng)的新模式
- 網(wǎng)絡安全技術(shù)與隱私保護措施研究
- 2025年度虛擬現(xiàn)實體驗店租賃合同
- 網(wǎng)絡環(huán)境下家庭信息的安全存儲與分享策略
- 玉林2025年廣西玉林市第一人民醫(yī)院招聘24人筆試歷年參考題庫附帶答案詳解
- 2024人教新目標(Go for it)八年級英語上冊【第1-10單元】全冊 知識點總結(jié)
- 劇本殺店長合同范例
- 華中師范大學第一附中2025屆高考仿真模擬數(shù)學試卷含解析
- 農(nóng)村自建房施工合同模板
- GB/T 44731-2024科技成果評估規(guī)范
- 影視動畫設計與制作合同
- 2023學年廣東省深圳實驗學校初中部九年級(下)開學語文試卷
- 企業(yè)新員工培訓師帶徒方案
- 2025屆河南省鄭州一中高三物理第一學期期末學業(yè)水平測試試題含解析
- 個體工商戶章程(標準版)
- 河南省安陽市2024年中考一模語文試卷(含答案)
評論
0/150
提交評論