병갈이 블록

홈페이지버전02 시작. 본문

IT(Old)/JSP 실습 과정 기록

홈페이지버전02 시작.

woojang 2017. 7. 21. 18:46

간단하게 회원제로 운영되는 단체의 홈페이지를 구상해본다.

메인페이지는 테이블을 사용해서 2등분을 한다.

그리고 각각의 영역은 jsp:inclue를 사용하여 필요한 페이지를 로드한다.

탑 영역은 큰 메뉴들을 보여주며 크게 페이지를 변경할 일이 없다.

로우영역은 탑 영역의 메뉴를 선택함에 따라 다른 페이지들을 구현한다.

메인 jsp페이지에서 선택처리를 할 것이냐, 아니면 선택처리를 하는 페이지를 따로 두고 그 페이지를 include할 것이냐 하는 문제가 있긴 한데.

큰 프로젝트가 아니기에(또 단순 결과를 보여주는 페이지기에) 첫번째 방법으로 구현해 본다.

(필요하다면 두번째 방법으로 구현한다. 이거 바꾸는게 큰 일은 아니니까...)


필요한 명세서.

1. 사이트는 회원제로 운영된다.

: '일반', '우수', '운영진' 이렇게 세가지 회원 분류를 가진다.

2. 자유게시판을 가진다.

: 일반방문자는 글 읽기만 가능.

: 모든 회원은 글 쓰기 가능.

: 모든 회원은 자신의 글에 한해서 글 수정, 삭제가 가능

3. 사진 게시판.

: 일반 게시판과 동일.

4. 방문자 카운트.

: 전체 방문자, 오늘 방문자, 최근 30일간 일 평균 접속자 출력.

: 접속의 기준은 세션의 발행을 기준.

5. 운영진

: 회원 레벨 수정 권한을 가짐.

: 회원 삭제권한을 가짐.

(회원 관리는 별도의 운영자 페이지에서 관리되도록 한다.)

: 게시글 임의 삭제가 가능.


디테일 명세.

1. DB에 회원의 등급칼럼을 추가한다. (norm, vip, admin 값 중 하나만 입력 - DB설정 찾아보기.)

회원의 경우 최종 접속시간과 세션 만료시간을 기록한다. 

(DB의 별도의 테이블에 기록하는 방법과 회원별 파일에 기록을 남기는 방법. 아직 미정.)

(로그아웃을 누르거나 세션만료시간이 지났을 시. 세션만료 및 브라우저 종료시 시간을 찾는거는 고민해봐야됨.)

(최종 접속시간을 기록할 때 ip도 함께 기록할 수 있을까? 있다면 해보자.)

2. 로그인 시 발급되는 세션은 id, 이름, 등급을 가지는 자료형이다.

게시글과 관련된 각각의 페이지에서는 회원세션의 확인, 게시글의 작성자와 일치하는 접속자인지 확인을 통해서 

글쓰기, 수정, 삭제 링크를 제공하도록 한다.

글쓰기가 실패했을 경우(파라미터를 빼먹었을때) 다시 폼 뷰를 보여준다. (에러문구 출력.)

글쓰기 성공 후 뒤로가기버튼을 누르면 리스트 뷰로 포워딩되도록 다음과 같은 조치를 한다.

- 글쓰기 폼에서 캐시를 생성하지 않도록 한다.

- 최초 홈페이지 접속시 "writeEnd" 세션을 "false"값으로 부여한다.

- 글쓰기가 성공하게되면 핸들러에서 "writeEnd" 세션을 "true"값으로 변경한다.

캐시가 없으면 뒤로가기 버튼시 다시 서블릿에 접속되기 때문에 GET방식으로 서블릿에 접속된다.

그때 "writeEnd"세션값이 "true"라면 리스트뷰나 잘못된 접근을 출력하는 페이지로 넘긴다.

즉, 글쓰기버튼을 통하지 않은 글쓰기 폼의 접근을 허용하지 않는다.

글 조회시 카운트가 추가된다. 글 작성 후 호출되는 조회는 카운트되지 않는다.

3. 사진게시판.

2번과 동일한 조건.

파일 업로더를 구현한다.

특정 위치에 (id+날짜+게시글 번호+임의의 정보)등의 정보를 조합해서 파일을 저장한다.

그리고 그 이름은 DB에 저장된다. 

게시글 조회시 이름을 불러와 img태그의 src에 적용한다.

아마...이거 구현하는데 한참 걸릴 수도 있을 듯 하다.

4. 방문자를 카운트한다.

메인 서블릿은 접속자 세션 존재를 확인하고 있으면 바로 요청을 처리하고 없으면 세션 발행 및 방문자 카운트를 한다.

카운트 자료는 DB에 별도로 저장을 한다. (트렌젝션이 필요할까...)

서비스 영역에서 필요한 데이터를 모두 구성한다. 

(기간 조회해서 방문자 수 평균 구하기 등...)

5. 운영진은 막강한 권한을 가진다.

운영진을 위한 별도의 회원관리페이지를 구성한다.

그곳에서 운영자는 손쉽게 회원을 관리한다.


이걸로도 한달은 하게 생겼다...ㅎㅎㅎ 

해보자 한번..



Comments