日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统

發(fā)布時(shí)間:2024/7/19 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用JSP/Servlet開發(fā)簡(jiǎn)單的用戶注冊(cè)系統(tǒng)

2.4界面編程實(shí)現(xiàn)

通過JavaBeans封裝了大部分的邏輯或數(shù)據(jù)操作功能。這樣,JSP頁(yè)面中就可以減少很多Java代碼,從而使得JSP的建立和修改變得方便。

2.4.1登錄驗(yàn)證頁(yè)面

用戶注冊(cè)系統(tǒng)主要是為了保護(hù)一些資源不被未被授權(quán)的用戶訪問,因此在具體應(yīng)用中,如果沒有登錄的用戶訪問到那些被保護(hù)的資源,如何才能提示用戶需要登錄或注冊(cè)?

假設(shè)用戶訪問index.jsp頁(yè)面,而該頁(yè)面只能是注冊(cè)用戶才能訪問,那么在index.jsp的頁(yè)頭加入下列語(yǔ)句:

這表示要在本頁(yè)index.jsp其他代碼運(yùn)行前,必須先運(yùn)行signin.jsp。signin.jsp是用戶的登錄頁(yè)面,用戶通過登錄頁(yè)面實(shí)現(xiàn)用戶和密碼的驗(yàn)證。

登錄頁(yè)面signin.jsp的代碼如下:

charset=UTF-8" %>

scope="session" class="com.jdon.simpleregister.SignIn"

/>

if (signIn.getAction() != null){

if (!signIn.validate())

out.println("

用戶名或密碼錯(cuò)誤");

if? (signIn.SignIn())

out.println("

登錄成功");

}

if

(!signIn.isAuth()){?? //如果沒有進(jìn)行過登錄驗(yàn)證

%>

用戶注冊(cè)

method="post">

value="login">

用戶:

name="userid" size="10">

密碼:

type="password" name="password"

size="10">

value="Reset">

//將之前參數(shù)保存起來,準(zhǔn)備再次提交

java.util.Enumeration e=request.getParameterNames();

while(e.hasMoreElements()){

String

param=(String)e.nextElement();

out.println("

name=\""+param+"\"

value=\""+request.getParameter(param)+"\"

>");

} %>

?

return;

}%>

在這個(gè)signIn.jsp中實(shí)現(xiàn)了兩大功能:第一是提供用戶第一次登錄驗(yàn)證功能;第二是保存第一次登錄驗(yàn)證信息。

首先,在signin.jsp中,提供了登錄用表單界面顯示,當(dāng)用戶填寫好表單Form按提交后,實(shí)現(xiàn)表單中用戶名和密碼的驗(yàn)證功能。

signin.jsp通過檢查signIn.getAction()是否為空來判斷當(dāng)前是顯示表單還是處理表單,只有用戶提交登錄表單,signIn.getAction()將為“l(fā)ogin”,這是執(zhí)行signIn.

SignIn()方法,將提交表單中的用戶名和密碼與數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行比較,如果驗(yàn)證錯(cuò)誤,signIn.isAuth()還是不為真,將繼續(xù)顯示登錄表單要求用戶再次輸入,直至登錄驗(yàn)證正確。

如果用戶已經(jīng)通過了驗(yàn)證,SignIn實(shí)例將以Session形式繼續(xù)存在,因?yàn)樗斜槐Wo(hù)的JSP頁(yè)面都會(huì)include這個(gè)signin.jsp文件。因此,將每次都調(diào)用signIn.isAuth(),而同一個(gè)用戶每次訪問的都是同一個(gè)SignIn實(shí)例。這樣,該用戶第一次通過查詢數(shù)據(jù)庫(kù)登錄驗(yàn)證后,以后就不必再次實(shí)行數(shù)據(jù)庫(kù)操作,提高了頁(yè)面處理速度。這也是緩沖Cache的一種優(yōu)勢(shì)體現(xiàn)。

新用戶注冊(cè)是本項(xiàng)目的主要功能,需要顯示用戶應(yīng)該輸入的相應(yīng)條目,用戶輸入Form表單數(shù)據(jù)后,將提交另外一個(gè)JSP頁(yè)面處理。現(xiàn)在將這兩個(gè)功能也合并在一個(gè)JSP頁(yè)面中實(shí)現(xiàn)。同時(shí)個(gè)人資料有新增和修改兩個(gè)功能,在signup.jsp中也將這兩個(gè)功能合并在一起。

在signup.jsp實(shí)現(xiàn)4個(gè)功能:個(gè)人資料新增表單的顯示;處理新增表單;個(gè)人資料修改表單的顯示;處理修改后的表單。

注冊(cè)頁(yè)面signup.jsp的代碼主要結(jié)構(gòu)如下:

charset=UTF-8" %>

//如果本頁(yè)面出錯(cuò),直接顯示errorpage.jsp內(nèi)容

errorPage="errorpage.jsp?from=signup.jsp" %>

import="com.jdon.simpleregister.Constants"%>

scope="session" class="com.jdon.simpleregister.SignIn"

/>

scope="page" class="com.jdon.simpleregister.Profile" />

property="*" />

//如果提交的是新增動(dòng)作

if (request.getParameter("add")!=null)

{

//并且現(xiàn)有數(shù)據(jù)庫(kù)這個(gè)email沒有存在

if (prof.EmailExist()){

%>

page="error.jsp?error_info=email已經(jīng)存在 請(qǐng)重新調(diào)換一個(gè)!"

flush="true"/>

return;

}

//通過Profile類的insert()方法將提交的表單中數(shù)據(jù)插入

int rs=prof.insert();

%>注冊(cè)成功!

}else if

(request.getParameter("edit")!=null) //如果是編輯

{

// SignIn實(shí)例必須在session中存在,在SignIn實(shí)例中

//保存用戶的用戶和密碼

if? (!signIn.SignIn())??? {

out.println("No login");

return;

}

//處理用戶修改后的表單數(shù)據(jù)

prof.update();

%>注冊(cè)資料修改成功!

}else{

%>

method=post οnsubmit="return Juge(this);">

//將SignIn實(shí)例中的userid賦值給Profile實(shí)例prof

prof.setUserid(signIn.getUserid());

//prof根據(jù)輸入的參數(shù)userId,查詢?cè)撚脩魯?shù)據(jù)庫(kù)中其他數(shù)據(jù),并保存在

//prof相關(guān)變量中

if (signIn.SignIn() && prof.select()){

%>

用戶名:

type="hidden" name="edit" value="1">

}else{//否則 當(dāng)前為顯示個(gè)人資料新增表單

用戶名

class="button" name="userid" value="" size=10>

}

%>

新增個(gè)人資料和編輯個(gè)人資料的重要區(qū)別是:后者用戶必須是登錄后的,即執(zhí)行signin.jsp并且驗(yàn)證成功。因?yàn)閟cope是session,那么SignUp這個(gè)類的實(shí)例就在內(nèi)存中一直存在,直到該用戶離開系統(tǒng),其他JSP就可以直接從內(nèi)存中獲得SignUp實(shí)例中變量,這些變量的值由用戶在signin.jsp輸入的。

個(gè)人資料新增表單的示意圖如圖2-4所示。

如果用戶通過登錄頁(yè)面登錄成功后,再執(zhí)行signup.jsp,結(jié)果顯示也幾乎是圖2-4,不同的是,各個(gè)數(shù)據(jù)空格中已經(jīng)有相應(yīng)的數(shù)據(jù)值,新增和編輯都使用的是同一個(gè)JSP頁(yè)面,這樣顯得簡(jiǎn)潔有效。

在signup.jsp中使用了

errorPage="errorpage.jsp?from=signup.jsp" %>,這表示signup.jsp萬(wàn)一發(fā)生錯(cuò)誤,不直接顯示那些錯(cuò)誤,而是轉(zhuǎn)而顯示errorpage.jsp。在errorpage.jsp會(huì)顯示更加友好的提示信息,比如“對(duì)不起,頁(yè)面出錯(cuò)了,請(qǐng)和系統(tǒng)管理員聯(lián)系”。塑造一個(gè)界面友好的系統(tǒng)是成熟產(chǎn)品的一個(gè)象征,如圖2-5所示。

?????

圖2-4個(gè)人資料新增頁(yè)面圖2-5出錯(cuò)幫助頁(yè)面

2.5調(diào)試、發(fā)布和運(yùn)行

單元測(cè)試是非常重要的。本項(xiàng)目中關(guān)鍵的是兩個(gè)通用類,要對(duì)這兩個(gè)通用類實(shí)現(xiàn)單元測(cè)試,以保證功能符合要求地正常運(yùn)行。

關(guān)于重要類的單元測(cè)試成功后,需要將本項(xiàng)目放置在Web容器中進(jìn)行集成測(cè)試。這時(shí),如果JSP中包含過多的Java代碼,將使得JSP的調(diào)試變得異常困難。只有在設(shè)計(jì)編碼時(shí),將有關(guān)業(yè)務(wù)邏輯的功能代碼在JavaBeans中實(shí)現(xiàn),依靠JavaBeans的成功測(cè)試,這樣才能保證JSP頁(yè)面的測(cè)試能夠快速通過。

本項(xiàng)目中需要對(duì)兩個(gè)通用類實(shí)現(xiàn)單元測(cè)試,一方面因?yàn)樗鼈児δ芊浅V匾?#xff0c;另外一方面因?yàn)檫@兩個(gè)通用類涉及到系統(tǒng)環(huán)境的配置。

以E-mail發(fā)送的SendMail.java測(cè)試為例。使用JUnit實(shí)現(xiàn)單元測(cè)試,Junit(http://www.junit.org)是一個(gè)開放源代碼的測(cè)試軟件,應(yīng)用非常廣泛。

Junit的使用非常簡(jiǎn)單,實(shí)際只要兩步:

(1)繼承junit.framework.TestCase類編寫自己的測(cè)試類;

(2)在測(cè)試類中編寫自己的testXXXXX()方法。

一般開發(fā)J2EE系統(tǒng)都會(huì)使用IDE工具輔助開發(fā),在以后章節(jié)中談到在J2EE開發(fā)中為什么必須依賴IDE才能提高開發(fā)速度。JBuilder作為首選的IDE工具使用也非常廣泛,在JBuilder中使用Junit更加方便。

首先,需要在JBuilder中安裝Junit的庫(kù)文件junit.jar,然后在JBuilder中建立一個(gè)新的TestCase,取名為TestSendMail,它是繼承junit.framework.TestCase的,用來測(cè)試SendMail.java,代碼如下:

import junit.framework.*;

public class TestSendMail extends TestCase {

private SendMail sendMail = null;

protected void setUp() throws Exception {

super.setUp();

//構(gòu)造SendMail的一個(gè)實(shí)例

sendMail = new SendMail();

}

protected void tearDown() throws Exception {

sendMail = null;

super.tearDown();

}

}

上面測(cè)試代碼的基本框架已經(jīng)完成,下面就是增加自己的測(cè)試方法,需要對(duì)SendMail.java的sendnow()方法實(shí)行測(cè)試,因此在TestSendMail.java中加入testSendnow(),方法如下:

public void testSendnow() {

sendMail.setMsgText("hello this is test");

sendMail.setFrom("banq@jdon.com");

sendMail.setSmtpHost("localhost");

sendMail.setTo("banq@jdon.com");

sendMail.setSubject("test");

try {

sendMail.sendnow();

} catch (Exception e) {

System.err.println(" error:

" + e);

}

}

在JBuilder中,建立TestSendMail.java測(cè)試類的同時(shí),已經(jīng)在這個(gè)project的run中自動(dòng)增加一個(gè)TestSendMail的配置。因此,現(xiàn)在就可以直接運(yùn)行TestSendMail測(cè)試類了。

注意,TestSendMail中發(fā)送郵件的SMTP服務(wù)器是設(shè)置成localhost。那么如果使用Windows 2000,就要配置Windows的SMTP服務(wù)功能,當(dāng)然也可以指定其他域名或IP地址作為SMTP服務(wù)器。

通過運(yùn)行TestSendMail,在沒有錯(cuò)誤顯示的情況下,banq@jdon.com會(huì)收到一封該測(cè)試類發(fā)出的信件。

總結(jié)

以上是生活随笔為你收集整理的电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。