- 코드 작성 전 준비 과정 -
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) 호출 : 로그인시 기존 정보 확인
'Programming > etc' 카테고리의 다른 글
원산지결정기준-일반/공통기준, 일반/특례기준, 품목별원산지기준 (0) | 2021.01.13 |
---|---|
[JAVA] iText API를 이용해 html을 PDF로 변환 후 다운로드하는 예제 (0) | 2020.12.29 |
[ advanced rest client ] Rest API 방식 기능을 테스트하는 도구 (0) | 2020.08.12 |
[Eclipse] Workspace 환경 설정 복사 (0) | 2020.08.10 |
MVC패턴을 이용한 계층형 게시판 만들기 예제 (0) | 2020.07.17 |