MVC1 | MVC2 |
하나의 페이지에다가 M V C 다 넣는거? | (4-Tier -> M오라클, 마이바티스 사용했다는 뜻 ) 뷰V-> HTML(JS ES5, ES6-export, import, class, arrow function, let, const) C - JSP , SPRING |
JSP 기본객체(implicit), 스코프(Scope)
scope란?
값을 전달할 수 있는 객체
page Scope: 내가 보이는 jsp에서만 사용할 수 있는 애
request Scope: 내가 어디서 받아 왔거나 전달해 준애 (1번만 전달)
Session Scope: 내가 사용하고 있는 어플리케이션이 계속 로드돼서 세션이 사라지기전에는 사용
application Scope: session이랑 상관 없이 계속해서 사용
page Scope를 request Scope로 바꾸는 방법
1. page scope int y =0; 을 yy라는 변수에 request.set 해
그다음 int y1이라는 변수에 yy를 request.get 해 ->y1을 호출하면 그게 request. scope 호출
아니면 set할떄 사용했던 yy변수를 ${ } 바인딩으로 그냥 호출
EL
Expression Language
scriptlet을 통한 방법:
scope 객체를 선언하여 호출하게 되며, 호출된 객체는 Object 객체이기 때문에 반드시 Casting 해줘야 한다
하지만 EL을 통해서 사용하면 자동으로 scope 객체를 호출하고 값을 사용할 수 있다.
response, request 흐름제어 하는 2가지 방법 ( 페이지 이동)
response : sendRedirect() -> 요청된 페이지에 주소를 전달 / getWriter() - 요청된 페이지의 body에 값을 전달
request : RequestDispatcher().forward(request,response) -pbr 패쓰바이레퍼런스로 사용중인 request와 response객체를 전달
만약 response : sendRedirect() 를 통해 이동했다면 request scope는 사용하지 못함
parameter의 전달범위
elCtrl.do에서 parameter을 전달하면 servlet에 전달하고 끝나는것이 아니라 그 다음페이지인 ElPage.jsp까지 도달함
Session
Session을 삭제하는 방법
1. session.invalidate() -> session의 '객체'를 삭제함 - 로그아웃에 이용할것
2.session.removeAttribute => scope공통메소드 -> 이름(key)을 삭제함 (세션은 유지됨)
요구사항
• 목표 : 요구사항 기술서를 확인하여 사용할 수 있는 벡터(Vector)와 유스케이스(UseCase)를 작성
• 목적 : 요구사항 기술서 작성, 명사(Entity), 동사(word), 필요 없는 것들을 분석하여 UML(UseCase)를 작성하는 방법에 대해서 이해하자
요구사항 기술서
제목: 소모임 안내 사이트
- 사용자 간에 게시판 글을 작성하여 소모임으로 만들거나 소모임에 가입 신청을 할 수 있다.
- 사이트는 언어의 다국어 지원이 가능하며 시각장애인에게 음성지원도 가능하다
-사용자는 게시글 등록을 반드시 카테고리를 선택하여 등록해야 하고, 사진도 첨부할 수 있다. 사진은 최대 1MB이하로 3장까지 첨부할 수 있다.
-사용자는 본인이 올린 게시글과 다른 사용자가 올린 게시글의 목록을 조회할 수 있고, 게시글 목록 조회는 반드시 카테고리를 선택하여 조회가 가능하다.
-게시글 목록 조회를 통해서 게시글 상세 조회가 가능하다.
-게시글 조회시 댓글을 작성할 수 있다.
-사용자는 다른 사용자가 올린 게시물이나 댓글을 통해서 해당 작성자를 신고할 수 있고, 내용은 관리자에게 넘어간다.
-사용자는 본인이 올린 게시글에 한하여 수정고 ㅏ삭제를 할 수 있는데 해당 게시글의 비밀번호를 인증해야 한다.
-관리자는 사이트 방문자 수 를 날짜별, 시간대별 통계를 확인할 수 있다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
유스케이스 패키지 목록: 기능을 포함하고 동사를 포함하고 있는 단어
유스케이스ID | 유스케이스 명 | 패키지 분류 | 유스케이스 패키지 설명 |
UD100 | 게시판 | 게시판 시스템 | -조회/ 수정/삭제/입력이 가능한 파일 업로드형 게시판 -답글이 작성 가능한 게시판 -신고가 가능한 게시판 |
UD200 | 회원관리 | 회원관리 시스템 | -회원신고 |
UD300 | 통계 | 통계 시스템 | -날짜별 통계와, 시간별 통계 정보 |
액터(Actor) : 시스템을 사용하는 사용자들의 구분
액터ID | 액터명 | 액터설명 |
NA001 | 사용자(회원) | 소모임 게시판을 사용할 수 있는 액터 |
NA002 | 관리자 | 소모임의 게시판을 관리할 수 있는 엑터 |
유스케이스 목록: 패키지에 속해 있는 기능(WBS의 내용 2depth가 된다)
유스케이스 패키지 명세
1. 게시판
유스케이스ID | 유스케이스명 | 유스케이스 설명 |
UD101 | 게시글 등록 | 게시물을 등록하는 기능 |
UD102 | 게시글 목록 조회 | 게시물의 목록을 조회하는 기능 |
UD103 | 게시글 수정 | 게시물을 수정하는 기능 |
UD104 | 게시글 삭제 | 게시물을 삭제하는 기능 |
UD105 | 게시글 신고 | 게시물을 신고하는 기능 |
UD106 |
파일첨부 | 게시물을 등록시 사진을 첨부하는 기능 |
UD107 |
카테고리 선택 | 검색 및 게시글 등록시 분류코드를 선택하는 기능 |
UD108 |
댓글달기 | 게시된 글에 댓글을 작성하는 기능 |
UD109 | 게시글 상세조회 | 게시된 글을 상세조회하는 기능 |
UD110 |
게시글 비밀번호 입력 | 게시글의 수정 및 삭제시 입력되어진 비밀번호를 입력하는 기능 |
2.통계
유스케이스ID | 유스케이스명 | 유스케이스 설명 |
UD301 | 날짜별 통계 | 통계 기능 중 날짜별 통계를 나타내는 기능 |
UD302 | 시간별 통계 | 통계 기능 중 시간별 통계를 나타내는 기능 |
유스케이스에 포함되지 않는 비기능적 요소
-첨부파일의 용량
-음성지원
-다국어지원
유스케이스(UseCase)를 작성하는 방법
1) 중복되는 UseCase나 Actor를 하나로 표기해야 함
2) vector(벡터): 시스템을 사용하는 외부의 존재, 사람 또는 시스템
3) UseCase: 사용자가 사용하는 기능의 단위(Unit) 다이어그램에서 시스템 경계선 내부에 작성
4) 시스템 경계선: 외부와 내부를 구분하는 경계선
예시
유스케이스 작성 툴
1. draw.io
2. lucidchart (폰으로도 가능)
3. staruml -> svg로 저장해서 f12로 unregistered 다 삭제해서 사용
요구사항 기술서
제목: 답변형 게시판
정의: 글을 작성할 수 있으며, 작성된 글에 답글을 추가할 수 있는 게시판
요구사항:
- 글을 작성할 수 있어야 함
글이 작성되지 않으면 입력되지 않음
작성된 글을 root글이라 정의 하겠다.
-작성된 root글에 소속되어 있는 답글을 작성할 수 있어야 한다
답글이라 정의하겠다
- 글은 로그인된 정보(id)를 사용하여 작성된다.
-글을 삭제할 수 있다.
-글을 여러개 삭제할 수 있다.
-해당 글은 root글을 기준으로 계층으로 표현해야 한다
-최근 글이 위에 오도록 표현되어야 한다
-답글에 답글을 작성할 수 있다
-글은 작성자와 제목, 내용, 작성이로 입력이 되어야 한다
-삭제된 글을 화면에 표현하지 않는다
-답글은 해당 깊이에 따라 이미지를 표시해준다
테이블명 ANSWERBOARD
필요한 컬럼
1)유형엔티티
2)개념엔티티
3)사건엔티티
데이터의 관점 + 프로세스의 관점
- id (고유 번호로 사용되는 글의 식별자) - 유형 엔터티
- parent_id (답글이 속한 root 글의 id를 나타내는 외래 키) -사건 엔터티
- author_id (글을 작성한 사용자의 id) - 유형 엔터티
- title (글의 제목) - 개념 엔터티
- content (글의 내용) - 개념 엔터티
- created_at (글 작성 일시) -사건 엔터티
- deleted (글의 삭제 여부를 나타내는 플래그, 삭제된 글은 화면에 표시하지 않음) -사건 엔터티
- depth (글의 계층을 나타내는 값) -사건 엔터티
- 유형 엔터티:
- id: 유형 엔터티로, 글의 식별자를 나타냅니다. 각각의 글은 고유한 id를 가지고 있어 해당 유형 엔터티를 구분합니다.
- author_id: 글을 작성한 사용자를 식별하는 데 사용되는 외래 키입니다. 이는 사용자라는 유형 엔터티와의 관계를 나타냅니다.
- 개념 엔터티:
- title: 개념 엔터티로, 글의 제목을 나타냅니다. 각각의 글은 제목을 가지고 있으며, 이는 해당 글의 주제나 내용을 요약합니다.
- content: 글의 내용을 담는 개념 엔터티입니다. 글의 본문 내용을 표현합니다.
- 사건 엔터티:
- created_at: 글 작성 시점을 나타내는 사건 엔터티입니다. 각각의 글은 생성된 시간을 가지고 있어, 글이 작성된 특정 시점을 표현합니다.
- deleted: 삭제된 글 여부를 나타내는 사건 엔터티입니다. 글이 삭제되었는지 여부를 나타내는 불리언 값으로, 삭제 이벤트를 표현합니다.
또한, parent_id와 depth는 글의 계층 구조와 관련하여 사건 엔터티와 연관지어 설명할 수 있습니다.
- parent_id: 사건 엔터티로, 글의 계층 구조를 나타냅니다. 답글의 경우 어떤 root 글에 속해있는지를 표현하여 계층 구조를 형성합니다.
- depth: 글의 깊이를 나타내는 사건 엔터티입니다. 특정 글이 얼마나 깊은 답글인지를 표현하여 계층 구조에서의 위치를 나타냅니다.
구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님