JSP - 16. 세션타이머, 부트스트랩

갓김치·2020년 12월 9일
0

JSP+Spring

목록 보기
17/43

복습

  • '페이지 모듈화를 하겠다'는 코드는 controller에 없음
    • 페이지 모듈화는 view의 영역
  • BtsServlet
    • 리팩토링 전: view 단에서 모듈화 여부에 따라 controller의 코드가 바뀌어야했음
    • 리팩토링 후: includePath와 별개로 작동하기때문에 view와 controlelr 사이 종속성이 없어지며 결합력이 낮아짐

결합력은 낮추고, 응집도는 높히고

  • 결합력 : 서로 다른 두개의 레이어가 있을 때, 하나를 고치면 다른 하나도 고쳐야 하는게 결합력
    • 결합력이 높다면, 수정된 1번 레이어와 관련있는 모든 레이어를 고쳐야함
    • 결합력이 없다면, 1번 수정 외에 다른 레이어는 그대로 둘 수 있음
    • High Cohesion Low Coupling

왜, 어떤 이유로 리팩토링 했는지를 아는게 중요!




Layered Architecture

  • N-tier이상의 구조를 가지고 있어야 어플리케이션 가능

예시

기존의 얕은 지식...

  1. 클라이언트: 회원 목록 요청
  2. 서버(서블릿): 요청 받고 분석
  3. 서버(모델레이어): 컨텐츠를 만들어냄 = db의 raw data를 info로 가공
    3-1. Dao: raw data를 db에서부터 가져와야 하는 책임
    3-2. Service: info로 가공해야하는 책임
  4. 서버(jsp): 응답 데이터를 클라이언트에게로 내보냄

조금 발전한 지식..

  1. 클라이언트: 회원 목록 요청
  2. controller: 요청 받고 분석 후, service에게 회원 목록 요청
  3. service: controller 요청을 받은 후, dao에게 db에서 데이터 가져오라고 요청
  4. dao: db에서 raw data 가져온 후 service에게 전달
  5. service: raw data를 info로 가공 후, controller(servlet)에게 전달
  6. controller: 받은 info를 scope에 넣고 jsp로 전달
  7. jsp: 뷰로 가공하여 응답 나감

설명

Layered Architecture = 계층형 아키텍쳐

  • layer가 순차적으로 동작하는 구조
    • 하나의 요청에 따라 여러개의 객체(=>layer)가 동작하고있음
  • 여기 존재하는 구조
    • MODEL2
    • MVC
    • 5 Layer
  • 어플리케이션 동작위해 적어도 3-tier이상 5-layer이상 필요

Layered Architecture & Framework

  • Layerd Architecture를 쓸 때 프레임워크를 쓴다 = 특정 레이어 하나를 대상으로 프레임워크를 쓴다 ( 타일즈 -> jsp)
  • Controller Layer (서블릿) - ex) Spring
    • 요청받고, 요청분석 요청넘기고, 나중에 jsp한테 전달하는 역할
  • View Layer = Presentation Layer (jsp) - ex) Apache Tiles
    • 타일즈: 프레젠테이션 프레임워크
  • Model Layer = Persistence Layer (dao) - ex) ibatis
    • data가 영구적으로 유지되는 db에 접근하는 레이어
    • dao 해야할일: 1)쿼리실행 2)결과집합수령 3)도메인레이어이용해 자바객체로 바꿔야함
    • ibatis: persistence framework, ORM Framework(Object - Relation Mapping)
      • oracle은 rdb, rdb가 data를 표현하는 방법 = entity, relation
      • java는 data를 object로 표현
      • db의 raw data를 가져온 다음에 자바가 인지할 수 있는 객체로 바꿔야함..
      • = 결과집합(ResultSet)안에들어있는 데이터를 꺼내서 Domain Layer(VO)에 담아야함
  • Domain Layer (VO) - ex) Lombok
    • 하나의 info에 대한 속성을 제한하는 영역
      • 한 사람의 회원이 고유하게 갖고 있는 속성들의 정보가 vo에서 결정되며 제한됨
  • Business Logic Layer(Service) - 프레임워크 존재하지 않음
    • 데이터를 가공하기 위해서는 그에 따른 비즈니스 로직이 필요함
    • business logic: 하나의 어플리케이션이 가진 고유한 기능
      • 미리 만들어놓을 수 없다
      • 프레임워크는 하나의 jar파일 (=미리 만들어진 코드의 집합)
    • 비즈니스로직을 지원하는 프레임워크는 존재하지않아요



model1도 tiles로 동작하도록!

tiles.xml

<definition name="model1/**" extends="parent">
  <put-attribute name="contents" value="/{1}"></put-attribute>
</definition>
  • **: 중간에 depth구조가 몇 단계가 와도 상관없다
    • name에 와일드카드만 단독으로 쓰는 것은 위험 (ex: name="**")
    • 그래서 가상의 depth구조로 model1쓴거

jQuery 함수

element 종속되는 함수

  • $.fn.html

element 필요없는 함수

  • $.ajax
  • 우리가 만들 함수

bootstrap

https://getbootstrap.com/docs/5.0/components/modal/

profile
갈 길이 멀다

0개의 댓글