본문 바로가기
Language & Framework & GIT/Spring

Spring MVC_2#HTML ,HTTP API ,CSR ,SSR

by veganwithbacon 2022. 8. 17.
반응형

백엔드 개발자가 프론트와 데이터를 주고 받을때 고려해야하는 것

 정적 리소스

고정된 HTML파일,CSS,JS,이미지,영상 등을 제공

주로 웹브라우저

 

 HTML페이지

동적으로 필요한 HTML 파일을 생성해서 전달

웹브라우저 : HTML 해석

 HTTP API

HTML이 아니라 데이터를 전달(데이터만 주고 받으며,UI화면이 필요하면,클라이언트가 별도처리)

주로 JSON형식 사용

다양한 시스템에서 호출

서로 HTML을 보여주는 전송을 제외한 모든 곳에서 사용

 

  SSR-서버 사이드 렌더링

:서버에서 최종 HTML을 생성해서 클라이언트에 전달(HTML이 서버에서 다만들어짐)

:주로 정적인 화면에 사용

:관련기술 : JSP,타임리프=>백엔드 개발자

 

  CSR-클라이언트 사이드 렌더링

: HTML 결과를 자바스크립트를 사용해 웹 브라우저에 동적으로 생성해서 적용

   (클라이언트쪽에서 개발)

:주로 동적인 화면에 사용,웹 환경을 마치 앱처럼 필요한 부분만 변경할 수 있음

:EX) 구글지도,Gmail,캘린더 앱 등등

관련기술 : React, Vue.js ->웹 프론트엔드 개발자

 

참고

-React, Vue.js를 CSR+SSR을 동시에 지원하는 웹 프레임워크도 있다

-SSR을 사용해도 자바스크립트를 사용해 일부를 동적으로 변경가능하다

 


 

 자바 웹 기술 역사

=>과거기술

 

- 서블릿 -1997

   HTML 생성이 어려움

 

- JSP -1999

   HTML 생성은 편리하나,비즈니스 로직까지 너무 많은 역할 담당

 

- 서블릿,JSP 조합 MVC 패턴 사용

    모델,뷰 컨트롤러로 역할을 나눠 개발

 

- MVC 프레임워크 춘추 전국 시대 - 2000년 초~2010년 초

    MVC 패턴 자동화,복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원

    스트럿츠,웹워크,스프링 MVC(과거버전)

 


=>현재기술

- 어노테이션 기반의 스프링 MVC 두둥등장

   @Controller

    MVC 프레임 워크의 춘추 전국 시대 마무리

 

- 스프링 부트의 등장

   스프링 부트는 서버를 내장

   과거에는 서버에 WAS를 직접 설치해서,소스는 War파일을 만들어 설치한 WAS에 배포

   스프링 부트는 빌드 결과(Jar)에 WAS서버 포함 -> 빌드 배포 단순화

 

스프링 웹 기술의 분화

- Web Servlet -Spring MVC

- Web Servlet -Spring WebFlux

 

최신 기술 - 스프링 웹 플럭스(WebFlux)

- 특징

  : 비동기 nun 블로킹 처리

  : 최소 쓰레드로 최대 성능 - 쓰레드 컨텍스트 스위칭 비용 효율화

  : 함수형 스타일로 개발 - 동시처리 코드 효율화

  : 서블릿 기술 사용x

 

=> 그러나 웹플럭스는 기술적 난이도가 매우 높다

     아직은 RDB 지원 부족

     일반 MVC의 쓰레드 모델도 충분히 빠르다

     실무에서 아직 많이 사용하지는 않는다


자바 뷰 템플릿 역사

HTML을 편리하게 생성하는 뷰 기능

JSP

    : 속도 느림,기능 부족

프리마커(Freemarker),Velocity(벨로시티) => 잘 발전을 안함

    : 속도 문제 해결,다양한 기능

타임리프(Thymeleaf)

    : 내추럴 템플릿 : HTML의 모양을 유지하면서 뷰 템플릿 적용 가능

 => 프리마커나 벨로시티는 코드가 들어가서 JSP가 다 보이지만 Thymeleaf는 속성같은 곳에 태그를 넣어 문제를 해결하기 때문에 깔끔하다.

    : 스프링 MVC와 강력한 기능 통합

    : 최선의 선택,단 성능은 프리마커,벨로시티가 더 빠름

 

결론 => 타임리프가 기능제공이 많아서 JSP로 하면 오래 걸릴 것이 타임리프에서는 잠깐이면 된다.

반응형

'Language & Framework & GIT > Spring' 카테고리의 다른 글

[Spring] SpringMVC_3 # Hello 서블릿  (0) 2022.08.19
SprignMVC_1 #웹서버/WAS/서블릿  (0) 2022.08.14
[Spring]@NotNull @NotEmpty @NotBlank 의 차이  (0) 2022.08.09
Spring ORM & DB  (0) 2022.08.06
[Spring] @RequestParam  (0) 2022.08.04

댓글