jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)_第1頁(yè)
jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)_第2頁(yè)
jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)_第3頁(yè)
jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)_第4頁(yè)
jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第jsp+servlet實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面功能(附demo)目錄實(shí)現(xiàn)功能:開(kāi)發(fā)環(huán)境:預(yù)備知識(shí):1.登錄界面login.jsp:2.登錄成功界面hello.jsp:3.登錄失敗信息回顯Login.jsp:思路簡(jiǎn)述:具體代碼Code:

實(shí)現(xiàn)功能:

模擬簡(jiǎn)單登錄功能,登錄成功跳轉(zhuǎn)新頁(yè)面,登錄失敗在原登錄界面提示登錄失敗信息

開(kāi)發(fā)環(huán)境:

eclipse

Tomcat-8.0

預(yù)備知識(shí):

HTML標(biāo)簽,Servlet相關(guān)知識(shí)——請(qǐng)求的轉(zhuǎn)發(fā)與重定向,jsp相關(guān)知識(shí),EL表達(dá)式

思路實(shí)現(xiàn):共2個(gè)jsp,一個(gè)servlet

1.登錄界面login.jsp:

采用jsp,不采用html的原因是因?yàn)橐M(jìn)行登錄失敗信息回顯(當(dāng)然如果用html結(jié)合ajax也可以實(shí)現(xiàn),這里采用jsp更方便)

如圖:

2.登錄成功界面hello.jsp:

歡迎信息+登錄的用戶名

如圖:

3.登錄失敗信息回顯Login.jsp:

如圖:

思路簡(jiǎn)述:

問(wèn)題1:jsp頁(yè)面如何與一個(gè)java類(lèi)進(jìn)行連接綁定起來(lái)?

簡(jiǎn)單的說(shuō),一個(gè)jsp頁(yè)面要跟一個(gè)servlet進(jìn)行連接,需要有一個(gè)橋梁,這個(gè)橋梁就是web.xml文件,可以通過(guò)下面代碼觀察到,登錄頁(yè)面的表單的提交的action屬性值,填寫(xiě)的就是在web.xml文件里對(duì)應(yīng)的servlet-mapping中的url-pattern的值,而這個(gè)值又對(duì)應(yīng)了一個(gè)servlet-name,servlet-name則對(duì)應(yīng)到一個(gè)servlet-class,這樣就把jsp和java類(lèi)(servlet類(lèi))進(jìn)行了關(guān)聯(lián)。

其實(shí)我覺(jué)得最明顯的就是提交表單后,url地址變化了,通過(guò)這個(gè)url地址將表單信息傳給了對(duì)應(yīng)的java類(lèi)。

問(wèn)題2:實(shí)現(xiàn)的整體的思路是怎么樣的?

一個(gè)jsp頁(yè)面通過(guò)表單元素,將用戶信息通過(guò)url的形式提交給一個(gè)已經(jīng)在web.xml配置映射好的servlet類(lèi),servlet類(lèi)接收到傳來(lái)的表單信息,進(jìn)行值校驗(yàn)(為了方便起見(jiàn)則直接定義用戶名密碼了,正常情況下是要采用jdbc進(jìn)行從數(shù)據(jù)庫(kù)中取出值進(jìn)行校驗(yàn)的),然后對(duì)校驗(yàn)結(jié)果進(jìn)行判斷,如果賬戶密碼正確,則跳轉(zhuǎn)到登錄成功的頁(yè)面(采用重定向),如果失敗,則將登錄失敗的提示信息存到request域?qū)ο笾胁⒎祷氐卿浗缑骘@示出來(lái)(采用請(qǐng)求的轉(zhuǎn)發(fā))

簡(jiǎn)單的聯(lián)系:

jsp頁(yè)面web.xmlservlet類(lèi)

問(wèn)題3:在servlet中要如何獲取jsp中提交過(guò)來(lái)的表單信息呢?

request.getParameter("userName");//userName是表單中,input標(biāo)簽中name屬性的值,接收到的是string類(lèi)型

問(wèn)題4:登錄頁(yè)面如何在登錄失敗的時(shí)候給出提示信息呢?

實(shí)現(xiàn)思路是如果登錄失敗,則往request域?qū)ο笾写嫒氲卿浭〉奶崾拘畔?,然后通過(guò)請(qǐng)求的轉(zhuǎn)發(fā)的方式跳轉(zhuǎn)回登錄頁(yè)面并顯示,所以登錄界面要嵌入一段腳本代碼,用來(lái)判斷當(dāng)前是否有登錄失敗提示信息的對(duì)象,如果有則將該對(duì)象保存的信息打印出來(lái),如果沒(méi)有則什么都不顯示。

1)如果賬密不匹配,則往request域中存入message對(duì)象,該message中保存了提示信息:request.setAttribute("message","賬密錯(cuò)誤,請(qǐng)重新登錄br");

并轉(zhuǎn)發(fā)到登錄頁(yè)面:request.getRequestDispatcher("/loginDemo/login.jsp").forward(request,response);

2)在登錄頁(yè)面獲取該對(duì)象:(因?yàn)榈卿浭〉臅r(shí)候才有該對(duì)象,疑問(wèn):那如果我登錄失敗后再訪問(wèn)登錄頁(yè)面,那不應(yīng)該會(huì)顯示錯(cuò)誤信息嗎?答案是否定的??闪私鈘equest域?qū)ο笊芷谙嚓P(guān)知識(shí))

if(request.getAttribute("message")!=null){

out.print(request.getAttribute("message"));

問(wèn)題5:request.getAttribute()和request.getParameter()區(qū)別是:

前者獲取的是一個(gè)object對(duì)象,后者獲取的是一個(gè)string字符串,所以前者使用的時(shí)候可能會(huì)碰到需要做一些類(lèi)型轉(zhuǎn)換的情況。

問(wèn)題6:表單訪問(wèn)路徑填寫(xiě)問(wèn)題

在ation屬性,或者請(qǐng)求的轉(zhuǎn)發(fā),重定向,一般采用絕對(duì)路徑,可以避免路徑訪問(wèn)出錯(cuò),訪問(wèn)資源不存在等問(wèn)題。

jsp表達(dá)式:%=request.getContextPath()%或者用EL表達(dá)式:${pageContext.request.contextPath}可以獲取當(dāng)前web應(yīng)用根目錄路徑,不妨試試輸出打印下,就可以觀察值是多少了。

具體代碼Code:

1.login.jsp:

%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%

!DOCTYPEhtml

html

head

metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"

title標(biāo)題/title

styletype="text/css"

*{margin:0;padding:0;}

form{margin:0auto;padding:15px;width:300px;height:300px;text-align:center;}

#submit{padding:10px}

#submitinput{width:50px;height:24px;}

/style

/head

body

div

formaction="%=request.getContextPath()%/loginDemo"method="post"

label用戶名:/label

inputtype="text"name="userName"value="${param.userName}"/brbr

label密碼:/label

inputtype="password"name="password"/br

fontcolor="red"

if(request.getAttribute("message")!=null){

out.print(request.getAttribute("message"));

/font

divid="submit"

inputtype="submit"value="登錄"/

/div

/form

/div

/body

/html

2.hello.jsp

%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%

!DOCTYPEhtml

html

head

metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"

title標(biāo)題/title

/head

body

Hello:br

fontcolor="green"size="22"

out.print(request.getParameter("userName")+"br

/font

ahref="%=request.getContextPath()%/loginDemo/login.jsp"重新登錄/a

/body

/html

3.對(duì)應(yīng)的LoginServlet.java

packageloginDemo;

importjava.io.IOException;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassLoginServletextendsHttpServlet{

privatestaticfinallongserialVersionUID=1L;

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

StringuserName=request.getParameter("userName");

Stringpassword=request.getParameter("password");

System.err.println(userName+";"+password);

StringmyUser="Dong";

StringmyPwd="5432100";

if(userName.equals(myUser)password.equals(myPwd)){

response.sendRedirect(request.getContextPath()+"/loginDemo/hello.jspuserName="+userName);

}else{

request.setAttribute("message","賬密錯(cuò)誤,請(qǐng)重新登錄br

request.getRequestDispatcher("/loginDemo/login.jsp").forward(request,response);

}

4.對(duì)應(yīng)的web.xml的配置(注冊(cè))與映射

s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論