2009년 8월 25일 화요일

JSP 회원가입

package member;

import java.sql.*; 
import member.MemberBean;

 

패키지를 member 로 묶어주자

Sql 문 사용을 위한 import java.sql.*;

MemberBean; 을 사용하기 위해 멤버빈의 패키지 내용과 동일하게 써준다.

 

 

public class MemberProcess
{
  public MemberProcess()
  {
  }
  public void memInsert( MemberBean memberBean )

 

드디어 등장하는 memInsert !!

등록페이지 하단에서 위 메서드를 불러왔고 memberBean 의 값을 넣었는데

이곳에서 받아서 처리를 하게된다.

 

 

    String URL = "jdbc:mysql://localhost:3306/ju1?useUnicode=true&characterEncoding=euckr";

 

 접속을 하기위해 URL 변수에 주소를 담는다.

 


    String USER = "mio";
    String PASS= "****";

 

 접속을 하기 위한 아이디와 패스워드 변수도 지정


   
    Connection conn = null;
    PreparedStatement pstmt = null;

 

 커넥팅 변수도 준비하고, insert 를 위한 프레퍼레드스테이트먼트도 준비하자.

 

여기서 잠깐 !!

PreparedStatement pstmt 란?

 

1.  Statement 의 확장문이다.

2.  디비에 쿼리를 날려서 결과를 얻어내는 용도로 쓰인다.

 

   사용방법은

   

    ┌ Connection 객체를 생성한다.

    └ Connection 객체로부터 PreparedStatementStatement를 만들어 내면 된다.

 

 

자 다음..

 

    try
    {

      Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException ex1)
    {
    }

 

드라이버 로딩부분을 예외처리부분으로 감싸주자.

 

try
    {
        conn = DriverManager.getConnection(URL, USER, PASS);

 

 디비 접속설정을 완료해주시고 ~

    

 

       String sql = "INSERT INTO mem1";
                sql += "(name, passwd, id )";
                sql += "VALUES ( ?, ?, ?)";

 sql 셋팅을 하자. mem1 디비에 이름과 비번과 아뒤를 넣으라는 것..

 넣는 순서는 디비 구성과 동일하게 해주자.

       

 

        pstmt = conn.prepareStatement( sql );

 

위에서 설명했던 방식으로 변수에 conn 접속설정을 받아서 (sql) 문을 실행시키자.


        pstmt.setString( 1, memberBean.getId() );
        pstmt.setString( 2, memberBean.getName() );
        pstmt.setString( 3, memberBean.getPasswd() );

 

  디비 접속과 동시에 1번째 테이블안에 값으로 가져왔던 멤버빈의

  getId() 메소드를 실행시켜 리턴값을 저장시킨다.

  이런방식으로 3, 번 까지 완료.     1,2,3, 은 그냥 순서지정하는 의미이다.

     

   
        pstmt.executeUpdate();

 

    executeUpdate() 는 실행된 결과값을 반환한다.

 

여기서 잠깐 !!

 

  ┌ executeQuery select 할 때 사용하고, 결과값으로 ResultSet이 나온다.

  └ executeUpdate insert, update, delete를 할때 사용하고,

                                    결과 값으로 실행된 횟수를 반환하게 된다.


  }
    catch (SQLException ex2)
    {

 

  예외처리 완료 


    }
    finally
    {
 
      if( pstmt != null ) try { pstmt.close(); } catch( SQLException ex ) {}
      if( conn != null ) try { conn.close(); } catch( SQLException ex ) {}

 

 파이널리 절에서는 꼭 실행되어야 할것들을 넣어주자.

 PreparedStatement 를 닫아주자.

 conn 을 닫아주자


    }
  }
}

 

컴파일 후 완료~!

 

회원입력.jsp 와 등록완료.jsp 는 Root 에 넣고

MemberBean.java 는 컴파일 하여 패키지명과 동일한

 

\ROOT\WEB-INF\classes\member 에 넣어주고

 

MemberProcess.java 는

 

\ROOT\WEB-INF\classes\member 에서 컴파일 한 후 패키지명과 동일한

\ROOT\WEB-INF\classes\member 에다 넣어주자.

 

필자는 MemberProcess 가 컴파일 되지 않아서 상당히 고민했다.

컴파일 에러메세지를 떠듬떠듬 읽어보니

member 폴더에 있는 MemberBean 클래스를 임폴트 하지 못한다고 나온다.

 

네이버에서 5시간정도 검색을 해본 결과

CLASSPATH 를 잘못 설정했었다는 결론에 도달하여

재설정 후 재 컴파일을 시도 했으나 이번엔 다른 에러메세지가 떴다.

 

하위폴더에 MemberBean 클래스가 없다는 .. 뜻으로 파악되어

 

classes                           <-이곳에서 MemberProcess 를 넣고

         └-> member           <-이곳에 MemberBean 을 넣고

 

비로소 컴파일이 완료되었다.  악몽의 시간들이 지나고 광명의 빛이 내려온 것이다. 아흑..

허나.....

페이지 입력테스트시 500 에러 .. 컴파일된 MemberProcess.클래스를

 

classes                                     <-이곳에서

         └-> member                     <- 이곳으로 옮겨넣고

     (MemberProcess.class)

      (MemberBean.class)

댓글 없음:

댓글 쓰기