본문으로 바로가기

[JSP개발] 회원가입 답변형 게시판

category 코딩/JSP 2017. 2. 6. 21:57







개발환경


  • Window7 64bit

  • Java 1.8

  • JSP

  • Oracle 11g Release2

  • Tomcat 8.0

  • Eclipse Luna




회원가입 답변형 게시판 구성



회원가입형 답변형 게시판은 크게 회원, 게시판, 댓글, 방명록으로 구성되어있다. 각각의 기능을 살펴보면 다음과 같다.


  • 회원 : 회원가입 및 회원정보 보기, 회원정보 수정 및 삭제, 관리자의 경우 모든 회원을 볼 수 있다.

  • 게시판 :  게시판은 로그인한 사용자만 글을 작성 가능. 답변형 게시판, 파일 업로드, 답글의 경우 파일 업로드 불가

  • 댓글 : 게시물 별로 댓글을 작성 가능, 댓글의 경우도 로그인한 사용자만 작성 가능

  • 방명록 : 로그인/비로그인 사용자 모두 작성 가능

  • 그 외 : 화면 하단에 총 방문자 및 오늘 방문자 표시


게시판 화면의 경우 <jsp:include>를 통해 모듈화를 하였다. MainForm.jsp 에는 상단, 중단, 하단의 jsp로 구성되어 있으며 상단의 메뉴 클릭 시 중단 영역이 변경된다.


게시판, 댓글, 방명록 부분은 오라클 계층쿼리를 이용하였다.



■ 구성

  • MVC 구조로 개발

  • 각 기능들은 Action 인터페이스를 구현한 Action 클래스로 구성

  • 각 Action에 대응하는 Commend는 properties 파일을 통해 정의, Controller에서는 이 properties 파일을 읽어들여 Commend에 해당하는 Action을 찾아서 실행시킨다.

  • Action 실행 후 해당하는 JSP 화면을 보여준다.



■ 웹 프로젝트





UML 구조도


※ UML 구조는 Member와 Board만 첨부



■ Member(회원) 클래스 다이어그램




■ Board(게시판) 클래스 다이어그램





Jsp, Java 설명



1. 공통부분



■ Java

  • Action : execute( ) 메서드가 세팅된 인터페이스

  • ActionForward : 페이지 이동을 처리하기 위한 클래스

  • DBConnection : 커넥션을 얻어오는 클래스 - JNDI


JSP

  • FirstView : 최초 실행시 보이는 화면

  • Footer : 하단 방문자 통계 영역 jsp

  • Header : 상단 메뉴 영역 jsp

  • MainForm : 메인 화면



2. 회원 부분



■ Java

  • MemberController : 회원 관련 Controller

  • MemberDeleteAction : 회원 삭제 작업을 처리하는 Action

  • MemberFormChangeAction 화면 전환을 처리하는 Action

  • MemberIdCheckAction : 아이디 중복체크를 처리하는 Action

  • MemberInfoAction 현재 로그인한 사용자의 회원정보를 보여주는 Action

  • MemberJoinAction 회원가입을 처리하는 Action

  • MemberListAction 모든 회원정보를 보여주는 Action

  • MemberLoginAction 로그인 작업을 처리하는 Action

  • MemberLogoutAction 로그아웃 작업을 처리하는 Action

  • MemberModifyAction 회원정보 수정 작업을 처리하는 Action

  • MemberModifyFormAction 회원정보 수정 화면에 현재 회원정보를 출력하는 Action

  • MemberBean : 회원 데이터 전달을 담당하는 클래스 - DTO

  • MemberDAO JSP_MEMBER 테이블과 연관된 DAO로 회원 데이터를 처리한다.

  • MemberCommand.properties : 회원 관련 명령어와 그에 해당하는 Action 클래스의 정보가 담긴 파일


■ JSP

  • DeleteForm : 회원 삭제 화면

  • IdCheckForm : 아이디 중복체크 화면

  • JoinForm : 회원가입 화면

  • LoginForm : 로그인 화면

  • MemberListForm : 회원정보를 보여주는 화면, 관리자로 로그인하였을 경우면 볼 수 있다.

  • ModifyFrom : 회원 수정 화면

  • ResultForm : 회원가입, 회원정보 수정, 회원 탈퇴 결과를 보여주는 화면

  • UserInfoForm : 내정보를 보여주는 화면



3. 게시판 부분



■ Java

  • BoardController : 게시판 관련 Controller

  • BoardDeleteAction : 글 삭제를 처리하는 Action, 글 삭제 시 댓글도 모두 삭제

  • BoardDetailAction : 글 상세보기를 처리하는 Action

  • BoardFormChangeAction : 게시판 화면을 전환하는 Action

  • BoardListAction : 글 목록을 보여주는 Action

  • BoardReplyAction : 답글을 처리하는 Action

  • BoardReplyFormAction : 답글 화면을 전환하는 Action

  • BoardUpdateAction : 글 수정을 처리하는 Action

  • BoardUpdateFormAction 글 수정 화면을 전환하는 Action

  • BoardWriteAction : 글 작성을 처리하는 Action

  • FileDownloadAction : 파일 다운로드를 처리하는 Action

  • BoardBean 게시판 데이터 전달을 담당하는 클래스 - DTO

  • BoardDAO MEMBER_BOARD 테이블과 연관된 DAO로 게시판 데이터를 처리한다.

  • BoardCommand.properties 게시판 관련 명령어와 그에 해당하는 Action 클래스의 정보가 담긴 파일


■ JSP

  • BoardDetailForm : 글 상세보기 화면, 여기에서는 해당 글에 댓글을 작성할 수 있다.

  • BoardListForm : 글 목록을 보여주는 화면

  • BoardReplyForm : 답글 화면, 답글에서는 파일 업로드를 할 수 없다.

  • BoardUpdateForm : 글 수정 화면

  • BoardWriteForm : 글 작성 화면



4. 댓글 부분



■ Java

  • CommentController 댓글 관련 Controller

  • CommentDeleteAction : 댓글 삭제를 처리하는 Action

  • CommentReplyAction : 댓글의 답글을 처리하는 Action

  • CommentReplyFormAction : 답글 화면을 보여주는 Action 

  • CommentUpdateAction : 댓글 수정을 처리하는 Action

  • CommentUpdateFormAction : 댓글 수정 화면을 보여주는 Action

  • CommentWriteAction : 댓글 작성을 처리하는 Action

  • CommentBean 댓글 데이터 전달을 담당하는 클래스 - DTO

  • CommentDAO BOARD_COMMENT 테이블과 연관된 DAO로 댓글 데이터를 처리한다.

  • CommentCommand.properties 댓글 관련 명령어와 그에 해당하는 Action 클래스의 정보가 담긴 파일


■ JSP

  • CommentReplyForm : 댓글의 답글 작성 화면

  • CommentUpdateForm : 댓글 수정 화면



5. 방명록 부분



■ Java

  • GuestbookController 방명록 관련 Controller

  • GuestbookDeleteAction : 방명록 삭제를 처리하는 Action

  • GuestbookDeleteFormAction : 방명록 삭제 화면을 보여주는 Action

  • GuestbookFormAction : 방명록 화면을 전환하는 Action

  • GuestbookListAction : 방명록 목록을 보여주는 Action

  • GuestbookPwCheckAction : 방명록 수정/삭제 시 비밀번호를 체크하는 Action

  • GuestbookReplyAction : 방명록 답글을 처리하는 Action

  • GuestbookReplyFormAction : 방명록 답글 화면을 보여주는 Action

  • GuestbookUpdateAction : 방명록 수정을 처리하는 Action

  • GuestbookUpdateFormAction : 방명록 수정 화면을 보여주는 Action

  • GuestbookWriteAction : 방명록 작성을 처리하는 Action

  • GuestbookBean 방명록 데이터 전달을 담당하는 클래스 - DTO

  • GuestbookDAO GUESTBOOK 테이블과 연관된 DAO로 방명록 데이터를 처리한다.

  • GuestbookCommand.properties 방명록 관련 명령어와 그에 해당하는 Action 클래스의 정보가 담긴 파일



■ JSP

  • GuestbookDeleteForm : 방명록 삭제 화면

  • GuestbookForm : 방명록 화면, 방명록 작성 및 방명록 목록을 보여준다.

  • GuestbookReplyForm : 방명록 답글 화면

  • GuestbookUpdateForm : 방명록 수정 화면



6. 방문자 부분



■ Java

  • VisitSessionListener 방문자 수를 계산한다. web.xml에 등록된 listener로 톰캣 실행시 VisitSessionListener가 실행된다.

  • VisitCountDAO VISIT 테이블과 연관된 DAO로 방문자 수 데이터를 처리한다.




테이블 및 시퀀스


  • 테이블 : 회원, 게시판, 댓글, 방명록, 방문자 수

  • 시퀀스 : 게시판, 방명록, 댓글 (시퀀스는 각각 글 번호를 부여하는 역할을 한다.)


■ JSP_MEMBER




■ MEMBER_BOARD




■ BOARD_COMMENT




■ GUESTBOOK




■ VISIT




■ BOARD_NUM (게시판 글번호 시퀀스)




■ COMMENT_SEQ (댓글 글번호 시퀀스)




■ GUESTBOOK_NO_SEQ (방명록 글번호 시퀀스)





화면





화면은 크게 3부분으로 구성되어 있다. 여기서 상단, 하단 영역은 고정이고 상단의 메뉴를 클릭할 때 중단의 메인화면 부분이 변경된다. 처음 실행하면 메인화면 부분에는 FirstView.jsp 가 나타난다.





회원가입, 로그인 후 상단의 내정보 메뉴를 클릭했을 때 모습이다. 여기서 회원정보 변경 및 회원 탈퇴를 할 수 있다.





게시판 화면이다. 글쓰기 버튼은 로그인을 해야 활성화된다. 글 검색은 제목, 제목+내용, 작성자로 검색할 수 있다.





글 제목을 클릭하면 상세보기 화면으로 이동된다. 여기서 수정, 삭제 버튼은 글 작성자일 경우에만 활성화된다. 상세보기 화면에서는 댓글을 작성할 수 있다.





방명록 화면이다. 방명록은 로그인/비로그인 사용자 모두 작성 가능하다. 방명록은 글 작성 시 입력한 비밀번호를 입력해야 수정 및 삭제가 가능하다.





방명록의 답글 화면이다. 답글 및 수정, 삭제는 모두 새로운 팝업창에서 작업이 이루어진다.




실행 방법



자바와 오라클, 그리고 톰캣이 설치되어 있어야 한다.





첨부된 소스 코드와 SQL 파일을 다운로드 한다. 먼저 SQL 파일의 내용을 실행하여 테이블과 시퀀스를 생성한다. 다음으로 소스 코드를 이클립스에 import 한다.





소스 코드를 import 한 후에 오라클 정보를 설정해줘야 한다. 





이클립스에 톰캣을 연동했다면 왼쪽 Project Explorer를 보면 Server이 있을 것이다. 거기에 있는 context.xml을 열어 위의 Resource 부분을 작성한다. 이때 빨간색으로 표시한 부분은 자신에게 맞게 수정해야 한다. (관련글 참고)





모든 작업이 끝났다면 MainForm.jsp를 실행하면 메인 화면이 나타날 것이다.




소스 코드 다운로드



■ SQL 파일


게시판 query.sql



■ WAR 파일


JSP_DEV.war





RSS구독 링크추가 트위터 이메일 구독