본문 바로가기

구디 아카데미 수료 과정/Servlet + JSP

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님/클라우드 활용 자바개발자 양성과정/•50일차/01.03

 

 

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)사건엔티티

 

데이터의 관점 + 프로세스의 관점 

 

 

  1. id (고유 번호로 사용되는 글의 식별자)      - 유형 엔터티
  2. parent_id (답글이 속한 root 글의 id를 나타내는 외래 키)    -사건 엔터티
  3. author_id (글을 작성한 사용자의 id)     - 유형 엔터티
  4. title (글의 제목)                          - 개념 엔터티
  5. content (글의 내용)                  - 개념 엔터티
  6. created_at (글 작성 일시)                              -사건 엔터티
  7. deleted (글의 삭제 여부를 나타내는 플래그, 삭제된 글은 화면에 표시하지 않음)   -사건 엔터티
  8. depth (글의 계층을 나타내는 값)     -사건 엔터티
  1. 유형 엔터티:
    • id: 유형 엔터티로, 글의 식별자를 나타냅니다. 각각의 글은 고유한 id를 가지고 있어 해당 유형 엔터티를 구분합니다.
    • author_id: 글을 작성한 사용자를 식별하는 데 사용되는 외래 키입니다. 이는 사용자라는 유형 엔터티와의 관계를 나타냅니다.
  2. 개념 엔터티:
    • title: 개념 엔터티로, 글의 제목을 나타냅니다. 각각의 글은 제목을 가지고 있으며, 이는 해당 글의 주제나 내용을 요약합니다.
    • content: 글의 내용을 담는 개념 엔터티입니다. 글의 본문 내용을 표현합니다.
  3. 사건 엔터티:
    • created_at: 글 작성 시점을 나타내는 사건 엔터티입니다. 각각의 글은 생성된 시간을 가지고 있어, 글이 작성된 특정 시점을 표현합니다.
    • deleted: 삭제된 글 여부를 나타내는 사건 엔터티입니다. 글이 삭제되었는지 여부를 나타내는 불리언 값으로, 삭제 이벤트를 표현합니다.

또한, parent_id와 depth는 글의 계층 구조와 관련하여 사건 엔터티와 연관지어 설명할 수 있습니다.

  • parent_id: 사건 엔터티로, 글의 계층 구조를 나타냅니다. 답글의 경우 어떤 root 글에 속해있는지를 표현하여 계층 구조를 형성합니다.
  • depth: 글의 깊이를 나타내는 사건 엔터티입니다. 특정 글이 얼마나 깊은 답글인지를 표현하여 계층 구조에서의 위치를 나타냅니다.

 

 

 

 

 

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님