版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù):用戶登錄及
控制設(shè)計(jì)登錄頁(yè)login.jsp及處理登錄提交的登錄驗(yàn)證頁(yè)dologin.jsp。進(jìn)入 的操作過程是:–(1)從首頁(yè)99main.jsp上點(diǎn)擊
到lonig.jsp頁(yè),輸入用戶名及“進(jìn)入系統(tǒng)”,進(jìn)行登錄,程序?qū)⑻峤坏卿洷韱蔚降卿涷?yàn)證頁(yè)dologin.jsp。如果用戶
驗(yàn)證通過,就設(shè)置登錄成功標(biāo)志及登主界面;驗(yàn)證不通過,轉(zhuǎn)回登錄頁(yè)錄用戶信息,轉(zhuǎn)到–(2)如果用戶login.jsp,重新登錄。登錄頁(yè)面其它功能要求登錄失敗原因:登錄驗(yàn)證不通過,轉(zhuǎn)回登錄頁(yè)時(shí),傳回失敗原因(例如:login.jsp?errmsg=
不正確),在login.jsp頁(yè)中取到errmsg內(nèi)容,并顯示出來。登錄有效期:用客戶端瀏覽器的 功能,保存登錄的有效期,在login.jsp頁(yè)中取得客戶端瀏覽器傳來的信息,取出上次登錄的有效期信息,判斷是否需要登錄。如果現(xiàn)時(shí)是在有效期內(nèi),不需要再輸入登錄信息,從
直接轉(zhuǎn)入中取得用戶信息,作為登錄信息,驗(yàn)證后主頁(yè)。登錄檢查控制:在系統(tǒng)內(nèi)的各頁(yè),程序的開始部分都要判斷用戶是否已登錄,如果是用戶沒有經(jīng)過登錄而請(qǐng)求系統(tǒng)內(nèi)的頁(yè),則應(yīng)終止申請(qǐng)頁(yè)的執(zhí)行,轉(zhuǎn)向登錄頁(yè)
login.jsp。方案:技術(shù)分析與設(shè)計(jì)要點(diǎn)JSP執(zhí)行及response對(duì)象登錄信息及HTML表單登錄提交及request對(duì)象登錄有效期及
技術(shù)登錄鑒別控制及Session對(duì)象連接數(shù)據(jù)庫(kù)及登錄驗(yàn)證JSP執(zhí)行及response對(duì)象Web服務(wù)器接收到頁(yè)面請(qǐng)求,在服務(wù)器端,程序要做各種響應(yīng)處理,如:取得向發(fā)向客戶端的HTML流并寫入信息、設(shè)置html的head信息等。這些常用的響應(yīng)相關(guān)處理方法已被封裝在現(xiàn)存的類javax.servlet.http.HttpServletResponse中。系統(tǒng)為每次請(qǐng)求生成HttpServletResponse類的一個(gè)上下文相關(guān)的實(shí)例對(duì)象response。JSP程序通過調(diào)用內(nèi)置對(duì)象response的各方法,實(shí)現(xiàn)各種響應(yīng)功能。JSP執(zhí)行及response對(duì)象例如:在login.jsp頁(yè)中,實(shí)現(xiàn):如果之前的登錄還在有效期內(nèi),不需輸入登錄信息,直接重定向到dologin.jsp。重定向到
dologin.jsp的語(yǔ)句是:
response.sendRedirect("dologin.jsp");登錄信息及HTML表單<form
name=”theform”
method="post"
action="dologin.jsp">...帳號(hào):<INPUT
type=text
name=”loginID”value=""size=10><br>:<INPUT
type=password
name=”loginPWD”
value=""><br><input
type="submit"
name="bn_login"
value="登錄">...<div>本次登錄的有效期:</div><br><input
type="radio"name="loginExpire"value="0"checked>每次都登錄<input
type="radio"name="loginExpire"
value="1">當(dāng)天不用登錄<inputtype="radio"name="loginExpire"
value="7">7天不用登錄<input
type="radio"name="loginExpire"
value="30">30天不用登錄...</form>登錄提交及request對(duì)象login.jsp頁(yè)以表單(FORM)方式向dologin.jsp頁(yè)發(fā)出請(qǐng)求時(shí),登錄表單信息作為“請(qǐng)求信息”的一部分,與URL同時(shí)傳到Web服務(wù)器。Web服務(wù)器收到請(qǐng)求,分析請(qǐng)求,從中取出傳來的表單(Form)數(shù)據(jù)、
數(shù)據(jù)、其它客戶端信息,填充到生成的內(nèi)置對(duì)象request中,供被請(qǐng)求JSP頁(yè)的程序使用。例如:從request取得表單的用戶登錄名
String
username=
request.getParameter("username");登錄有效期及
技術(shù)用戶的之前登錄信息及其有效期可以在客戶端本地的,采用稱為的技術(shù)。每次瀏覽器向Web服務(wù)器發(fā)出請(qǐng)求時(shí),從本地的集中檢索出目標(biāo)Web站點(diǎn)相關(guān)的,作為“網(wǎng)頁(yè)請(qǐng)求”信息的一部分,一起發(fā)送到Web服務(wù)器。可以編程在服務(wù)器端取出信息,進(jìn)行處理。在服務(wù)器端響應(yīng)請(qǐng)求時(shí),可以設(shè)置 信息,即,編程把某些數(shù)據(jù)按要求作為響應(yīng)信息的一部分,傳到客戶端,自動(dòng)寫到客戶端本地的集中,供下次請(qǐng)求時(shí)再傳回Web服務(wù)器。技術(shù)發(fā)送
s=
new
("loginuser","liao74");.setMaxAge(7*24*60*60);//有效期為7天newnewresponse.add(new
);獲取s();s[]
gameloginif
(games=
request.get=
null;s!=null)for(int
i=0;
i<game{ //按名稱檢索s.length;
i++)集中的信息if
("loginuser".equals(game
s[i].getName())){login =
game
s[i];}}if
(login !=null
&&login
.getMaxAge()>0)廳{ //跳過本頁(yè),直接轉(zhuǎn)向到gamehome.jsp,進(jìn)行
response.sendRedirect("gamehome.jsp");}登錄鑒別控制及Session對(duì)象如何控制用戶的
,防止非經(jīng)驗(yàn)證的用戶跳過登錄驗(yàn)證,直接相關(guān)
頁(yè)呢?JSP解決此類問題的方法是用內(nèi)置的會(huì)話對(duì)象Session來保存用戶在一次
中,多次網(wǎng)頁(yè)請(qǐng)求間的狀態(tài)。在本案例,
把“當(dāng)前登錄用戶的用戶名”添加到Session對(duì)象的集
合屬性中,也就是,定義名為theuser一個(gè)Session屬性項(xiàng)。具體做法是:在登錄驗(yàn)證頁(yè)dologin.jsp中,通過登錄驗(yàn)證后,執(zhí)行下面代碼。session.setAttribute("theuser",
loginuser);在所有的需要檢查是否已登錄的頁(yè)的開始處,加入如下控制程序:String
currUser=(String)session.getAttribute("theuser");if(currUser==null)//沒有經(jīng)過登錄驗(yàn)證{response.sendRedirect("login.jsp");//重定向到登錄頁(yè)}連接數(shù)據(jù)庫(kù)及登錄驗(yàn)證如何連接到數(shù)據(jù)庫(kù),并從用戶數(shù)據(jù)表中檢索到用戶信息呢?這要用到JAVA的JDBC技術(shù)。連接數(shù)據(jù)庫(kù)//連接服務(wù)器和數(shù)據(jù)庫(kù)gamedbString
dbURL
=
"jdbc:sqlserver://localhost:1433;DatabaseName=gamedb";String
userName="sa"; //默認(rèn)用戶名
String
userPwd="123456";//
Connection
dbConn=null;try{Class.forName("com.
.sqlserver.jdbc.SQLServerDriver");dbConn
=DriverManager.getConnection(dbURL,userName,userPwd);}catch
(Exception
e){e.printStackTrace();}驗(yàn)證用戶信息Statement
stmt=conn.createStatement();String
sql="select
userid,password
from
userinf
where
userid=’”+login_id+”’";ResultSet
rs
=
stmt.executeQuery(sql);If(rs.next()){String
user_id=rs.
Getstring(1);String
user_pwd
=
rs.
Getstring(2);if
(login_id.
Equals(user_id)
&&
login_pwd.
Equals(user_pwd)){//驗(yàn)證通過…
…}elseresponse.sendRedirect("login.jsp?msg=
錯(cuò)誤");}elseresponse.sendRedirect("login.jsp?msg=用戶不存在");實(shí)踐:實(shí)現(xiàn)登錄及控制login.jspdologin.jsp提交Form表單gamehome.jsp驗(yàn)證通過,重定向驗(yàn)證錯(cuò)誤返回JSP內(nèi)置對(duì)象對(duì)象類型描述作用域requestjavax.servlet.ServletRequest用戶端傳來的請(qǐng)求,封裝了用戶提交的信息,通過調(diào)用該對(duì)象相應(yīng)的方法可以獲取封裝的信息,即使用該對(duì)象可以獲取用戶提交信息,包括來自GET/POST請(qǐng)求的參數(shù)Request用戶請(qǐng)求期responsejavax.servlet.ServletResponse傳回用戶端的響應(yīng),對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)、重定向網(wǎng)頁(yè)等Page頁(yè)面執(zhí)行期pageContextjavax.servlet.jsp.PageContext通過上下文,管理網(wǎng)頁(yè)的屬性Page頁(yè)面執(zhí)行期pagejava.lang.Object指向JSP網(wǎng)頁(yè)本身,相當(dāng)于thisPage頁(yè)面執(zhí)行期sessionjavax.servlet.http.HttpSession會(huì)話,完成會(huì)話期管理,用于會(huì)話的多次請(qǐng)求間保持狀態(tài)。不同的用戶,擁有各自的會(huì)話session,用戶只能 到自已的session對(duì)象。Session會(huì)話期applicationjavax.servlet.ServletContext用于保持應(yīng)用程序的全局狀態(tài),服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)application對(duì)象,,直到服務(wù)器關(guān)閉在 的各個(gè)頁(yè)面之間瀏覽時(shí),對(duì)于所有的客戶,這個(gè)application對(duì)象都是同一個(gè)。application整個(gè)Web應(yīng)用程序運(yùn)行期outjavax.servlet.jsp.JspWriter傳回客戶端的輸出流,用來傳送回應(yīng)的輸出Page頁(yè)面執(zhí)行期configjavax.servlet.ServletConfigServlet配置管理,封裝了servlet的結(jié)構(gòu)信息Page頁(yè)面執(zhí)行期exceptionjava.lang.ThrowableJSP網(wǎng)頁(yè)錯(cuò)誤時(shí),拋出的例外,可以從中取得錯(cuò)信息。Page頁(yè)面執(zhí)行期對(duì)象的作用域?qū)ο蟮?/p>
周期和可
性稱為作用域(scope)。JSP有4種類型的作用域:頁(yè)面域請(qǐng)求域回話域應(yīng)用域內(nèi)置request對(duì)象objectgetAttribute(Stringname),返回指定屬性的屬性值。int
getContentLength(),返回請(qǐng)求體的長(zhǎng)度(以字節(jié)數(shù))。ServletInputStream
getInputStream(),得到請(qǐng)求體中一行的二進(jìn)制流。StringgetParameter(String
name),返回name指定參數(shù)的參數(shù)值。String[]getParameterValues(Stringname),返回包含參數(shù)name的所有值的數(shù)組。String
getRemoteAddr(),返回發(fā)送此請(qǐng)求的客戶端IP地址。String
getRemoteHost(),返回發(fā)送此請(qǐng)求的客戶端主機(jī)名。String
getRealPath(String
path),返回一虛擬路徑的真實(shí)路徑。內(nèi)置response對(duì)象void
addHeader(String
name,
String
value),添加網(wǎng)頁(yè)頭的名字/值對(duì)),添加客戶端的void
add
(ServletOutputStream
getOutputStream(),返回響應(yīng)的一個(gè)二進(jìn)制輸出流PrintWriter
getWriter(),返回可以向客戶端輸出字符的一個(gè)對(duì)象void
setContentLength(int
len),設(shè)置響應(yīng)頭長(zhǎng)度void
setContentType(String
type),設(shè)置響應(yīng)的MIME類型sendRedirect(java.lang.String
location),重新定向客戶端的請(qǐng)求內(nèi)置session對(duì)象void
setAttribute(String
name,object
value),設(shè)置屬性項(xiàng)object
getAttribute(String
name),返回屬性項(xiàng)public
String
getId(),返回SESSION創(chuàng)建時(shí)JSP引擎為它設(shè)的惟一ID號(hào)voidinvalidate(),取消SESSION,使SESSION不可用void
removeValue(String
name),刪除SESSION中指定的屬性內(nèi)置application對(duì)象Object
getAttribute(String
name)
返回給定名的屬性值void
setAttribute(String
name,Object
obj)設(shè)定屬性的屬性值void
removeAttribute(String
name)
刪除一屬性及其屬性值內(nèi)置out對(duì)象out內(nèi)置對(duì)象是對(duì)輸出流的,一般在程序中使用。程序用out對(duì)象把數(shù)據(jù)寫入響應(yīng)并發(fā)送回客戶端。out對(duì)象是JspWriter類的實(shí)例,是向客戶端輸出內(nèi)容常用的對(duì)象。out.print(String
s),輸出內(nèi)容到流void
clear(),清除緩沖區(qū)的內(nèi)容void
flush(),把緩沖區(qū)內(nèi)容送出,直到清空booleanisAutoFlush(),返回緩沖區(qū)滿時(shí),是自動(dòng)清空還是拋出異常void
close(),關(guān)閉輸出流內(nèi)置config對(duì)象String
getInitParameter(String
name)
返回初始化參數(shù)的值例4-9config.jsp<%@
page
language="java"
contentType="text/html;
charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN"><html><head><meta
http-equiv="Content-Type"
content="text/html;
charset=utf-8"><title>meg.jsp</title></head><body><table
align="center"
border="0"
cellPadding="0"
cellSpacing="0"width="730"><tr><td><divalign="center"><br>客戶服務(wù)信箱:<%=config.getInitParameter("
")%>客戶服務(wù)
:<%=config.getInitParameter("phone")%><br>客戶服務(wù)
:<%=config.getInitParameter("
")%><br></div></td></tr></table></body></html>例4-9在web.xml的</we
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生物醫(yī)藥研發(fā)平臺(tái)土地租賃合同3篇
- 2025年巡演設(shè)備租賃合同
- 2025年度個(gè)人消費(fèi)貸款合同提前還款流程規(guī)范4篇
- 2025年度特色農(nóng)產(chǎn)品加工廠舊房購(gòu)置合同書4篇
- 2025年家電預(yù)付款服務(wù)合同
- 二零二五年度池塘租賃合同(含水產(chǎn)養(yǎng)殖技術(shù)培訓(xùn)合作)4篇
- 二零二五年度環(huán)保行業(yè)勞動(dòng)合同參考4篇
- 二零二五年度機(jī)場(chǎng)航站樓清潔與消毒合同范本3篇
- 二零二五年度XX項(xiàng)目融資轉(zhuǎn)讓居間合同3篇
- 2024年度黑龍江省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師??寄M試題(全優(yōu))
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末質(zhì)量監(jiān)測(cè)生物學(xué)試卷(含答案)
- 2024版?zhèn)€人私有房屋購(gòu)買合同
- 2024爆炸物運(yùn)輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險(xiǎn)評(píng)估合同3篇
- 《食品與食品》課件
- 讀書分享會(huì)《白夜行》
- 光伏工程施工組織設(shè)計(jì)
- DB4101-T 121-2024 類家庭社會(huì)工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測(cè)試方法考核試卷
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 自動(dòng)駕駛汽車道路交通安全性探討研究論文
評(píng)論
0/150
提交評(píng)論