본문 바로가기
Programming/etc

DBCP(커넥션풀)를 이용한 회원가입 페이지 예제

by prinha 2020. 7. 9.
반응형

 

 

- 코드 작성 전 준비 과정 -

 

 1. oracle에서 MEMBER 테이블 생성

 

 2. Dynamic Web Project 생성

 

 3. jQuery 라이브러리 / style.css(빠른 작업을 위해 미리) 폴더에 넣어놓기

 

 4. 커넥션풀 사용을 위한 라이브러리 파일 넣어놓기

 


 

코드 작성 순서  ※주의 : 기능에 필요한 코드를 그때 그때 작업할 것, 미리 작성하지 않기

~Form.jsp : 사용자에게 보여지는 틀 / ~Pro.jsp : DB전송, 연동 / ~.js : (ex.클릭시) 기능 구현

 

1. JDBC -> DBCP(커넥션풀) 설정

  1) Servers -> Tomcat v9.0 Server at localhost-config -> server.xml

<Context docBase="regex00" path="/regex00" reloadable="true" source="org.eclipse.jst.jee.server:regex00">
	<Resource auth="Container" 
          name="jdbc/jsptesto" 
          driverClassName="oracle.jdbc.driver.OracleDriver" 
          type="javax.sql.DataSource" 
          url="jdbc:oracle:thin:@localhost:1521:orcl" 
          username="ora_user"
          password="1234" 
          loginTimeout="10" 
          maxActive="50" 
          maxIdle="20"
          maxWait="5000" 
          testOnBorrow="true" />
</Context>

 

  2) 프로젝트 WebContent -> WEB-INF -> web.xml

<resource-ref>  <!-- Resource name -->
   <description>jsptest oracledb</description> 
   <res-ref-name>jdbc/jsptesto</res-ref-name> 
   <res-type>javax.sql.DataSource</res-type> 
   <res-auth>Container</res-auth> 
</resource-ref> 

 

  3) DAO class에 커넥션 풀 설정 -> MemberDBBiz.java

// DBCP(데이터 베이스 커넥션 풀) 기능을 이용한 싱글톤 클래스
public class MemberDBBiz {
	
	// 자기 자신의 전역(클래스) 객체 생성 -> 한 개의 객체만 생성해서 공유
	// 객체 접근 불가 private
	private static MemberDBBiz instance = new MemberDBBiz();
	
	// 객체 리턴 메소드
	public static MemberDBBiz getInstance() {
		return instance;
	}
	
	// 기본 생성자 접근 못하게 막기
	private MemberDBBiz() {}
	
	// throws : 자신을 호출한 상위 메소드로 예외전가
	// 커넥션 풀에서 커넥션 객체를 얻어내는 메소드 -> 예외 처리 필수 메소드
	private Connection getConnection() throws Exception{
		
		Context initCtx = new InitialContext();
		Context envCtx = (Context) initCtx.lookup("java:comp/env");
		DataSource ds = (DataSource) envCtx.lookup("jdbc/jsptesto");
		return ds.getConnection();
	}
    }

 

2. main.jsp 작성 -> jsp:include 액션태그 활용, 로그인 페이지로 넘어가는 div작성 -> loginForm.jsp 파일만 미리 생성 (실질적 메인페이지)

 

3. java resource 작성

  1) MemberInfo.java : 데이터 테이블과 구조가 같은 클래스 작성 / DTO(Data Transfer Object) 

  2) MemberDBBiz.java : 싱글톤패턴 / 커넥션풀 / 데이터연동 / DAO(Data Access Object)

   - 회원가입 기능 void insertMember(MemberInfo member) -> registerForm.jsp / register.js / registerPro.jsp 파일만 미리 생성

   - 로그인(인증체크) & 로그아웃 기능 int userCheck(String userId, String userPasswd)  //로그아웃 기능은 자바 코드 불필요

      -> loginForm.jsp(이미 생성) / login.js / loginPro.jsp / logout.jsp 파일만 미리 생성

   - 아이디 중복 체크 기능 int confirmId(String userId) -> confirmId.jsp 파일만 미리 생성

   - 회원 정보 수정 폼(수정 전 정보 확인) MemberInfo getMember(String id, String passwd) : 기존 가입 정보를 가져오는 메소드

      -> memberCheck.jsp / modify.jsp / modifyForm.jsp / modify.js 파일만 미리 생성

   - 회원 정보 수정 처리 폼(실질적인 수정 폼) int updateMember(MemberInfo member) -> modifyPro.jsp 파일만 미리 생성

   - 회원 탈퇴 처리 int deleteMember(String id, String passwd) -> deletePro.jsp 파일만 미리 생성

   - 회원 리스트 조회 registerList() -> registerList.jsp 파일만 미리 생성

 

4. 회원가입 기능 페이지

  1) registerForm.jsp 작성 / <script src="register.js"></script> -> 기능 구현 

  2) register.js 작성

    - 아이디 중복 체크 기능 코드 작성 -> $.ajax 요청 페이지 confirmId.jsp 작성

      (MemberDBBiz객체의 confirmId(id) 메소드를 실행하여 결과값을 받고 처리 결과를 register.js로 리턴)

    - register.js 내부에 checkIt() 메소드 작성 (사용자가 registerForm.jsp 폼에 입력한 상황 체크)

    - 회원가입 버튼 코드 작성 -> $.ajax 요청 페이지 registerPro.jsp 작성

      (jsp 액션태그 자바빈 jsp:useBean 이용 -> 사용자가 입력한 데이터들을 객체를 생성하지않고 set)

    - 회원가입 취소 버튼 코드 작성 -> window.location.href="main.jsp";

 

5. 로그인(인증체크) & 로그아웃 기능 페이지

  1) loginForm.jsp 작성 -> 메인이 되는 로그인 페이지 / <script src="login.js"></script> -> 기능 구현 

  2) login.js 작성

    - 회원가입 버튼 코드 작성 -> $("#main_auth").load("registerForm.jsp"); -> 회원 가입 페이지로 이동

    - login.js 내부에 checkIt() 메소드 작성 -> 사용자가 loginForm.jsp 폼에 입력한 상황 체크

    - 로그인 버튼 코드 작성 -> $.ajax 요청 페이지 loginPro.jsp 작성 -> 데이터 전송

    - 로그아웃 버튼 코드 작성 -> $.ajax 요청 페이지 logout.jsp 작성, session.invalidate(); 처리

      -> $("#main_auth").load("loginForm.jsp"); -> 로그인 페이지로 이동

    - 회원 정보 수정 버튼 코드 작성 -> $('#main_auth').load('modify.jsp'); 페이지로 로드되는 코드 작성하기

 

6. 회원 정보 수정&탈퇴 기능 페이지

  1) modify.jsp 작성 -> 수정 전 정보 확인 (및 정보 수정or탈퇴 선택) 페이지 / <script src="modify.js"></script> -> 기능 구현 

  2) modifyForm 작성 -> 회원 정보 수정 페이지 / <script src="modify.js"></script> -> 기능 구현 

      -> session에서 아이디받기-로그인한 사용자만 이용 가능하기 때문 / 객체를 생성해 사용자의 기존 가입 정보 받기

  3) modify.js 작성

    - (입력한 pwd를 가지고) '정보수정버튼' 클릭시 기존 가입정보 확인하는 페이지로 로드  -> $.ajax 요청 페이지 memberCheck.jsp 작성

    - (modifyForm.jsp에서 수정 정보를 입력하고) '수정버튼' 클릭하면 데이터 전송되는 코드 작성 -> $.ajax 요청 페이지 modifyPro.jsp 작성

    - modifyForm.jsp페이지에서의 수정 취소 버튼 코드 작성 -> window.location.href="main.jsp";  메인 페이지로 이동

    - modify.jsp페이지에서의 탈퇴 버튼 코드 작성 -> ($.ajax 요청 페이지 memberCheck.jsp 먼저 실행)

       -> $.ajax 요청 페이지 deletePro.jsp 코드 작성 -> $("#main_auth").load("loginForm.jsp"); -> 로그인 페이지로 이동

 

7. 회원 리스트 조회 기능 페이지

  1) registerList.jsp 작성 ->  회원 리스트 form 페이지 / <script src="login.js"></script> -> 기능 구현

  2) login.js 재작성 -> loginForm.jsp 인증된 사용자 영역 회원리스트 버튼 기능 / registerList.jsp 뒤로가기 버튼 기능

 


 

- 헷갈리는 기능들 기억해주기 -

confirmId.jsp  ->  DAO confirmId() 호출 : 회원 가입할 때 아이디 중복 체크

memberCheck.jsp  ->  DAO userCheck(id, passwd)  호출 : 회원정보 수정 및 탈퇴 시 기존 정보 확인

loginPro.jsp  ->  DAO userCheck(id, passwd) 호출 : 로그인시 기존 정보 확인

 

 

 

regex00.zip
4.02MB

 

 

반응형