성명서: 원본은 작성자가 작성했으며 모든 권리는 보유됩니다. 무단 복제는 허용되지 않습니다. jsp에서 사용자 등록 및 로그인을 공동으로 구현하려면 Bean과 서블릿을 사용하세요
.
저작권: imagebear
이 예에 필요한 소프트웨어 및 운영 환경:
1. Windows2000 서버 운영 체제
2.jdk1.4
3. JCreator2.5 (자바 소스코드 편집 디버거, 피 토하는 분들에게 추천!)
4. 매크로미디어 JRun MX
5. 매크로미디어 드림위버 MX(선택 사항)
6. MySQL 데이터베이스(MySQL Control Center를 설치하는 것이 가장 좋습니다)
1. 데이터베이스 설계 MySQL Control Center로 MySQL 데이터베이스를 열고, 새 데이터베이스 쇼핑을 생성하고, 그 아래에 새 테이블 tbl_user를 생성합니다. 각 필드는 다음과 같이 설정됩니다.
2. 연결 데이터베이스 빈을 작성합니다: DBConn.java
//DBConn.java
//필수 클래스 포함
import java.sql.*
//====================================== = =
// ClassDBConn 정의
//==========================================
공개 클래스DBConn
{
공개 문자열 sql_driver = "org.gjt.mm.mysql.Driver";
공개 문자열 sql_url = "jdbc:mysql://localhost:3306";
공개 문자열 sql_DBName = "쇼핑";
공개 문자열 사용자 = "sa";
공개 문자열 pwd = ""
연결 conn = null;
명령문 stmt = null;
ResultSet rs = null;
공개 부울 setDriver(String drv)
{
this.sql_driver = drv;
사실을 반환;
}
공개 문자열 getDriver()
{
this.sql_driver를 반환합니다.
}
공개 부울 setUrl(문자열 URL)
{
this.sql_url = URL;
사실을 반환;
}
공개 부울 setDBName(String dbname)
{
this.sql_DBName = DB이름;
사실을 반환;
}
공개 문자열 getDBName()
{
this.sql_DBName을 반환합니다.
}
공개 부울 setUser(문자열 사용자)
{
this.user = 사용자;
사실을 반환;
}
공개 문자열 getUser()
{
this.user를 반환하십시오.
}
공개 부울 setPwd(String pwd)
{
this.pwd = 비밀번호;
사실을 반환;
}
공개 문자열 getPwd()
{
this.pwd를 반환합니다;
}
공개DBConn()
{
노력하다{
Class.forName(sql_driver);//데이터베이스 드라이버 로드
this.conn = DriverManager.getConnection(sql_url + "/" + sql_DBName + "?user=" + user + "&password=" + pwd + "&useUnicode=true&characterEncoding=gb2312");
this.stmt = this.conn.createStatement();
}catch(예외 e){
System.out.println(e.toString());
}
}
//쿼리 작업 수행
공개 결과 집합 실행 쿼리(문자열 strSql)
{
노력하다{
this.rs = stmt.executeQuery(strSql);
반환 this.rs;
}catch(SQLException e){
System.out.println(e.toString());
null을 반환;
}catch(NullPointerException e){
System.out.println(e.toString());
null을 반환;
}
}
//데이터 삽입, 삭제, 수정 작업을 수행합니다.
공개 부울 실행(문자열 strSql)
{
노력하다{
if(this.stmt.executeUpdate(strSql) == 0)
거짓을 반환;
또 다른
사실을 반환;
}catch(SQLException e){
System.out.println(e.toString());
거짓을 반환;
}catch(NullPointerException e){
System.out.println(e.toString());
거짓을 반환;
}
}
//결과 집합 포인터가 특정 행으로 점프합니다.
공개 부울 rs_absolute(int 행)
{
노력하다{
this.rs.absolute(행);
사실을 반환;
}catch(SQLException e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 무효 rs_afterLast()
{
노력하다{
this.rs.afterLast();
}catch(SQLException e){
System.out.println(e.toString());
}
}
공개 무효 rs_beforeFirst()
{
노력하다{
this.rs.beforeFirst();
}catch(SQLException e){
System.out.print(e.toString());
}
}
공개 무효 rs_close()
{
노력하다{
this.rs.close();
}catch(SQLException e){
System.out.print(e.toString());
}
}
공개 무효 rs_deleteRow()
{
노력하다{
this.rs.deleteRow();
}catch(SQLException e){
System.out.print(e.toString());
}
}
공개 부울 rs_first()
{
노력하다{
this.rs.first();
사실을 반환;
}catch(SQLException e){
System.out.print(e.toString());
거짓을 반환;
}
}
공개 문자열 rs_getString(문자열 열)
{
노력하다{
return this.rs.getString(열);
}catch(SQLException e){
System.out.println(e.toString());
null을 반환;
}
}
//이 메서드는 큰 텍스트 섹션을 얻는 데 사용됩니다.
//캐리지 리턴과 라인 피드를 <br>로 교체합니다.
//html 페이지로 출력
공개 문자열 rs_getHtmlString(문자열 열)
{
노력하다{
문자열 str1 = this.rs.getString(열);
문자열 str2 = "rn";
문자열 str3 = "<br>";
return this.replaceAll(str1,str2,str3);
}catch(SQLException e){
System.out.println(e.toString());
null을 반환;
}
}
//str1 문자열의 str2 문자열을 str3 문자열로 바꿉니다.
개인 정적 문자열 교체All(문자열 str1,문자열 str2,문자열 str3)
{
StringBuffer strBuf = new StringBuffer(str1);
정수 인덱스=0;
while(str1.indexOf(str2,index)!=-1)
{
index=str1.indexOf(str2,index);
strBuf.replace(str1.indexOf(str2,index),str1.indexOf(str2,index)+str2.length(),str3);
index=index+str3.length();
str1=strBuf.toString();
}
strBuf.toString()을 반환합니다.
}
공개 int rs_getInt(문자열 열)
{
노력하다{
return this.rs.getInt(열);
}catch(SQLException e){
System.out.println(e.toString());
-1을 반환합니다.
}
}
공개 int rs_getInt(int 열)
{
노력하다{
return this.rs.getInt(열);
}catch(SQLException e){
System.out.println(e.toString());
-1을 반환합니다.
}
}
공개 부울 rs_next()
{
노력하다{
return this.rs.next();
}catch(SQLException e){
System.out.println(e.toString());
거짓을 반환;
}
}
//결과 세트에 데이터가 있는지 확인
공개 부울 hasData()
{
노력하다{
부울 has_Data = this.rs.first();
this.rs.beforeFirst();
has_Data를 반환합니다.
}catch(SQLException e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 부울 rs_last()
{
노력하다{
return this.rs.last();
}catch(SQLException e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 부울 rs_previous()
{
노력하다{
return this.rs.previous();
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
//디버깅에 사용되는 기본 메서드
공개 정적 무효 메인(문자열 인수[])
{
노력하다{
DBConn myconn = 새로운 DBConn();
//myconn.setDBName("쇼핑");
//myconn.DBConn();
//myconn.execute("tbl_test(id,name) 값에 삽입('10','shandaer')");
//myconn.execute("tbl_test 세트 이름 업데이트='yyyyyyyyyyyy', 여기서 ID=10");
//myconn.execute("id=1인 tbl_test에서 삭제");
ResultSet rs = myconn.executeQuery("ID 설명 제한 1에 따라 tbl_user 순서에서 * 선택");
//부울 hasData = myconn.hasData();
//System.out.println("데이터 있음:" + hasData);
//rs.first();
동안(myconn.rs.next())
{
int id = myconn.rs_getInt("id") + 1;
System.out.print(id);
System.out.println(myconn.rs_getInt("id") + myconn.rs_getString("name"));
//System.out.println('n' + myconn.rs_getHtmlString("이름"));
//System.out.println(myconn.rs.getString("이름") + myconn.rs_getInt(1));
}
}catch(예외 e){
System.err.println(e.toString());
}
}
}
설명: MySQL 데이터베이스를 사용하고 있으므로 MySQL 데이터베이스 드라이버를 다운로드해야 합니다. 다운로드 후 빈이 정상적으로 실행될 수 있도록 DBConn.java가 있는 디렉터리에 org 패키지를 넣어주세요.
3. 사용자 등록을 위한 빈 작성: reg.java
//reg.java
//필요한 클래스 가져오기
java.sql
.*;
{
공개 int newID = 0;
공개 부울 결과 = false;
공개 부울 reg(문자열 사용자 이름, 문자열 비밀번호, 문자열 확인, 문자열 이메일)
{
노력하다{
if(!this.checkUser(사용자 이름))
거짓을 반환;
if(!this.checkPwd(비밀번호))
거짓을 반환;
if(!this.verifyPwd(비밀번호,확인))
거짓을 반환;
if(!this.checkEmail(이메일))
거짓을 반환;
if(!this.userNotExit(사용자 이름))
거짓을 반환;
this.getNewID();
this.result = this.register(사용자명,비밀번호,확인,이메일);
this.result를 반환하세요.
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}//부울 등록 종료
public boolean checkUser(문자열 사용자)
{
노력하다{
if(user.indexOf("'")!=-1)
{
System.out.println("이름에 잘못된 문자가 포함되어 있습니다!");
거짓을 반환;
}또 다른
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 부울 checkPwd(문자열 비밀번호)
{
노력하다{
if(pwd.indexOf("'")!=-1)
{
System.out.println("비밀번호에 잘못된 문자가 포함되어 있습니다!");
거짓을 반환;
}또 다른
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
public boolean verifyPwd(문자열 비밀번호,문자열 확인)
{
노력하다{
if(!pwd.equals(확인))
{
System.out.println("두 번 입력한 비밀번호가 일치하지 않습니다!");
거짓을 반환;
}또 다른
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 부울 checkEmail(문자열 이메일)
{
노력하다{
if(email.indexOf("'")!=-1)
{
System.out.println("이메일에 잘못된 문자가 포함되어 있습니다!");
거짓을 반환;
}또 다른
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 부울 userNotExit(문자열 사용자)
{
노력하다{
DBConn userDBConn = 새로운 DBConn();
userDBConn.executeQuery("select * from tbl_user where name='" + user + "'");
if(userDBConn.rs_next())
{
System.out.println("사용자 이름이 이미 존재합니다. 다른 사용자 이름을 선택하십시오!");
거짓을 반환;
}또 다른
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 int getNewID()
{
노력하다{
DBConn newIDDBConn = 새로운 DBConn();
newIDDBConn.executeQuery("ID 설명 제한 1을 기준으로 tbl_user 순서에서 * 선택");
if(newIDDBConn.rs_next())
{
this.newID = newIDDBConn.rs_getInt("id") + 1;
System.out.println(this.newID);
}또 다른{
this.newID = 1;
}
this.newID를 반환합니다.
}catch(예외 e){
System.out.println(e.toString());
-1을 반환합니다.
}
}
공개 int getID()
{
this.newID를 반환합니다.
}
공개 부울 레지스터(문자열 사용자 이름, 문자열 비밀번호, 문자열 확인, 문자열 이메일)
{
노력하다{
DBConn regDBConn = 새로운 DBConn();
String strSQL = "tbl_user(id,name,pwd,email) 값에 삽입('" + this.newID +"','" + 사용자 이름 + "','" + 비밀번호 + "','" + email + " ')";
regDBConn.execute(strSQL);
사실을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 정적 무효 메인(문자열 인수[])
{
노력하다{
reg newreg = 새로운 reg();
System.out.println(newreg.reg("sssssssss","ssssss","ssssss"," [email protected] "));
DBConn myconn = 새로운 DBConn();
myconn.executeQuery("tbl_user에서 * 선택");
동안(myconn.rs_next())
{
System.out.println(myconn.rs_getInt("id") + " " + myconn.rs_getString("name") + " " + myconn.rs_getString("pwd") + " " + myconn.rs_getString("email") );
}
System.out.println(newreg.getID());
}catch(예외 e){
System.err.println(e.toString());
}
}
};
설명:
1. Bean 파일은 위에서 언급한 DBConn.class 파일과 동일한 디렉터리에 있어야 합니다.
2. 이 예제는 주로 등록 프로세스를 연구합니다. 이메일 감지 및 기타 방법은 완벽하지 않습니다. 이를 적용하려면 자신만의 방법을 설계하십시오.
4. 사용자 로그인을 위한 서블릿 작성: login.java
//login.java
//필수 클래스 가져오기
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*
//클래스 로그인
공개 클래스 로그인은 HttpServlet을 확장합니다.
{
공개 무효 doGet(HttpServletRequest req,HttpServletResponse res)
throwsIOException,ServletException
{
String 사용자 이름 = req.getParameter("사용자 이름");
문자열 비밀번호 = req.getParameter("password");
if(this.checklogin(사용자 이름, 비밀번호))
{
쿠키 mylogin = new Cookie("사용자 이름", 사용자 이름);
mylogin.setVersion(1);
mylogin.setPath("/");
mylogin.setComment("귀하의 로그인 사용자 이름");
res.addCookie(mylogin);
}
//쿠키[] myCookies = req.getCookies();
//String nameValue = this.getCookieValue(myCookies,"사용자 이름","찾을 수 없음");
//PrintWriter out = res.getWriter();
//out.println("사용자 이름" + ":" + nameValue);
//out.println("쿠키 테스트 성공!");
res.sendRedirect("/index.jsp");
}
공개 무효 doPost(HttpServletRequest req,HttpServletResponse res)
throwsIOException,ServletException
{
doGet(req,res);
}
공개 정적 문자열 getCookieValue(쿠키[] 쿠키, 문자열 cookieName, 문자열 defaultValue)
{
for(int i=0;i<cookies.length;i++) {
쿠키 쿠키 = 쿠키[i];
if (cookieName.equals(cookie.getName()))
return(cookie.getValue());
}
return(기본값);
}
공개 부울 체크로그인(문자열 사용자 이름, 문자열 비밀번호)
{
노력하다{
DBConn loginConn = 새로운 DBConn();
loginConn.executeQuery("select * from tbl_user where name='" + 사용자 이름 + "'");
if(loginConn.rs_next())
{
System.out.println("연결이 생성되었습니다!");
if(loginConn.rs_getString("pwd").trim().equals(password))
{
System.out.println(loginConn.rs_getString("이름"));
사실을 반환;
}
또 다른
{
거짓을 반환;
}
}
System.out.println("테스트 로그인 성공!");
거짓을 반환;
}catch(예외 e){
System.out.println(e.toString());
거짓을 반환;
}
}
공개 정적 무효 메인(문자열 인수[])
{
로그인 mylogin = 새 로그인();
System.out.println(mylogin.checklogin("shandong","shandong"));
}
}
설명합니다:
1. 기본 jdk1.4에는 서블릿 패키지가 없습니다.sun 회사 웹 사이트로 이동하여 servlet.jar을 다운로드하고 jdk 디렉토리 아래의 jrelib 디렉토리에 넣은 다음 servlet.jar 패키지를 추가하십시오. JCreator 2의 jdk 설정.
이 서블릿은 사용자 이름과 비밀번호를 확인하는 데 사용됩니다. 올바른 경우 사용자 이름이 쿠키에 기록되고 완료 후 현재 페이지가 index.jsp 페이지로 리디렉션됩니다.
5. 사용자가 로그인했는지 여부를 감지하는 빈을 작성합니다. checkLogin.java
//checkLogin.java
//필요한 클래스 가져오기
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*
//클래스 checkLogin;
공개 클래스 체크로그인
{
공개 문자열 사용자 이름 = "";
공개 부울 검사(HttpServletRequest req,HttpServletResponse res)
throwsIOException,ServletException
{
String cookieName = "사용자 이름";
쿠키[] myCookies = req.getCookies();
this.username = this.getCookieValue(myCookies,cookieName,"찾을 수 없음");
PrintWriter out = res.getWriter();
if(this.username != null)
{
//out.println("좋은 아침입니다." + this.username + "!");
사실을 반환;
}또 다른{
out.println("로그인에 실패했습니다!");
거짓을 반환;
}
}
공개 문자열 getUserName()
{
this.username을 반환하십시오.
}
공개 정적 문자열 getCookieValue(쿠키[] 쿠키, 문자열 cookieName, 문자열 defaultValue)
{
for(int i=0;i<cookies.length;i++) {
쿠키 쿠키 = 쿠키[i];
if (cookieName.equals(cookie.getName()))
return(cookie.getValue());
}
return(기본값);
}
}
설명: 이 빈은 쿠키에서 사용자 이름을 감지합니다. 비어 있지 않으면 로그인되어 있음을 의미하고, 그렇지 않으면 로그인되지 않음을 의미합니다. 방법이 완벽하지는 않습니다. 직접 확장할 수 있습니다.
6. JRun에서 쇼핑 서버를 생성합니다. JRun 관리자를 열고 새 쇼핑 서버를 생성합니다. 여기서 포트는 8101입니다.
위에서 언급한 모든 컴파일된 클래스 파일을 조직 패키지와 함께 JRun 쇼핑 서버가 있는 디렉터리의 클래스 폴더에 복사합니다. 경로는 다음과 같습니다.
C:JRun4serversshoppingdefault-eardefault-warWEB-INFclasses
7. C:JRun4serversshoppingdefault-eardefault-war 디렉터리에 jsp 파일 애플리케이션 DW를 생성합니다. 다음과 같이 새 jsp 파일을 만듭니다.
index.jsp:
<%@ 페이지 contentType="text/html;charset=gb2312" pageEncoding="gb2312" %>
<html>
<머리>
<title>쇼핑123</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<jsp:useBean id="checklogin" class="checkLogin" 범위="페이지"/>
<%
부울 로그인 = checklogin.check(요청,응답);
%>
<table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr bgcolor="#990000">
<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr>
<td width="120"> </td>
<td class="caption">쇼핑123</td>
<td width="200"> </td>
</tr>
</table></td>
</tr>
<tr>
<td width="200" align="center" valign="top"><table width="100%" height="20" border="0" cellpadding="0" cellpacing="0">
<tr>
<td> </td>
</tr>
</table>
<%
if(!로그인){
%>
<table width="90%" border="0" align="center" cellpadding="0" cellpacing="1" bgcolor="#CCCCCC">
<form name="form1" method="post" action="/servlet/login">
<tr align="center" bgcolor="#CCCCCC">
<td height="30" colspan="2" class="deepred">보관소 입구</td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">회원</td>
<td align="center" bgcolor="#FFFFFF"><input name="username" type="text" id="username" size="10"></td>
</tr>
<tr>
<td height="24" align="center" bgcolor="#FFFFFF">비밀번호</td>
<td align="center" bgcolor="#FFFFFF"><input name="password" type="text" id="password" size="10"></td>
</tr>
<tr>
<td height="24" align="center" bgcolor="#FFFFFF"><a href="reg.jsp" target="_blank" class="red">등록</a></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="Submit" value="Enter"></td>
</tr>
</form>
</table>
<%
}
또 다른
{
out.println("안녕하세요," + checklogin.getUserName() + "!");
}
%>
</td>
<td width="1" valign="top" bgcolor="#CCCCCC"></td>
<td width="400"> </td>
<td width="1" valign="top" bgcolor="#CCCCCC"></td>
<td width="200"> </td>
</tr>
<tr align="center" bgcolor="#990000">
<td height="60" colspan="5" class="white">저작권&복사 2003 쇼핑123</td>
</tr>
</table>
</body>
</html>
reg.jsp<%@ 페이지 contentType="text/html;charset=gb2312" pageEncoding="gb2312" %>
<html>
<머리>
<title>쇼핑123</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr bgcolor="#990000">
<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr>
<td width="120"> </td>
<td class="caption">쇼핑123</td>
<td width="200"> </td>
</tr>
</table></td>
</tr>
<tr>
<td width="100" align="center" valign="top"> </td>
<td width="1" valign="top"></td>
<td width="400" align="center" valign="top"><table width="100%" height="20" border="0" cellpadding="0" cellpacing="0">
<tr>
<td> </td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellpacing="1" bgcolor="#CCCCCC">
<form action="regpost.jsp" method="post" name="form1">
<tr 정렬="가운데">
<td height="30" colspan="2" bgcolor="#CCCCCC" class="deepred">회원가입</td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">회원</td>
<td align="center" bgcolor="#FFFFFF"><input name="username" type="text" id="username" size="16"></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">비밀번호</td>
<td align="center" bgcolor="#FFFFFF"><input name="password" type="password" id="password" size="16"></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">비밀번호 확인</td>
<td align="center" bgcolor="#FFFFFF"><input name="confirm" type="password" id="confirm" size="16"></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">이메일</td>
<td align="center" bgcolor="#FFFFFF"><input name="email" type="text" id="email" size="16"></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF"><input type="submit" name="Submit" value="Rewrite"></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="Submit2" value="등록"></td>
</tr>
</form>
</table></td>
<td width="1" valign="top"></td>
<td width="100"> </td>
</tr>
<tr align="center" bgcolor="#990000">
<td height="60" colspan="5" class="white">저작권&복사 2003 쇼핑123</td>
</tr>
</table>
</body>
</html>
regpost.jsp: 등록 양식 제출 페이지 <%@ page contentType="text/html;charset=gb2312" pageEncoding="gb2312" %>
<%@ 페이지 가져오기="reg"%>
<html>
<머리>
<title>쇼핑123</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<%
String 사용자 이름 = new String(request.getParameter("username").getBytes("ISO8859_1")).trim();
문자열 비밀번호 = new String(request.getParameter("password").getBytes("ISO8859_1")).trim();
문자열 확인 = new String(request.getParameter("confirm").getBytes("ISO8859_1")).trim();
String email = new String(request.getParameter("email").getBytes("ISO8859_1")).trim();
%>
<table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr bgcolor="#990000">
<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellpacing="0">
<tr>
<td width="120"> </td>
<td class="caption">쇼핑123</td>
<td width="200"> </td>
</tr>
</table></td>
</tr>
<tr>
<td width="100" align="center" valign="top"> </td>
<td width="1" valign="top"></td>
<td width="400" align="center" valign="top">
<table width="100%" height="20" border="0" cellpadding="0" cellpacing="0">
<tr>
<td> </td>
</tr>
</table>
<jsp:useBean id="regID" 클래스="reg" 범위="세션"/>
<%
if(regID.reg(사용자 이름, 비밀번호, 확인, 이메일))
{
out.print("확인");
문자열 newID = regID.getID() + "";
%>
<table width="100%" border="0" cellpadding="0" cellpacing="1" bgcolor="#CCCCCC">
<tr 정렬="가운데">
<td height="30" colspan="2" bgcolor="#CCCCCC" class="deepred">축하합니다. 등록이 완료되었습니다! </td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">숫자</td>
<td align="center" bgcolor="#FFFFFF"><%=newID%></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">회원</td>
<td align="center" bgcolor="#FFFFFF"><%=사용자 이름%></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">비밀번호</td>
<td align="center" bgcolor="#FFFFFF"><%=password%></td>
</tr>
<tr>
<td width="50%" height="24" align="center" bgcolor="#FFFFFF">이메일</td>
<td align="center" bgcolor="#FFFFFF"><%=email%></td>
</tr>
</table>
<%
out.print("<br>");
out.print("<a href=javascript:window.close()>닫기</a>");
}또 다른{
out.print("등록에 실패했습니다!<br>");
out.print("이미 사용된 사용자 이름입니다. 다른 사용자 이름을 사용해주세요!");
out.print("<a href=javascript:history.go(-1)>반환</a>");
}
%>
</td>
<td width="1" valign="top"></td>
<td width="100"> </td>
</tr>
<tr align="center" bgcolor="#990000">
<td height="60" colspan="5" class="white">저작권&복사 2003 쇼핑123</td>
</tr>
</table>
</body>
</html>
현재까지 사용자 등록 및 로그인 시스템을 완료하였습니다. 직접 배우면서 완성한 코드라 부족한 점이 많을 테니 여러분의 비판과 지적을 환영합니다. 위 코드는 모두 제가 테스트한 것입니다.