2008. 9. 8. 14:33

자바빈과 세션을 이용한 회원가입

JavaBean 경로: registerBean2/WEB-INF/src/reg

Jsp파일 경로: registerBean2/join


파일 설명: 우선 memberList.jsp는 게시판 형태로 로그인한 사람들의 정보를 보여준다.

               로그인과 회원가입 버튼으로 각 기능을 수행할수 있다.

               로그인시 게시판 상단에 로그인한 아이디와 로그아웃 버튼이 보인다.


               * 위) 로그인하기 전 , 아래) 로그인후 memberList.jsp파일




              

               memberList.jsp  --> 리스트 보여주기

               loginin.jsp  --> 로그인

               loginout.jsp --> 로그아웃

               loginin_ok.jsp  --> 로그인 ok

               login_err.jsp  -->  로그인이 안될 경우 표시

               Register.jsp , Register_ok.jsp   --> 회원가입정보 입력

               Zipcheck.jsp , ZipcodeBean --> 회원가입정보에서 우편번호 검색및 입력 파일

               idCheck.jsp  --> ID 중복검사

               script.js --> 자바스크립트 모음

               RegisterBean.java  --> 회원가입 정보 임시 저장 파일

               Methodinsert.jsp --> 값을 빈에 넣어주는 지시 파일

               MemberMgr.java  --> 모든 처리가 담긴 빈 파일



* 본 파일을 모두 올릴 경우 스크롤이 상당히 길어지므로 중요한 memberList.jsp (게시판파일)

  값을 저장하는 RegisterBean.java , MemberMgr.java 파일만 소스를 보여주며,

  전체파일은 압축하여 올린다.


* 본 작업은 이클립스와 오라클을 기준으로 하며, workspace자체를 올렸으므로 사용할 경우 파일들을

   프로젝트 폴더에 수동으로 옮겨 작업 하기를 권한다.



 1) 데이터베이스 구성

    create table mem(
    id varchar(12) not null primary key,
    passwd varchar(12) not null,
    name varchar(10) not null,
    jumin_num1 varchar(6) not null,
    jumin_num2 varchar(7) not null,
    email varchar(30),
    phone varchar(13) not null
    );


 2) memberList.jsp  


  <%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" import="reg.*,java.util.*"%>

 //id 세션값이 있으면
<% String mem_id = (String)session.getAttribute("idKey"); %>
<% if(mem_id!= null){ %>
 지금 <font color=red><b><%=mem_id %></b></font>로 로그인하셨습니다.


 <%}else{} %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>로그인 목록</title>
</head>
<body>
<table border=1>
 <tr>
  <td>Id</td>
  <td>name</td>
  <td>mem_num1</td>
  <td>mem_num2</td>
  <td>e_mail</td>
  <td>phone</td>
  <td>zipcode</td>
  <td>address</td>
  <td>job</td>
 </tr>
 <jsp:useBean id="memMgr" class="reg.MemberMgr" />  
 <%
      Vector vlist = memMgr.getMemberList();     //getMemberList()메소드는 벡터로 반환
      int counter = vlist.size();  //벡터의 사이즈 크기는 레코드의 개수를 얘기한다.
      
      for(int i=0;i<vlist.size();i++)
      {
     // elementAt()메소드는 값 반환을 Object형으로 반환
     RegisterBean regBean = (RegisterBean)vlist.elementAt(i); 
     // elementAt() 메소드는 벡터에 있는 요소에 접근하기 위한 메소드이다.
    %>
 <tr>
  <td><%=regBean.getMem_id() %></td>
  <td><%=regBean.getMem_name() %></td>
  <td><%=regBean.getMem_num1() %></td>
  <td><%=regBean.getMem_num2() %></td>
  <td><%=regBean.getMem_email() %></td>
  <td><%=regBean.getMem_phone() %></td>
  <td><%=regBean.getMem_zipcode() %></td>
  <td><%=regBean.getMem_address() %></td>
  <td><%=regBean.getMem_job() %></td>
 </tr>
 <%
  }
 %>
 <tr>
    <td colspan=9 align=right>
    <input type=button value=로그인 onclick="javascript:location.href('loginin.jsp')">
    <%if(mem_id!=null){ %>
    <input type=button value=로그아웃 onclick="javascript:location.href('logout.jsp')">
    <%}else{}%>
    <input type=button value=회원가입 onclick="javascript:location.href('Register.jsp')"></td>
 </tr>
</body>
</html>


 3) RegisterBean.java

package reg;

public class RegisterBean {
 private String mem_id;
 private String mem_passwd;
 private String mem_name;
 private String mem_num1;
 private String mem_num2;
 private String mem_email;
 private String mem_phone;
 private String mem_zipcode;
 private String mem_address;
 private String mem_job;
 

//get메소드와 set메소드 설정을 외워두세요...
 public String getMem_id(){
  return mem_id;
 }
 public void setMem_id(String mem_id){
  this.mem_id = mem_id;
 }
 
 public String getMem_passwd(){
  return mem_passwd;
 }
 public void setMem_passwd(String mem_passwd){
  this.mem_passwd = mem_passwd;
 }
 
 public String getMem_name(){
  return mem_name;
 }
 public void setMem_name(String mem_name){
  this.mem_name = mem_name;
 }
 
 public String getMem_num1(){
  return mem_num1;
 }
 public void setMem_num1(String mem_num1){
  this.mem_num1 = mem_num1;
 }
 
 public String getMem_num2(){
  return mem_num2;
 }
 public void setMem_num2(String mem_num2){
  this.mem_num2 = mem_num2;
 }
 
 public String getMem_email(){
  return mem_email;
 }
 public void setMem_email(String mem_email){
  this.mem_email = mem_email;
 }
 
 public String getMem_phone(){
  return mem_phone;
 }
 public void setMem_phone(String mem_phone){
  this.mem_phone = mem_phone;
 }

 public String getMem_zipcode(){
  return mem_zipcode;
 }
 public void setMem_zipcode(String mem_zipcode){
  this.mem_zipcode = mem_zipcode;
 }
 
 public String getMem_address(){
  return mem_address;
 }
 public void setMem_address(String mem_address){
  this.mem_address = mem_address;
 }
 
 public String getMem_job() {
  return mem_job;
 }
 public void setMem_job(String mem_job) {
  this.mem_job = mem_job;
 }

}

4) MemberMgr.java          --> 중요~~~

달달달 외워두시면 쓸모 많을겁니다.

각 메소드가 기능에 따라 어떤 메소드를 받고 어떤 쿼리문을 쓰는지 파악하면 반이상은 이해한것입니다.

 

package reg;


import java.util.*;  //vector클래스는 java.util패키지에 속해있다.
import reg.RegisterBean;
import java.sql.*;

 

public class MemberMgr {
    private final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
   private final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
   private final String USER = "system";
   private final String PASS = "oracle";
   
    public MemberMgr(){    //드라이버 셋팅
     try{
        Class.forName(JDBC_DRIVER);
     }catch(Exception e){
      System.out.println("Error:JDBC드라이버 로딩 실패");
     }
    }//MemberMgr종료
   
    /* id중복체크 메소드 */
    public boolean checkId(String id){   
      Connection conn = null;
         PreparedStatement pstmt = null;
         ResultSet rs = null;
         boolean Check = false;
        
         try{
         conn=DriverManager.getConnection(JDBC_URL,USER,PASS);
         String sql="select id from mem where id=?";
         pstmt = conn.prepareStatement(sql);
         pstmt.setString(1,id);
         rs = pstmt.executeQuery();
         Check = rs.next();
                  
         }catch(Exception ex){
          System.out.println("Exception" + ex);         
         }finally{
          if(rs != null)try{rs.close();}catch(SQLException sqle){}
          if(pstmt != null)try{pstmt.close();}catch(SQLException sqle){}
          if(conn != null)try{conn.close();}catch(SQLException sqle){}
         }//finally 끝
        return Check;
    }//checkID메소드 끝
   
    /* login하는 메소드 */
    public boolean loginok(String id,String pw){
     Connection conn = null;
     PreparedStatement pstmt = null;
     ResultSet rs = null;
     boolean Check = false;
     //int Check = 0;
     
     try{
      conn=DriverManager.getConnection(JDBC_URL,USER,PASS);
      String sql = "select id,passwd from mem where id=? and passwd=?";
      pstmt = conn.prepareStatement(sql);
      pstmt.setString(1,id);
      pstmt.setString(2,pw);
      rs = pstmt.executeQuery();
      Check = rs.next();
          
      /*if(rs.next()){
       if(id==""){
        Check=1;
       }else if(pw==""){
        Check=2;
       }else if(id=="" && pw==""){
        Check=3;
       }else{
        Check=4;
       }
      }*/
     
     }catch(Exception ex){
      System.out.println("Exception" + ex);
     }finally{
      if(rs != null)try{rs.close();}catch(SQLException sqle){}
      if(pstmt!=null)try{pstmt.close();}catch(SQLException sqle){}
      if(conn != null)try{conn.close();}catch(SQLException sqle){}
     }
        return Check;
    }
   
    /* 우편번호 검색 메소드 */
    public Vector zipcodeRead(String dong){
     Connection conn = null;
     PreparedStatement pstmt = null;
     //Statement stmt = null;
     ResultSet rs = null;
     Vector ziplist = new Vector();
     
     try{
      conn = DriverManager.getConnection(JDBC_URL,USER,PASS);
      //String sql = "select * from ZIPCODE where DONG like '%" + dong +"%'";
      String sql = "select * from zipcode where dong like '%' || ? || '%'";
      //stmt = conn.createStatement();
      //rs = stmt.executeQuery(sql);
     
      pstmt = conn.prepareStatement(sql);
      pstmt.setString(1,dong);
      rs = pstmt.executeQuery();
      while(rs.next()){
       ZipcodeBean zipBean = new ZipcodeBean();
       zipBean.setZipcode(rs.getString("zipcode"));
       zipBean.setSido(rs.getString("sido"));
       zipBean.setGugun(rs.getString("gugun"));
       zipBean.setDong(rs.getString("dong"));
       zipBean.setBunji(rs.getString("bunji"));
       ziplist.addElement(zipBean);   // 받아온 값을 벡터에 넣는다.
        }
     
     }catch(Exception ex){
      System.out.println("Exception"+ex);
     }finally{
      if(rs != null)try{rs.close();}catch(SQLException e){}
      if(pstmt != null)try{pstmt.close();}catch(SQLException e){}
      //if(stmt != null)try{stmt.close();}catch(SQLException e){}
      if(conn != null)try{conn.close();}catch(SQLException e){}
     }
     return ziplist;     // 반환값을 받기 위해서.
    }
   
    /*일시적으로 RegisterBean값을 memberInsert를 통해 db에 insert한다. */
    public boolean memberInsert(RegisterBean regBean){
     Connection conn = null;
     PreparedStatement pstmt = null;
     boolean flag = false;
     
     try{
      conn=DriverManager.getConnection(JDBC_URL,USER,PASS);
      String sql = "insert into mem values (?,?,?,?,?,?,?,?,?,?)";
      pstmt = conn.prepareStatement(sql);
      pstmt.setString(1,regBean.getMem_id());
      pstmt.setString(2,regBean.getMem_passwd());
      pstmt.setString(3,regBean.getMem_name());
      pstmt.setString(4,regBean.getMem_num1());
      pstmt.setString(5,regBean.getMem_num2());
      pstmt.setString(6,regBean.getMem_email());
      pstmt.setString(7,regBean.getMem_phone());
      pstmt.setString(8,regBean.getMem_zipcode());
      pstmt.setString(9,regBean.getMem_address());
      pstmt.setString(10,regBean.getMem_job());
     
      int counte = pstmt.executeUpdate();
      if (counte > 0){
       flag =true;
      }
     
     }catch(Exception ex){
      System.out.println("Exception" + ex);
     }finally{
      if(pstmt!= null)try{pstmt.close();}catch(SQLException ex){}
      if(conn != null)try{conn.close();}catch(SQLException ex){}
     }
     return flag;
    }
   
    /* Vector로 리스트 보이는 메소드 */
    public Vector getMemberList(){   
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      Vector vecList = new Vector();   
      try{
       conn=DriverManager.getConnection(JDBC_URL,USER,PASS);
       String sql = "select * from mem";
       pstmt = conn.prepareStatement(sql);
       rs = pstmt.executeQuery();
       while(rs.next())
       {
          //while문을 통해 가지고 오는 값을 생성된 빈에 셋팅
        RegisterBean regBean = new RegisterBean();
        regBean.setMem_id(rs.getString("id"));
        regBean.setMem_passwd(rs.getString("passwd"));
        regBean.setMem_name(rs.getString("name"));
        regBean.setMem_num1(rs.getString("jumin_num1"));
        regBean.setMem_num2(rs.getString("jumin_num2"));
        regBean.setMem_email(rs.getString("email"));
        regBean.setMem_phone(rs.getString("phone"));
        regBean.setMem_zipcode(rs.getString("zipcode"));
        regBean.setMem_address(rs.getString("address"));
        regBean.setMem_job(rs.getString("job"));
        vecList.add(regBean);
       }
      }catch(Exception ex){
       System.out.println("Exception"+ex);
      }finally{
       if(rs != null)try{rs.close();}catch(SQLException e){}
       if(pstmt != null)try{pstmt.close();}catch(SQLException e){}
       if(conn != null)try{conn.close();}catch(SQLException e){}
      }
      return vecList;
    }
}