8월 18일 수요일5 - Spring ㅇ

@_@·2021년 8월 18일
0

Spring

목록 보기
5/6

<목차>
(실습 1 : 게시판 만들기)

ㅇ 포조
ㅇ @ 어노테이션
ㅇ 흐름
ㅇ 메소드
ㅇ WEB-INF
ㅇ 뷰
ㅇ DAO, DTO, VO
ㅇ lombok (롬복)





(실습1 : 게시판 만들기)

  • 실습1은 서비스 레이어 없이
  • 샘플들은 지우자 (홈컨트롤러)

ㅇ 포조

  • 일단 클라이언트가 요청이 오면 그 요청을 받는 알바생부터 만들자 => 포조!
  • 컨트롤러라고 해서 무조건 서블릿 생각하면 안 돼. => 자바 일반 클래스
  • 이름 : 게시판이니까 board 포조니까 Controller => boardController

cf. 스프링 프레임워크 나오기 전에는 스트럿츠라는 프레임워크를 많이 썼었나봐
프레임워크의 춘추전국시대 있었어. 개발 할 때마다 프레임워크 바꾸기 엄청 힘들었어
프레임워크의 겨울이 있었어
이걸 다 통합해서 프레임웍을 만든게 스프링이라고 이름 지은거야 그래서 봄!!
프레임워크가 통합이 안돼서 개발자들이 너무 힘들어 했어
스트럿츠에서는 컨트롤러 말고 액션을 많이 썼어. 스프링으로 넘어오면서 컨트롤러를 많이 써


ㅇ @(어노테이션) 기호

  • 스프링은 내부적으로 일을 하니까, 이 클래스는 이런 용도입니다, 저 클래스는 저런 용도입니다. 표시를 해줘야 해 => @ 사용
  • @ 기호가 붙어있으면 파이선에서 전처리같은 거야
  • 포조는 @Controller
  • 요청을 받는 건 @RequestMapping
    • 요청이 왔을 때 처리할 메소드를 매핑
    • 핸들러 매핑이 해줘


ㅇ 흐름


① 브라우저에 http:/120.0.0.1:8080/web/boardList.do를 치면 boardList.do를 보여주세요~ 라는 요청이 들어와
② @Controller를 보고 포조로 들어와서
③ @RequestMapping 중에 boardList.do를 찾아가
④ 그 아래 이걸 처리할 메서드가 연결될 거야
⑤ 그게 디비랑 연동해가지고 게시판 리스트를 가지고 온 다음에
⑥ 객체 바인딩을 하고
⑦ JSP한테 포워딩 해서
⑧ JSP가 게시판 리스트를 만들어서 뿌려줘

  • 스프링은 안에 연결하는 연결 고리들을 이해하는 게 중요
    • 이미 만들어진거라 코드를 짤 일이 없어. 연결만 시켜주면 돼


ㅇ 메소드

  • 메소드 이름은 URL이름과 같이
  • 리턴은 보낼 JSP이름





ㅇ WEB-INF

  • src/main/webapp/WEB-INF/views 안에 jsp파일 만들기
  • WEB-INF라는 단계가 하나 더 추가 된 이유
    • 클라이언트의 모든 요청을 C가 처리할 수 있게
    • 클라이언트가 View에 접근하지 못하게 하기 위해
    • WEB-INF는 톰캣의 보안 디렉토리라서 브라우저 상에 나오지 않아 => 접근 불가능
  • 이제 스프링에서 바로 JSP 실행할 수 없어. 스프링은 MVC를 철저히 지키도록 함


ㅇ 뷰

  • 부트스트랩 템플릿 이용하자 https://www.w3schools.com/
  • 부트스트랩, 제이쿼리, 자바스크립트 http 링크는 필수 !!





ㅇ DAO, DTO, VO

  • DAO(Data Access Object)
    • 데이터베이스의 data에 접근하기 위한 객체입
    • DB접근 로직과 비지니스 로직 분리
  • DTO(Data Transfer Object)
    • 계층 간 데이터 교환을 위한 객체
    • 로직 없이 getter & setter 만 가진 클래스
  • VO(Value Object)
    • 값 오브젝트
    • read-Only (사용하는 도중에 변경 불가능. 오직 읽기만 가능)
    • DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있음
  • 클라이언트가 보낸 데이터 -> DTO(혹은 VO)에 담아서 이동, 처리 -> DAO에서 DB에 보냄

ㅇ lombok (롬복)

  • 게터세터 메소드 자동으로 만들어주는 api
  • https://projectlombok.org/
  • 스프링에서 롬복은 필수적
  • 다운받은 뒤 설치(이클립스와 롬복을 연결)도 해야 해
  • 이클립스에 api 디펜던시도 해야 해
  • 게터세터 어노테이션 : @Data
  • 생성자 어노테이션 : @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor
  • 널이 아니다 : @NonNull
  • 예) 게시판 데이터 BoardVO에 적용


profile
STEP BY STEP

0개의 댓글