자바 캔 ( Java Can Do IT ) : : ' JSP ' 태그 의 글 목록 
 ' JSP ' 에 해당 되 는 글 5 건 
 2018 . 03 . 02 LocalDateTime 을 포맷 팅 하 기 위한 JSP 커스텀 태그 파일 
 2001 . 02 . 26 JSP , 자바 빈 컴포넌트 그리고 데이터베이스 ( 1 ) 
 LocalDateTime 을 포맷 팅 하 기 위한 JSP 커스텀 태그 파일 
 Java 2018 . 03 . 02 16 : 02 
 JSTL 1 . 2 의 < fmt : formatDate > 태그 는 LocalDateTime 과 같이 자바 8 부터 제공 하 는 시간 타입 에 대한 포맷 팅 출력 을 지원 하 지 않 는다 . 그래서 JSP 에서 LocalDateTime 값 을 지정 한 형식 에 맞춰 출력 해 주 는 간단 한 태그 파일 을 만들 었 다 . 
 아래 의 태그 파일 을 / WEB - INF / tags 폴더 에 formatDateTime . tag 이름 으로 만들 었 다 . 
 JSP 코드 에서 는 다음 과 같이 태그 파일 을 사용 해서 원 하 는 형식 으로 값 을 출력 한다 . 
 < title > 회원 조회 </ title > 
 < tf : formatDateTime 
 TAG JSP , LocalDateTime , Tag File , 커스텀 태그 파일 
 Java 2001 . 02 . 26 10 : 48 
 자바 빈 컴포넌트 에서 데이터베이스 에 연결 함 으로써 표현 과 구현 의 분리 를 좀 더 명확 하 게 할 수 있 다 . 
 자바 빈 컴포넌트 와 데이터 처리 
 많 은 개발자 들 이 웹 어플리케이션 을 개발 하 기 위해 JSP ( Java Server Pages ) 를 선택 하 고 있 다 . JSP 를 사용 함 으로써 개발자 들 은 자바 의 장점 을 사용 할 수 있 으며 , 또한 표현 부 ( presentation ) 와 구 현부 ( implementation ) 를 손쉽 게 구분 할 수 있 게 된다 . 특히 자바 빈 컴포넌트 와 커스텀 태그 의 지원 은 컴포넌트 의 관점 에서 웹 페이지 를 개발 할 수 있 는 프레임워크 를 제공 한다 . 
 하지만 , 개발자 중 의 다수 가 JSP 의 프레임워크 를 올바르 게 사용 하 고 있 지 않 으며 , 심지어 JSP 를 개발 할 때 , ASP 나 PHP 의 코드 를 자바 로 변환 하 는 정도 로 생각 하 는 경우 도 있 다 . 이러 한 것 의 대표 적 인 경우 가 JSP 페이지 에서 직접 데이터베이스 에 접근 하 는 것 이 다 . 물론 , 필요 에 따라 JSP 페이지 에서 직접 데이터베이스 에 접근 할 수 있 지만 , 대부분 의 경우 에 JSP 페이지 에서 직접 적 으로 데이터베이스 에 접근 하 는 것 은 올바르 지 못하 며 , 웹 어플리케이션 의 전체 구조 를 견고 하 지 못하 게 만드 는 요인 이 될 수 있 다 . 
 이 글 에서 는 자바 빈 컴포넌트 에서 데이터베이스 와 관련 된 작업 을 처리 하 도록 함 으로써 이러 한 문제 를 해결 하 는 것 에 대해서 알아볼 것 이 다 . 이렇게 함 으로써 JSP 페이지 로부터 구 현부 와 관련 된 부분 을 제거 할 수 있 으며 , 따라서 JSP 페이지 는 표현 부 의 역할 에 좀 더 충실 해질 수 있 다 . 다시 말 해서 , 표현 부 와 구 현부 를 좀 더 명확 하 게 분리 할 수 있 는 것 이 다 . 
 자바 빈 컴포넌트 
 이 글 에서 예 를 들 기 위해 사용 할 자바 빈 컴포넌트 는 회원 정보 를 나타내 는 MemberBean 클래스 이 다 . MemberBean 컴포넌트 는 웹 사이트 에서 가입 할 때 주로 사용 되 는 회원 아이디 , 패스워드 , 회원 이름 , 회원 의 주소 , 연락처 정보 를 저장 하 고 있 으며 , 이 들 은 다음 표 에 명시 한 프로 퍼티 를 사용 하 여 표시 된다 . 
 MemberBean 컴포넌트 의 프로 퍼티 목록 
 프로 퍼티 이름 타입 설명 
 memberID String 회원 아이디 저장 
 memberPassword String 회원 의 로그인 암호 
 memberName String 회원 의 이름 
 memberPhone String 회원 의 전화 번호 
 memberAddress String 회원 의 주소 
 MemberBean 클래스 의 소스 코드 는 다음 과 같 은 골격 을 갖 게 된다 . 
 / / 나머지 부분 이 온다 . 
 위 코드 는 자바 빈 컴포넌트 의 전형 적 인 형태 를 취하 고 있 다 . 여기 에 차례 대로 데이터베이스 와 관련 된 작업 을 추가 해 나가 보 자 . 
 데이터 를 삽입 이 라고 제목 을 붙이 긴 했 지만 , 특별히 어려운 것 은 아니 다 . 우리 가 흔히 테이블 에 데이터 를 삽입 할 때 사용 하 는 쿼 리문 을 자바 빈 컴포넌트 에서 실행 한다고 생각 하 면 된다 . MemberBean 컴포넌트 는 저장 하 고 있 는 데이터 를 DB 테이블 에 삽입 해 주 는 메소드 인 insert ( ) 를 정의 하 며 , 이 는 다음 과 같 다 . 
 여기 서 DriverManager . getConnection ( ) 메소드 에 전달 된 JDBC URL 은 해당 DBMS 에 알맞 은 걸 사용 할 것 이 다 . 데이터베이스 커넥션 풀 링 을 사용 함 으로써 성능 향상 을 꾀할 수 도 있 지만 , 이 글 에서 는 자바 빈 컴포넌트 가 데이터베이스 작업 을 한다는 점 에 초점 을 맞추 고 있 으므로 간단 한 코드 를 사용 한다 . 
 이제 회원 가입 폼 을 보여 주 는 registerForm . html 과 자바 빈 컴포넌트 를 사용 하 여 가입 처리 를 하 는 register . jsp 를 살펴보 자 . registerForm . html 은 단순 한 HTML 로서 다음 과 같 다 . 
 < head >< title > 회원 가입 폼 </ title ></ head > 
 register . jsp 페이지 는 registerForm . html 을 통해 입력 한 정보 를 사용 하 여 가입 신청 을 처리 하 는 부분 으로서 다음 과 같 다 . 
 < head >< title > 회원 가입 완료 </ title ></ head > 
 <% member . insert ( ) %> 
 앞 으로 많 은 활동 부탁 드립니다 . 
 데이터 조회 , 변경 , 삭제 
 데이터 의 조회 와 데이터 삭제 역시 데이터 삽입 과 같 은 방법 으로 처리 된다 . 때 에 따라서 조회 와 삭제 를 위한 자 바빈 클래스 를 별도 로 작성 할 수 도 있 다 . 특히 조회 의 경우 는 한 사람 의 회원 을 조회 할 수 도 있 고 , 여러 명 의 회원 을 조회 할 수 도 있 다 . 한 사람 의 회원 을 조회 하 는 경우 에 는 MemberBean 클래스 에서 조회 코드 를 위치 시키 는 것 이 좋 은 방법 이 될 수 있 지만 , 한 사람 이 아닌 여러 명 의 사용 자 를 동시 에 조회 하 는 경우 에 는 자바 빈 컴포넌트 에서 처리 하 기 보 다는 자바 빈 컴포넌트 가 나타내 는 엔 티티 와 관련 된 작업 을 처리 하 는 매니저 클래스 ( EJB 의 경우 세션 빈 에 해당 한다 ) 에서 처리 하 는 것 이 좋 을 수 도 있 다 . 이 글 에서 는 MemberBean 클래스 에 조회 를 위한 메소드 인 select ( ) 를 추가 해 보 자 . 
 select ( ) 메소드 는 한 명 의 회원 을 검색 하 기 위해 사용 되 며 , 파라미터 로 회원 의 ID 를 전달 받 는다 . MemberBean 의 select ( ) 메소드 는 다음 과 같 다 . 
 위 에서 조회 결과 가 없 을 때 는 null 을 리턴 하 는 데 , 때 에 따라서 는 조회 결과 가 없 는 경우 에 예외 를 발생 하 도록 하 는 것 이 좋 을 수 도 있 다 . 이러 한 문제 는 웹 어플리케이션 의 전체 적 인 규칙 에 따라서 결정 되 어야 할 것 이 다 . 참고 로 , 필자 의 경우 추가 적 으로 EmptyResultException 과 같 은 예외 를 만들 어 예외 를 발생 하 는 방법 을 주로 사용 하 고 있 다 . 
 조회 를 위한 JSP 페이지 는 좀 더 간단 하 다 . 먼저 조회 를 하 고자 하 는 회원 의 ID 를 입력 받 는 폼 이 필요 할 것 이 다 . 이 폼 은 selectForm . html 을 통해서 제공 되 며 , selectForm . html 의 소스 코드 는 다음 과 같 다 . 
 < head >< title > 조회 폼 </ title ></ head > 
 selectForm . html 로부터 조회 하 고자 하 는 회원 의 ID 를 전달 받 아 MemberBean 컴포넌트 를 사용 하 여 데이터 를 데이터베이스 로부터 읽 어 오 는 select . jsp 는 다음 과 같 다 . 
 < head >< title > 조회 </ title ></ head > 
 이제 , 회원 정보 를 변경 하 는 메소드 인 update ( ) 를 추가 해 보 자 . 이 메소드 는 현재 MemberBean 컴포넌트 에 저장 되 어 있 는 정보 를 데이터베이스 에 반영 하 는 역할 을 한다 . update ( ) 메소드 는 다음 과 같 다 . 
 insert ( ) 메소드 와 거의 비슷 하 다는 것 을 알 수 있 다 . 회원 정보 를 변경 하 기 이해 서 는 두 개 의 JSP 페이지 가 필요 하 다 . 한 개 는 정보 를 변경 할 수 있 는 폼 을 제공 해 주 는 JSP 페이지 이 고 , 다른 하나 는 폼 에 입력 한 정보 를 실제로 데이터베이스 반영 하 는 JSP 페이지 이 다 . 먼저 정보 를 변경 할 수 있 는 폼 을 제공 해 주 는 updateForm . jsp 를 살펴보 자 . 다음 은 updateForm . jsp 의 소스 코드 이 다 . 
 < head >< title > 회원 정보 수정 폼 </ title ></ head > 
 알맞 게 정보 를 변경 하 세요 . 
 updateForm . jsp 는 변경 할 회원 의 ID 를 파라미터 를 통해서 입력 받 는다 . 만약 파라미터 가 아닌 쿠키 나 세션 을 사용 해서 회원 아이디 를 읽 어 온다면 그 에 알맞 게 변경 하 면 될 것 이 다 . updateForm . jsp 는 회원 ID 를 읽 어 온 후 , MemberBean . select ( ) 메소드 를 사용 하 여 해당 회원 의 정보 를 읽 어 온다 . 그런 후 , 화면 에 값 을 변경 할 수 있 는 화면 을 보여준다 . 
 update . jsp 는 앞 에서 살펴본 insert . jsp 와 거의 유사 하 다 . < jsp : useBean > 태그 를 사용 하 여 사용 자 가 입력 한 회원 정보 를 입력 받 은 후 , MemberBaan 컴포넌트 의 update ( ) 메소드 를 호출 하 기 만 하 면 된다 . 다음 은 update . jsp 의 소스 코드 이 다 . 
 < head >< title > 회원 정보 변경 </ title ></ head > 
 <% member . update ( ) %> 
 회원 정보 의 삭제 역시 지금 까지 살펴본 것 과 비슷 한 방법 을 사용 하 여 할 수 있 을 것 이 다 . 
 JSP 는 자바 를 사용 하 여 웹 어플리케이션 을 개발 할 수 있 는 효과 적 인 모델 을 제공 한다 . 이 글 에서 는 데이터베이스 에 데이터 를 삽입 하 고 , RDB 로부터 데이터 를 추출 해 내 고 , RDB 에서 데이터 를 삭제 하 는 구 현부 를 자바 빈 컴포넌트 에서 처리 하 는 방법 을 알아보 았 다 . 비록 JDBC 를 이용 한 데이터베이스 처리 코드 를 JSP 페이지 에 삽입 할 수 도 있 지만 , 데이터베이스 처리 코드 를 자바 빈 에 넣 는 것 이 웹 어플리케이션 에 있 는 각 구성 요소 의 역활 을 좀 더 명확 하 게 구분 지 어 준다 . 또한 , 자바 빈 컴포넌트 가 데이터베이스 작업 을 처리 하 도록 함 으로써 JSP 페이지 가 더욱 더 표현 부 만 을 처리 하 도록 할 수 있 게 되 었 다 . 
 개념 을 좀 더 확장 하 여 자바 빈 컴포넌트 와 관련 된 엔 티티 를 관리 해 주 는 매니저 클래스 를 작성 한다고 생각 해 보 자 . 이 는 비지니스 로직 과 관련 된 부분 을 매니저 클래스 에서 처리 한다는 것 을 의미 하 며 , 따라서 자바 빈 컴포넌트 와 JSP 의 역할 은 좀 더 세분 화 될 것 이 며 , 이 에 따라 전체 웹 어플리케이션 의 구성 역시 견고 해질 것 이 다 . 또한 , 자바 빈 컴포넌트 와 매니저 클래스 를 EJB 의 엔 티티 빈 과 세션 빈 으로 어렵 지 않 게 확장 할 수 있 을 것 이 다 . 실제로 이 에 대한 내용 은 자바 캔 에 필자 가 기고 한 " Singleton 패턴 을 적용 한 매니저 클래스 와 견고 한 웹 어플리케이션 의 개발 " 에서 언급 한 적 이 있 으니 , 그 기사 를 참고 하 기 바란다 . 
 Singleton 패턴 을 적용 한 매니저 클래스 와 견고 한 웹 어플리케이션 의 개발 
 TAG DB , JSP , 자바 빈 
 AiRukia 2009 . 06 . 12 00 : 54 신고 댓글 주소 수정 / 삭제 댓글 쓰 기 
 여러모로 많이 배우 고 갑니다 . 좋 은 글 올려 주 셔서 감사 드립니다 .